Commit 5158eb8a authored by Dries's avatar Dries

- Rewrote the headline module from scratch. Note that the old

  headline code is still in place 'till the new code has proven
  to be stable. See "syndication.module" for the new code.

  Changes:

   + Improved the parser and tested it against RSS 0.9, RSS 0.91,
     RSS 0.92, RSS 1.0, RDF and XML feeds.

   + Improved the administration interface.  It might be a bit fuzzy
     at first.  Maybe some native English like Julian, Michael (or any
     one else with knowledge in the field) can help out by suggesting
     better naming, terminology or descriptions - as well as by
     writing the help section for this module?  I'd have no idea how
     much this would be appreciated.

   + We can *easily* recognize new tags or extensions: we parse out
     "link", "title", "description" and "author" right now, but we
     will have to revise which tags to support and which not.  New
     tags can be added in less than 10 minutes (if you are familiar
     with the code).  Read: we have something we can build on.

   + Within each item, tags can now appear is random order which is
     or was not the case with the old headline code where we expect
     <link>s prior to <description>s for example.

   + Feed updates only (ie. always) happen through cron.  Neither do
     we use one global cron for updating all feeds; instead, every
     feed can specify his own update-interval.

   + Newly fetched headlines are "appended" to the pool of existing
     headlines (read: we don't replace the whole feed), and headlines
     automatically "expire" after x days or hours.  (Every headline
     has a timestamp.)

   + Got rid of backend.class; it is integrated in the module.

   + Switched to more generic names: "headline" became "item" and
     "backend" became "feed".  This should ease future non-headline
     oriented syndication.

   + You can associate attributes or keyword lists with every feed.
     At the moment new items will automatically inherit their feeds
     attributes but in future we can use heuristics to make these
     attributes "mutate" when and where we see fit.  The attributes
     can be maintained by hand as well.

   + We don't export any blocks yet; we will soon do as soon this
     new code has been tested for a bit more.  We will only export
     bundles though so if you want to export by feed/source, you
     will have to make a source-specific bundle.

- Polished a bit on a few other modules: nothing major.
parent 21ea8abc
......@@ -74,7 +74,7 @@ function forum_admin() {
case "edit":
print forum_form(node_get_array(array(nid => $id)));
break;
case t("Submit"):
case t("Submit"):
print status(forum_save($edit));
// fall through:
default:
......
......@@ -74,7 +74,7 @@ function forum_admin() {
case "edit":
print forum_form(node_get_array(array(nid => $id)));
break;
case t("Submit"):
case t("Submit"):
print status(forum_save($edit));
// fall through:
default:
......
<?php
// entries => attributes
function index_get_array($id) {
return db_fetch_array(db_query("SELECT * FROM entry WHERE eid = '$id'"));
return db_fetch_array(db_query("SELECT * FROM entry WHERE eid = '". check_input($id) ."'"));
}
function index_collection_form($name) {
......@@ -29,9 +32,9 @@ function index_help() {
function index_form($edit = array()) {
global $REQUEST_URI;
$form .= form_textfield(t("Entry name"), "name", $edit[name], 35, 55, t("The name of this entry. Example: 'Apache'."));
$form .= form_textfield(t("Collection"), "collection", $edit[collection], 35, 55, t("The collection or group this entry belgons to. Example: 'Software'."));
$form .= form_textfield(t("Keywords"), "keyword", $edit[keyword], 35, 55, htmlentities("Format: <type>:<value>;<type>:<value>;. Example: 'software:apache;type:webserver;os:linux;'."));
$form .= form_textfield(t("Entry name"), "name", $edit[name], 55, 64, t("The name of this entry. Example: 'Apache'."));
$form .= form_textfield(t("Collection"), "collection", $edit[collection], 55, 64, t("The collection or group this entry belgons to. Example: 'Software'."));
$form .= form_textfield(t("Keywords"), "keyword", $edit[keyword], 55, 64, htmlentities("Format: <type>:<value>;<type>:<value>;. Example: 'software:apache;type:webserver;os:linux;'."));
$form .= form_submit(t("Submit"));
if ($edit[eid]) {
......@@ -73,7 +76,7 @@ function index_test_1() {
while ($entry = db_fetch_object($result)) {
$form .= index_collection_form($entry->collection);
}
$form .= "Select around and click the buttom below:<BR>";
$form .= "Select around and click the button below:<BR>";
$form .= form_submit("Click to test");
return form($REQUEST_URI, $form);
......
......@@ -71,7 +71,7 @@ function page_admin() {
case "listing":
print node_listing(page_query());
break;
case t("Submit"):
case t("Submit"):
print status(page_save($edit));
// fall through:
default:
......
......@@ -71,7 +71,7 @@ function page_admin() {
case "listing":
print node_listing(page_query());
break;
case t("Submit"):
case t("Submit"):
print status(page_save($edit));
// fall through:
default:
......
......@@ -45,7 +45,6 @@ function story_form($edit = array()) {
$form .= form_textarea(t("Abstract"), "abstract", $edit[abstract], 50, 10, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
$form .= form_textarea(t("Body"), "body", $edit[body], 50, 15, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
// hidden fields:
if ($edit[nid] > 0) {
$form .= form_hidden("nid", $edit[nid]);
}
......
......@@ -45,7 +45,6 @@ function story_form($edit = array()) {
$form .= form_textarea(t("Abstract"), "abstract", $edit[abstract], 50, 10, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
$form .= form_textarea(t("Body"), "body", $edit[body], 50, 15, t("Allowed HTML tags") .": ". htmlspecialchars(variable_get("allowed_html", "")));
// hidden fields:
if ($edit[nid] > 0) {
$form .= form_hidden("nid", $edit[nid]);
}
......
This diff is collapsed.
......@@ -152,5 +152,39 @@ CREATE TABLE entry (
name varchar(32) DEFAULT '' NOT NULL,
keyword varchar(255) DEFAULT '' NOT NULL,
collection varchar(32) DEFAULT '' NOT NULL,
UNIQUE name (name, collection),
PRIMARY KEY (eid)
);
CREATE TABLE bundle (
bid int(11) DEFAULT '0' NOT NULL auto_increment,
title varchar(255) DEFAULT '' NOT NULL,
attribute varchar(255) DEFAULT '' NOT NULL,
UNIQUE (title),
PRIMARY KEY (bid)
);
CREATE TABLE feed (
fid int(11) DEFAULT '0' NOT NULL auto_increment,
title varchar(255) DEFAULT '' NOT NULL,
link varchar(255) DEFAULT '' NOT NULL,
refresh int(11),
uncache int(11),
timestamp int(11),
attribute varchar(255) DEFAULT '' NOT NULL,
UNIQUE (title),
UNIQUE (link),
PRIMARY KEY (fid)
);
CREATE TABLE item (
iid int(11) DEFAULT '0' NOT NULL auto_increment,
fid int(11) DEFAULT '0' NOT NULL,
title varchar(255) DEFAULT '' NOT NULL,
link varchar(255) DEFAULT '' NOT NULL,
author varchar(255) DEFAULT '' NOT NULL,
description TEXT DEFAULT '' NOT NULL,
timestamp int(11),
attribute varchar(255) DEFAULT '' NOT NULL,
PRIMARY KEY (iid)
);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment