summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2001-06-15 07:30:44 +0000
committerDries Buytaert <dries@buytaert.net>2001-06-15 07:30:44 +0000
commit96576a6ef748f960b1f8318aa5d425627627d851 (patch)
treed82d09706ffd230df5acc00d48c7963b519707d1 /modules
parent8f241243f0cd0e50a94f61aa7e918649b35ebf8d (diff)
downloadbrdo-96576a6ef748f960b1f8318aa5d425627627d851.tar.gz
brdo-96576a6ef748f960b1f8318aa5d425627627d851.tar.bz2
- Added meta.module, an improved index.module that allows you to
associate different collections - think "combobox" here - with different content types, all hardcoded references to "section" have been removed and the admin-friendliness of the meta admin section has been slightly improved. I'll keep working on it during the weekend - if time allows me to. Moreover, I'll focus on the usability/user-friendlines of the meta admin section as well as graceful input-checking, and error-handling. Requires an SQL update, see updates/2.00-to-x.xx.sql! Index.module will be removed, or meta.module will be renamed as soon we can ditch one of them. For now, having both coexist is not going to harm your setup and is useful to make a comparison and / or to migrate from index.module to meta.module. Index.module is de-coupled form the rest of the system so you will have to use meta.module after having upgraded. You have been warned. - Updated CHANGELOG.
Diffstat (limited to 'modules')
-rw-r--r--modules/meta.module165
-rw-r--r--modules/poll.module6
-rw-r--r--modules/poll/poll.module6
-rw-r--r--modules/story.module6
-rw-r--r--modules/story/story.module6
5 files changed, 177 insertions, 12 deletions
diff --git a/modules/meta.module b/modules/meta.module
new file mode 100644
index 000000000..e8e6fc0dc
--- /dev/null
+++ b/modules/meta.module
@@ -0,0 +1,165 @@
+<?php
+
+function meta_help() {
+ ?>
+ To be written.
+ <?php
+}
+
+function meta_form($type, $edit = array()) {
+ $c = db_query("SELECT * FROM collection WHERE types LIKE '%". check_input($type) ."%'");
+ while ($collection = db_fetch_object($c)) {
+ unset($array);
+ $t = db_query("SELECT * FROM tag WHERE collections LIKE '%$collection->name%'");
+ while ($tag = db_fetch_object($t)) {
+ $array[$tag->attributes] = $tag->name;
+ }
+ $form .= form_select($collection->name, $collection->name, $edit[$collection->name], $array);
+ }
+ return $form;
+}
+
+function meta_save($type, $edit = array()) {
+ $result = db_query("SELECT * FROM collection WHERE types LIKE '%". check_input($type) ."%'");
+ while ($collection = db_fetch_object($result)) {
+ $output = field_merge($output, $edit[$collection->name]);
+ }
+ return $output;
+}
+
+function meta_get_collection($cid) {
+ return db_fetch_array(db_query("SELECT * FROM collection WHERE cid = '". check_input($cid) ."'"));
+}
+
+function meta_get_tag($tid) {
+ return db_fetch_array(db_query("SELECT * FROM tag WHERE tid = '". check_input($tid) ."'"));
+}
+
+function meta_form_collection($edit = array()) {
+ global $REQUEST_URI;
+
+ $form .= form_textfield("Collection name", "name", $edit[name], 50, 64, "Required. The name for this group or collection of meta-tags. Example: 'Software'.");
+ $form .= form_textfield("Types", "types", $edit[types], 50, 64, "Required. A comma-seperated list of node types you want to associate this collection with. Example: 'story, book'.");
+ $form .= form_submit("Submit");
+
+ if ($edit[cid]) {
+ $form .= form_submit(t("Delete"));
+ $form .= form_hidden("cid", $edit[cid]);
+ }
+
+ return form($REQUEST_URI, $form);
+}
+
+function meta_form_tag($edit = array()) {
+ global $REQUEST_URI;
+
+ $form .= form_textfield("Meta-tag name", "name", $edit[name], 50, 64, "Required. The name for this meta-tag. Example: 'Apache'.");
+ $form .= form_textfield("Attributes", "attributes", $edit[attributes], 50, 64, htmlentities("Required. Format: <type>:<value>;<type>:<value>;. Example: 'software=apache,type=webserver,os=linux,'."));
+ $form .= form_textfield("Collections", "collections", $edit[collections], 50, 64, "Required. A comma-seperated list of collections you want to associate this meta-tag with. Example: 'Software, Internet'");
+ $form .= form_submit("Submit");
+
+ if ($edit[tid]) {
+ $form .= form_submit(t("Delete"));
+ $form .= form_hidden("tid", $edit[tid]);
+ }
+
+ return form($REQUEST_URI, $form);
+}
+
+function meta_save_collection($edit) {
+ if ($edit[cid] && $edit[name]) {
+ db_query("UPDATE collection SET name = '". check_input($edit[name]) ."', types = '". check_input($edit[types]) ."' WHERE cid = '$edit[cid]'");
+ }
+ else if ($edit[cid]) {
+ db_query("DELETE FROM collection WHERE cid = '". check_input($edit[cid]) ."'");
+ }
+ else {
+ db_query("INSERT INTO collection (name, types) VALUES ('". check_input($edit[name]) ."', '". check_input($edit[types]) ."')");
+ }
+}
+
+function meta_save_tag($edit) {
+ if ($edit[tid] && $edit[name]) {
+ db_query("UPDATE tag SET name = '". check_input($edit[name]) ."', attributes = '". check_input($edit[attributes]) ."', collections = '". check_input($edit[collections]) ."' WHERE tid = '$edit[tid]'");
+ }
+ else if ($edit[tid]) {
+ db_query("DELETE FROM tag WHERE tid = '". check_input($edit[tid]) ."'");
+ }
+ else {
+ db_query("INSERT INTO tag (name, attributes, collections) VALUES ('". check_input($edit[name]) ."', '". check_input($edit[attributes]) ."', '". check_input($edit[collections]) ."')");
+ }
+}
+
+function meta_verify() {
+ foreach (module_list() as $name) {
+ if (module_hook($name, "status") && $name != "node") {
+ $output .= "<H3>". ucfirst($name) ." type</H3>";
+ $output .= meta_form($name) ."<HR>";
+ }
+ }
+ return form("", $output);
+}
+
+function meta_overview() {
+ $result = db_query("SELECT * FROM collection ORDER BY name");
+
+ $output .= "<H3>Collection overview</H3>";
+ $output .= "<TABLE BORDER=\"1\" CELLSPADDING=\"2\" CELLSPACING=\"2\">\n";
+ $output .= " <TR><TH>name</TH><TH>node types</TH><TH>operations</TH></TR>\n";
+ while ($collection = db_fetch_object($result)) {
+ $output .= " <TR><TD>". check_output($collection->name) ."</TD><TD>". check_output($collection->types) ."</TD><TD><A HREF=\"admin.php?mod=meta&type=collection&op=edit&id=$collection->cid\">edit collection</A></TD></TR>\n";
+ }
+ $output .= "</TABLE>\n";
+
+ $result = db_query("SELECT * FROM tag ORDER BY name");
+
+ $output .= "<H3>Meta-tag overview</H3>";
+ $output .= "<TABLE BORDER=\"1\" CELLSPADDING=\"2\" CELLSPACING=\"2\">\n";
+ $output .= " <TR><TH>name</TH><TH>collections</TH><TH>meta attributes</TH><TH>operations</TH></TR>\n";
+ while ($tag = db_fetch_object($result)) {
+ $output .= " <TR><TD>". check_output($tag->name) ."</TD><TD>". check_output($tag->collections) ."</TD><TD>". check_output($tag->attributes) ."</TD><TD><A HREF=\"admin.php?mod=meta&type=tag&op=edit&id=$tag->tid\">edit tag</A></TD></TR>\n";
+ }
+ $output .= "</TABLE>\n";
+
+ return $output;
+}
+
+function meta_admin() {
+ global $edit, $type, $op, $id;
+
+ print "<SMALL><A HREF=\"admin.php?mod=meta&type=collection&op=add\">add new collection</A> | <A HREF=\"admin.php?mod=meta&type=tag&op=add\">add new meta-tag</A> | <A HREF=\"admin.php?mod=meta&op=verify\">verify node forms</A> | <A HREF=\"admin.php?mod=meta\">overview</A> | <A HREF=\"admin.php?mod=meta&op=help\">help</A></SMALL><HR>\n";
+
+ switch ($op) {
+ case "add":
+ if ($type == "collection")
+ print meta_form_collection();
+ else
+ print meta_form_tag();
+ break;
+ case "edit":
+ if ($type == "collection")
+ print meta_form_collection(meta_get_collection($id));
+ else
+ print meta_form_tag(meta_get_tag($id));
+ break;
+ case "help":
+ print meta_help();
+ break;
+ case "verify":
+ print meta_verify();
+ break;
+ case "Delete":
+ $edit[name] = 0;
+ // fall through:
+ case "Submit":
+ if ($type == "collection")
+ print status(meta_save_collection($edit));
+ else
+ print status(meta_save_tag($edit));
+ // fall through:
+ default:
+ print meta_overview();
+ }
+}
+
+?> \ No newline at end of file
diff --git a/modules/poll.module b/modules/poll.module
index df4c64b57..880529c68 100644
--- a/modules/poll.module
+++ b/modules/poll.module
@@ -202,7 +202,7 @@ function poll_form($edit = array(), $nocheck = 0) {
$form .= form_select(t("Poll duration"), "runtime", $edit[runtime] ? $edit[runtime] : t("1 week"), $duration, t("After this period, the poll will automatically be closed."));
if ($admin) $form .= form_select(t("Poll status"), "active", $edit[active], $active);
- $form .= node_attributes_edit($edit);
+ $form .= node_attributes_edit("poll", $edit);
// hidden fields:
if ($edit[nid] > 0) {
@@ -232,10 +232,10 @@ function poll_save($edit) {
global $status, $user;
if (!$edit[nid]) {
- $nid = node_save($edit, array(active => 1, attributes => node_attributes_save($edit), author => $user->id, cid, comment => variable_get("poll_comment", 0), moderate => variable_get("poll_moderate", ""), promote => variable_get("poll_promote", 0), runtime, score => 0, status => variable_get("poll_status", $status[queued]), tid, timestamp => time(), title, type => "poll", votes => 0, voters => ""));
+ $nid = node_save($edit, array(active => 1, attributes => node_attributes_save("poll", $edit), author => $user->id, cid, comment => variable_get("poll_comment", 0), moderate => variable_get("poll_moderate", ""), promote => variable_get("poll_promote", 0), runtime, score => 0, status => variable_get("poll_status", $status[queued]), tid, timestamp => time(), title, type => "poll", votes => 0, voters => ""));
}
else if (user_access($user)) {
- $nid = node_save($edit, array(active, attributes => node_attributes_save($edit), cid, tid, runtime, title, type => "poll"));
+ $nid = node_save($edit, array(active, attributes => node_attributes_save("poll", $edit), cid, tid, runtime, title, type => "poll"));
db_query("DELETE FROM poll_choices WHERE nid='" . $nid . "'");
}
if ($nid) {
diff --git a/modules/poll/poll.module b/modules/poll/poll.module
index df4c64b57..880529c68 100644
--- a/modules/poll/poll.module
+++ b/modules/poll/poll.module
@@ -202,7 +202,7 @@ function poll_form($edit = array(), $nocheck = 0) {
$form .= form_select(t("Poll duration"), "runtime", $edit[runtime] ? $edit[runtime] : t("1 week"), $duration, t("After this period, the poll will automatically be closed."));
if ($admin) $form .= form_select(t("Poll status"), "active", $edit[active], $active);
- $form .= node_attributes_edit($edit);
+ $form .= node_attributes_edit("poll", $edit);
// hidden fields:
if ($edit[nid] > 0) {
@@ -232,10 +232,10 @@ function poll_save($edit) {
global $status, $user;
if (!$edit[nid]) {
- $nid = node_save($edit, array(active => 1, attributes => node_attributes_save($edit), author => $user->id, cid, comment => variable_get("poll_comment", 0), moderate => variable_get("poll_moderate", ""), promote => variable_get("poll_promote", 0), runtime, score => 0, status => variable_get("poll_status", $status[queued]), tid, timestamp => time(), title, type => "poll", votes => 0, voters => ""));
+ $nid = node_save($edit, array(active => 1, attributes => node_attributes_save("poll", $edit), author => $user->id, cid, comment => variable_get("poll_comment", 0), moderate => variable_get("poll_moderate", ""), promote => variable_get("poll_promote", 0), runtime, score => 0, status => variable_get("poll_status", $status[queued]), tid, timestamp => time(), title, type => "poll", votes => 0, voters => ""));
}
else if (user_access($user)) {
- $nid = node_save($edit, array(active, attributes => node_attributes_save($edit), cid, tid, runtime, title, type => "poll"));
+ $nid = node_save($edit, array(active, attributes => node_attributes_save("poll", $edit), cid, tid, runtime, title, type => "poll"));
db_query("DELETE FROM poll_choices WHERE nid='" . $nid . "'");
}
if ($nid) {
diff --git a/modules/story.module b/modules/story.module
index 1325c0d3f..527523985 100644
--- a/modules/story.module
+++ b/modules/story.module
@@ -45,7 +45,7 @@ function story_form($edit = array()) {
$form .= form_item(t("Your name"), format_username(($edit[userid] ? $edit[userid] : $user->userid)));
$form .= form_hidden("userid", $edit[userid]);
$form .= form_textfield(t("Subject"), "title", $edit[title], 50, 64);
- $form .= node_attributes_edit($edit);
+ $form .= node_attributes_edit("story", $edit);
$form .= form_textarea(t("Abstract"), "abstract", $edit[abstract], 70, 10, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
$form .= form_textarea(t("Body"), "body", $edit[body], 70, 20, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
@@ -73,10 +73,10 @@ function story_save($edit) {
global $status, $user;
if (!$edit[nid]) {
- node_save($edit, array(abstract, attributes => node_attributes_save($edit), author => $user->id, body, comment => variable_get("story_comment", 0), moderate => variable_get("story_moderate", ""), promote => variable_get("story_promote", 0), score => 0, status => variable_get("story_status", $status[queued]), timestamp => time(), title, type => "story", votes => 0));
+ node_save($edit, array(abstract, attributes => node_attributes_save("story", $edit), author => $user->id, body, comment => variable_get("story_comment", 0), moderate => variable_get("story_moderate", ""), promote => variable_get("story_promote", 0), score => 0, status => variable_get("story_status", $status[queued]), timestamp => time(), title, type => "story", votes => 0));
}
else if (user_access($user)) {
- node_save($edit, array(abstract, attributes => node_attributes_save($edit), body, title, type => "story"));
+ node_save($edit, array(abstract, attributes => node_attributes_save("story", $edit), body, title, type => "story"));
}
}
diff --git a/modules/story/story.module b/modules/story/story.module
index 1325c0d3f..527523985 100644
--- a/modules/story/story.module
+++ b/modules/story/story.module
@@ -45,7 +45,7 @@ function story_form($edit = array()) {
$form .= form_item(t("Your name"), format_username(($edit[userid] ? $edit[userid] : $user->userid)));
$form .= form_hidden("userid", $edit[userid]);
$form .= form_textfield(t("Subject"), "title", $edit[title], 50, 64);
- $form .= node_attributes_edit($edit);
+ $form .= node_attributes_edit("story", $edit);
$form .= form_textarea(t("Abstract"), "abstract", $edit[abstract], 70, 10, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
$form .= form_textarea(t("Body"), "body", $edit[body], 70, 20, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
@@ -73,10 +73,10 @@ function story_save($edit) {
global $status, $user;
if (!$edit[nid]) {
- node_save($edit, array(abstract, attributes => node_attributes_save($edit), author => $user->id, body, comment => variable_get("story_comment", 0), moderate => variable_get("story_moderate", ""), promote => variable_get("story_promote", 0), score => 0, status => variable_get("story_status", $status[queued]), timestamp => time(), title, type => "story", votes => 0));
+ node_save($edit, array(abstract, attributes => node_attributes_save("story", $edit), author => $user->id, body, comment => variable_get("story_comment", 0), moderate => variable_get("story_moderate", ""), promote => variable_get("story_promote", 0), score => 0, status => variable_get("story_status", $status[queued]), timestamp => time(), title, type => "story", votes => 0));
}
else if (user_access($user)) {
- node_save($edit, array(abstract, attributes => node_attributes_save($edit), body, title, type => "story"));
+ node_save($edit, array(abstract, attributes => node_attributes_save("story", $edit), body, title, type => "story"));
}
}