summaryrefslogtreecommitdiff
path: root/modules/page/page.module
blob: 178c7c4e859f049d5e0480417fc83c1bcea16bb7 (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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
<?php
// $Id$

function page_help() {
  $output .= "<p>The page module is used to create a <i>static page</i>.  Unlike a story, a static page is a persistent web page on your site which usually shortcuts the typical lifecycle of user generated content (i.e. submit -&gt; moderate -&gt; post -&gt; comment).  A static page is usually linked from the main navigation bar, using whatever text the author wishes.  To create a static page without this navigation link, simply skip the form field which requests link text.</p>";
  $output .= "<p>Site pages, unlike many other forms of Drupal content, may be made of PHP code in addition to HTML and text. All Drupal objects and functions are available to a site administrator.</p>";

  return $output;
}

function page_system($field) {
  $system["description"] = t("Enables the creation of a static pages that can be added to the navigation system.");
  return $system[$field];
}

function page_perm() {
  return array("maintain static pages");
}

function page_node($field) {
  $info["name"] = t("static page");
  $info["description"] = t("If you just want to add a page with a link in the menu to your site, this would be the best choice.  Unlike a story, a static page by-passes the submission queue.");

  return $info[$field];
}

function page_access($op, $node) {
  if ($op == "view") {
    return $node->status;
  }

  if ($op == "create") {
    return user_access("maintain static pages");
  }

  if ($op == "update") {
    return user_access("maintain static pages");
  }

  if ($op == "delete") {
    return user_access("maintain static pages");
  }
}

function page_save($op, $node) {
  if ($op == "approve") {
    return array("status" => 1);
  }

  if ($op == "decline") {
    return array("status" => 0);
  }
}

function page_insert($node) {
  db_query("INSERT INTO page (nid, format, link, description) VALUES (%d, %d, '%s', '%s')", $node->nid, $node->format, $node->link, $node->description);
}

function page_update($node) {
db_query("UPDATE page SET format = %d, link = '%s', description = '%s' WHERE nid = %d", $node->format, $node->link, $node->description, $node->nid);
  }

function page_delete(&$node) {
  db_query("DELETE FROM page WHERE nid = %d", $node->nid);
}

function page_load($node) {
  $page = db_fetch_object(db_query("SELECT format, link, description FROM page WHERE nid = %d", $node->nid));

  return $page;
}

function page_link($type) {

  $links = array();

  if ($type == "page" && user_access("access content")) {
    $result = db_query("SELECT n.nid, n.title, p.link, p.description FROM page p LEFT JOIN node n ON p.nid = n.nid WHERE n.status = '1' AND p.link != '' ORDER BY p.link");
    while ($page = db_fetch_object($result)) {
      $links[] = l($page->link, "node/view/$page->nid", array("title" => $page->description));
    }
  }

  if ($type == "menu.create" && user_access("maintain static pages")) {
    $links[] = l(t("create static page"), "node/add/page", array("title" => t("Add a new static page.")));
  }

  return $links;
}

function page_body($node) {
  global $op;
  if ($node->format == 0) {
    // HTML type
    $output = check_output($node->body);
  }
  else {
    // PHP type
    ob_start();
    eval($node->body);
    $output = ob_get_contents();
    ob_end_clean();
  }

  return $output;
}

function page_view($node, $main = 0) {


  /*
  ** Extract the page body.  If body is dynamic (using PHP code), the body
  ** will be generated.
  */

  $node->teaser = $node->body = page_body($node);

  if ($main) {
    theme("node", $node, $main);
  }
  else {
    /*
    ** Add the node specific links:
    */

    theme("box", $node->title, "$node->body<div align=\"right\">". theme("links", link_node($node, $main)) ."</div>");
  }
}

function page_form(&$node, &$help, &$error) {
  if (function_exists("taxonomy_node_form")) {
    $output .= implode("", taxonomy_node_form("page", $node));
  }

  $output .= form_textarea(t("Body"), "body", $node->body, 60, 20);
  $output .= form_textfield(t("Link name"), "link", $node->link, 60, 64, t("To make the page show up in the navigation links, enter the name of the link, otherwise leave blank."));
  $output .= form_textfield(t("Link description"), "description", $node->description, 60, 64, t("The description displayed when hovering over the page's link.  Leave blank when you don't want a description."));
  $output .= form_select(t("Type"), "format", $node->format, array(0 => "HTML", 1 => "PHP"));

  return $output;
}

function page_validate(&$node) {
  if ($node->format && user_access("create php content")) {
    // Do not filter PHP code, do not auto-extract a teaser
    $node->teaser = $node->body;
  }
  else {
    $node->format = 0;
    $node->body = filter($node->body);
    $node->teaser = filter($node->body);
  }
}

?>