drupal/modules/page/page.module

171 lines
5.2 KiB
Plaintext

<?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. Administrators are the exclusive authors of static pages (i.e. requires the <i>administer nodes</i> in ". la("permission", array("mod" => "user", "op" => "permission")) .").</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 the Site Page author.</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 == "create") {
return array("teaser" => $node->body, "format", "link", "description");
}
if ($op == "decline") {
return array("status" => 0);
}
if ($op == "update") {
return array("teaser" => $node->body, "format", "link", "description");
}
}
function page_insert($node) {
db_query("INSERT INTO page (nid, format, link, description) VALUES ('$node->nid', '$node->format', '$node->link', '$node->description')");
}
function page_update($node) {
db_query("UPDATE page SET format = '$node->format', link = '$node->link', description = '$node->description' WHERE nid = '$node->nid'");
}
function page_delete(&$node) {
db_query("DELETE FROM page WHERE nid = '$node->nid'");
}
function page_load($node) {
$page = db_fetch_object(db_query("SELECT format, link, description FROM page WHERE nid = '$node->nid'"));
return $page;
}
function page_link($type) {
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, array("id" => $page->nid), "node", "", array("title" => $page->description));
}
}
if ($type == "menu.create" && user_access("maintain static pages")) {
$links[] = lm(t("create static page"), array("mod" => "node", "op" => "add", "type" => "page"), "", array("title" => t("Add a new static page.")));
}
return $links ? $links : array();
}
function page_body($node) {
global $theme, $op;
if ($node->format) {
/*
** Make sure only authorized users can preview static (PHP)
** pages.
*/
if ($op == t("Preview")) {
if (user_access("administer nodes")) {
$node->body = stripslashes($node->body); // see also page_form()
}
else {
return;
}
}
ob_start();
eval($node->body);
$output = ob_get_contents();
ob_end_clean();
}
else {
$output = check_output($node->body, 1);
}
return $output;
}
function page_view($node, $main = 0) {
global $theme;
if ($main) {
$theme->node($node, $main);
}
else {
/*
** Extract the page body. If body is dynamic (using PHP code), the body
** will be generated.
*/
$output .= page_body($node);
/*
** Add the node specific links:
*/
$output .= "<div align=\"right\">". $theme->links(link_node($node, $main)) ."</div>";
$theme->box($node->title, $output);
}
}
function page_form(&$node, &$help, &$error) {
global $op;
if ($node->format) {
if ($op != t("Preview")) {
$node->body = addslashes($node->body);
}
}
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 / text", 1 => "PHP"));
return $output;
}
?>