- Added improved node scheduler:
+ Automatically post node at date 'xx/xx/xx, xx:xx'.
+ Automatically queue node at date 'xx/xx/xx, xx:xx'.
+ Automatically dump node at date 'xx/xx/xx, xx:xx'.
Requires a database update, see ./updates/2.00-to-x.xx.sql!
- Refactored the admin interface of node.module. It is only a start
but it should show the direction we are going.
+ The new interface is easier to extend with new functionality
and operations. New "edit xxx" links can easily be added on
our way.
+ The new interface tries to cover all content- or node-related
functions. Thus making a special admin interface for each new
node type redundant. To demonstrate this, I removed the admin
hook from page.module and forum.module. This removes quite a
bit of logic from the invidual modules which is a good sign if
you ask me.
A centralized GUI or interface covering all node-related
administration should make Drupal easier to administer.
TODO:
- All node-related nodes need updating. This should be trivial and
I'll hapilly tackle this later tonight.
- There will be bugs, and I'm still working on this but I would like
to get some feedback (from Natrak et all) on both user-friendliness
and usability of this new interface. I'm still working on it as we
speak ...
structure.module either needs work, or replacement by index.module:
see "admin > node > node settings".
It will do for now and it can always made better when we can think
of a better solution; it is the best I could think of. Now what?
index.module or structure.module? I'm currently pro index.module.
- Drastically simplified "variable.inc".
- Removed most dependecies on structure.module from all content related
modules. Thus making our modules more modular. ;)
- Fixed calculation glitch in queue.module.
- Fixed potential function name clash/conflict in rating.module, and
simplified some code on my way.
- Started removing all global variables $status and $rstatus. Global
variables are "yucky" so in near future, we will replace all global
$status variables by a call to node_status(). Originally, $status
was only introduced as a temporary hack and nothing is as permanent
as a temporary hack so I took it out when still possible.
- Changed the watchdog messages a bit.
- Removed headline.module: it became obsolete.
- Removed backend.class: it became obsolete.
- Added export.module.
For now, you can use:
1. http://drupal/export.php?headlines.rss
2. http://drupal/export.php?headlines.rdf
- Renamed export to export.php.
For now, you can use:
1. http://drupal/export.php?headlines.rss
2. http://drupal/export.php?headlines.rdf
Renaming this file has main 3 advantages:
1. We no longer rely on .htaccess for being able to export.
2. It is more conform with the general naming conventions.
3. It removes a pseudo-hack with formatting the URI.
- Made import.module export blocks with feeds.
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.
for the different content types. These weights are used when
calculating each user's gravity. This is a required step before
we can even think of "nodifying" the diary or headline module.
- Polished a bit more on the other modules' crons.
- Fixed a bug in node.php: UnConeD forgot to update 1 node_get_object().
- I changed the look of theme_morelink() a bit: it might not look better,
but at least the output is "correct".
- Various small improvements.
- Redid settings.module and even renamed it to conf.module.
* Settings are now grouped in basic categories like "system
settings", "module settings" and "filters".
* Added new settings to make Drupal easier to configure and
to make some aspects like the watchdog scale better.
- Renamed includes/settings.php to includes/conf.php.
- Added filter support to conf.module and introduced filter hooks so
modules can implement and export new filters. Example filters are
an HTML filter (implemented), a profanity filter, an url converter,
ASCII smileys to images filter and so on ...
- Reworked the check_* functions: user contributed content/input is
only verified and filtered once in its lifespan.
NOTES
- Altough this is a large commit, no database changes are required.
It's mainly intended as a sideblock-element as there's no real use in having them show up on the mainpage. There's no real poll-browsing system for now either.
I still need to write documentation, and I'm not yet satisfied with the node-output (non-sideblock). I should be able to improve it once the $theme->nodebox ideas get finalized.
- Rewrote the cron system. Removed cron.module and moved all cron
related options to settings.module. Cron was a confusing thing:
it has been made simpler both in terms of code and configuration.
+ You had to rehash your modules to make the cron show up in
the list. This is no longer required.
+ You couldn't tell what cron "watchdog" or cron "story" were
up to. Instead, we now display a clear description message
for every cron involved.
+ The user interface of setting.module - and the admin section
in general, looks a bit ackward but I couldn't care less and
don't want to see this improve at the time being.
- Improved setting.module:
+ Now uses variable_set().
+ Added some help and documentaition on how to setup cron.
- Improved ./export.
- Updated CHANGELOG.
TODO:
- I'm now going to look into UnConeD's question with regard to
check_output() and $theme->node(), as well as the filter and
macro stuff. I'll probably be fine-tuning setting.module a
bit more on my way.
- Simplified field_set() API.
- Made UnConeD's cool common timestamp format conform with the
general coding style. Sorry to be so picky about this but I
really can't help it. ;)
this information to the "users"-field in both nodes and comments.
This database/table change reduces the number of SQL queries and
makes Drupal scale better where a lot of voting/moderation takes
place. Last but not least it can be considered a new and better
foundation for future moderation metrics / algorithms. In other
words: it is plain better.
--> oops, all voting/moderation results will be lost!
--> requires database update, see "2.00-to-x.xx.sql"!
- Updated database/database.mysql
node-forms more secure. Updated "node.module" and "queue.module"
to work with the new API.
The upgrade script, 2.00-to-x.xx.php, is still broken and needs
fixing.
+ path_uri(): returns the fully-qualified URI of your drupal site.
+ path_img(): returns the image directory or http://image-server.com/
in case you prefer to load-balance bandwidth usage.
Replaced all occurences of the variable "site_url" with path_uri()
and removed "site_url" from "setting.module".
- Drastically simplified the node_save() API, which should make the
node-forms more secure. Updated "story.module", "book.module",
"forum.module", "page.module" and "node.module" to reflect this
change. This is needs more testing so hit it, beat it, tease it.
- Fixed an occasional glitch in the configuration file loading logic.
- Made "queue.module" display an informative notice when an anonymous
user tries accessing the moderation queue.
- Updated the hard-coded information in drupal.module a bit.
Note that - when upgrading - you have to rename all your existing
configuration files to reflect this change:
yourdomain.com.conf -> yourdomain.com.php
By default, i.e. if no configuration file is found, setting.php
will be used instead. Using the ".php"-extension will fix most
configuration/security issues with .htaccess-files ...
- Removed some dead code from forum.module.
- Added edit capabilities (allows you to view the backend-file url as well, wasn't possible before)
- Docs: replaced "http://yourname.com/export/headlines.rdf" with the correct URL (using the site_url setting).