2001-12-05 18:46:24 +00:00
<?php
// $Id$
2002-02-25 20:26:38 +00:00
function page_help() {
2002-12-31 11:37:29 +00:00
$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 -> moderate -> post -> 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>";
2002-02-25 20:26:38 +00:00
return $output;
}
2002-12-10 20:35:20 +00:00
function page_system($field) {
2002-06-08 16:17:29 +00:00
$system["description"] = t("Enables the creation of a static pages that can be added to the navigation system.");
2002-06-01 21:57:29 +00:00
return $system[$field];
}
2002-12-10 20:35:20 +00:00
function page_perm() {
return array("maintain static pages");
}
2001-12-05 18:46:24 +00:00
function page_node($field) {
2002-12-10 20:35:20 +00:00
$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.");
2001-12-05 18:46:24 +00:00
return $info[$field];
}
function page_access($op, $node) {
if ($op == "view") {
return $node->status;
}
2002-12-10 20:35:20 +00:00
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");
}
2001-12-05 18:46:24 +00:00
}
function page_save($op, $node) {
2001-12-06 17:33:05 +00:00
2001-12-05 18:46:24 +00:00
if ($op == "approve") {
return array("status" => 1);
}
if ($op == "create") {
2002-12-10 20:35:20 +00:00
return array("teaser" => $node->body, "format", "link", "description");
2001-12-05 18:46:24 +00:00
}
if ($op == "decline") {
return array("status" => 0);
}
if ($op == "update") {
2002-12-10 20:35:20 +00:00
return array("teaser" => $node->body, "format", "link", "description");
2001-12-05 18:46:24 +00:00
}
}
function page_insert($node) {
2002-11-20 20:54:56 +00:00
db_query("INSERT INTO page (nid, format, link, description) VALUES ('$node->nid', '$node->format', '$node->link', '$node->description')");
2001-12-05 18:46:24 +00:00
}
function page_update($node) {
2002-11-20 20:54:56 +00:00
db_query("UPDATE page SET format = '$node->format', link = '$node->link', description = '$node->description' WHERE nid = '$node->nid'");
2001-12-05 18:46:24 +00:00
}
function page_delete(&$node) {
db_query("DELETE FROM page WHERE nid = '$node->nid'");
}
function page_load($node) {
2002-11-20 20:54:56 +00:00
$page = db_fetch_object(db_query("SELECT format, link, description FROM page WHERE nid = '$node->nid'"));
2001-12-06 17:33:05 +00:00
2001-12-05 18:46:24 +00:00
return $page;
}
function page_link($type) {
2002-05-29 17:17:09 +00:00
if ($type == "page" && user_access("access content")) {
2002-11-27 18:49:05 +00:00
$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");
2001-12-05 18:46:24 +00:00
while ($page = db_fetch_object($result)) {
2003-01-06 19:51:01 +00:00
$links[] = l($page->link, "node/view/$page->nid", array("title" => $page->description));
2001-12-05 18:46:24 +00:00
}
}
2002-12-10 20:35:20 +00:00
if ($type == "menu.create" && user_access("maintain static pages")) {
2003-01-06 19:51:01 +00:00
$links[] = l(t("create static page"), "node/add/page", array("title" => t("Add a new static page.")));
2002-01-31 20:23:44 +00:00
}
2001-12-05 18:46:24 +00:00
return $links ? $links : array();
}
2001-12-06 17:33:05 +00:00
function page_body($node) {
global $theme, $op;
2002-12-31 11:37:29 +00:00
if ($node->format == 0) {
// HTML type
$output = check_output($node->body);
}
else {
// PHP type
2001-12-06 17:33:05 +00:00
ob_start();
eval($node->body);
$output = ob_get_contents();
ob_end_clean();
2001-12-05 18:46:24 +00:00
}
2001-12-06 17:33:05 +00:00
return $output;
}
function page_view($node, $main = 0) {
global $theme;
2002-12-31 11:37:29 +00:00
/*
** Extract the page body. If body is dynamic (using PHP code), the body
** will be generated.
*/
$node->teaser = $node->body = page_body($node);
2002-03-19 19:33:42 +00:00
if ($main) {
2002-04-14 20:46:41 +00:00
$theme->node($node, $main);
2002-03-19 19:33:42 +00:00
}
else {
2002-04-05 18:11:42 +00:00
/*
** Add the node specific links:
*/
2002-04-14 20:46:41 +00:00
2002-04-05 18:11:42 +00:00
$output .= "<div align=\"right\">". $theme->links(link_node($node, $main)) ."</div>";
2002-04-14 20:46:41 +00:00
2002-12-31 11:37:29 +00:00
$theme->box($node->title, $node->body);
2002-04-05 18:11:42 +00:00
}
2001-12-05 18:46:24 +00:00
}
function page_form(&$node, &$help, &$error) {
2002-05-19 23:05:05 +00:00
if (function_exists("taxonomy_node_form")) {
$output .= implode("", taxonomy_node_form("page", $node));
}
2002-05-31 20:29:30 +00:00
$output .= form_textarea(t("Body"), "body", $node->body, 60, 20);
2002-11-20 20:54:56 +00:00
$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."));
2002-11-27 18:49:05 +00:00
$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."));
2002-12-31 11:37:29 +00:00
$output .= form_select(t("Type"), "format", $node->format, array(0 => "HTML", 1 => "PHP"));
2001-12-05 18:46:24 +00:00
return $output;
}
2002-12-31 11:37:29 +00:00
?>