'admin/feature', 'title' => t('features'), 'callback' => 'feature_admin', 'access' => $access); $items[] = array('path' => 'admin/feature/add', 'title' => t('add feature'), 'callback' => 'feature_admin', 'access' => $access); return $items; } function feature_get($fid) { return db_fetch_array(db_query("SELECT * FROM {feature} WHERE fid = '%s'", $fid)); } function feature_form($edit = array()) { global $categories; $form .= form_textfield(t("Name"), "name", $edit["name"], 50, 128, t("The name or short description of the feature.")); $form .= form_select(t("Category"), "category", $edit["category"], $categories, t("The category this feature belongs to.")); $form .= form_textarea(t("Description"), "description", $edit["description"], 55, 5, t("A description of the feature.")); $form .= form_textfield(t("Details-link"), "details", $edit["details"], 50, 255, t("The URL of a page or website with detailed information about the feature.")); $form .= form_textfield(t("Image-link"), "image", $edit["image"], 50, 255, t("The URL of a page or website with a screenshot or image of the feature.")); $form .= form_submit(t("Submit")); if ($edit["fid"]) { $form .= form_hidden("fid", $edit["fid"]); $form .= form_submit(t("Delete")); } return form($form); } function feature_save($edit) { if ($edit["fid"] && $edit["name"]) { db_query("UPDATE {feature} SET name = '%s', category = '%d', description = '%s', details = '%s', image = '%s' WHERE fid = '%s'", $edit["name"], $edit["category"], $edit["description"], $edit["details"], $edit["image"], $edit["fid"]); } else if ($edit["fid"]) { db_query("DELETE FROM {feature} WHERE fid = '%s'", $edit["fid"]); } else { db_query("INSERT INTO {feature} (name, category, description, details, image) VALUES ('%s', '%s', '%s', '%s', '%s')", $edit["name"], $edit["category"], $edit["description"], $edit["details"], $edit["image"]); } } function feature_display() { global $categories; $result = db_query("SELECT * FROM {feature} ORDER BY name"); $header = array(t("name"), t("description"), t("category"), t("details"), t("image"), array("data" => t("operations"), "colspan" => 2)); while ($feature = db_fetch_object($result)) { $rows[] = array($feature->name, $feature->description, $categories[$feature->category], "details\">$feature->details", $feature->image, l(t("edit feature"), "admin/feature/edit/$feature->fid")); } return theme("table", $header, $rows); } function feature_listing() { global $categories; $result = db_query("SELECT * FROM {feature} ORDER BY category, name"); while ($feature = db_fetch_object($result)) { if ($feature->category != $category) { $output .= "
". check_output($categories[$feature->category]) ."
"; $category = $feature->category; } $links = array(); if ($feature->image) { $links[] = "image\">screenshot"; } if ($feature->details) { $links[] = "details\">detailed information"; } $output .= "
$feature->name - $feature->description
". theme("links", $links) ." 
"; } return $output; } function feature_admin() { $op = $_POST["op"]; $edit = $_POST["edit"]; if (empty($op)) { $op = arg(2); } switch ($op) { case "add": $output = feature_form(); break; case "edit": $output = feature_form(feature_get(arg(3))); break; case t("Delete"): $edit["name"] = 0; // fall through: case t("Submit"): $output = feature_save($edit); // fall through: default: $output .= feature_display(); } print theme('page', $output); } ?>