CHANGELOG, last updated 2004-04-26
This document contains the changelog for
"monaural jerk", an open-source weblog/journal/
diary/news/commentary system built on PHP4/Zend/MySQL.
---------------------------------------------------
Changes in v. 0.5a5 (not released yet)
Fixes
- hit-count updater no longer rewrites item's mod-time
in items table
Changes in v. 0.5a4 (2004-04-21)
Features
- MonauralJerk can now generate TrackBack pings, to
notify Movable Type (and compatible) blogs of
related entries within a Monaural Jerk blog.
- New standalone aggregator-PING form
- added preliminary support for new aggregator, rootblog.com
- external HTTP_REFERERs are now recorded for every
item or channel page. A future release will allow
these to be rendered on article pages (e.g. "sites
linking here:")
- external search-engine query terms are recorded
as well. A future release will allow these to be rendered
on article pages (e.g. "terms used to find this page")
- hits to channels and items are counted in the database
- Interception of search-engine REFERER data now
expanded to accomodate a9.com's URLs, enabling
automatic term highlighting and supplemental
search for a9.com clickthroughs.
Fixes
- in admin system, 'current item' link in menu now
works after 1st (rather than 2nd) submit.
- channel names handled more intelligently:
HTML characters (like '&') converted to entities
- channel URL name updating is smarter: illegal
characters are stripped; duplicate names
generate a warning.
- blank META tags are no longer output; if no
META tag contents are available, the entire
tag is skipped.
- Interrupting the chain of aggregator pings
won't cause item numbers to skip.
Other Changes
- Default template includes "alternate" ,
pointing to RDF script. Enables RSS autodiscovery.
- channels table is optimized after every change,
ensuring best performance.
- new configuration setting, 'published_domain',
allows slightly more flexibility in pinging
architecture as the system no longer relies on
$_SERVER['HTTP_HOST'].
- obsolete table 'referers' dropped
Changes in v. 0.5a3
Features
- added preference to easily flag draft-status content
on public website
- distribution now includes an RSS 2.0 syndication script
- in item content, bare '&' now encoded to '&'
automatically
- admin function: list items not in any channel
- ping-upon-publish now uses 4-stage chained GET request,
to avoid timeouts due to slow responses from aggregators.
- callback system added to facilitate the insertion of
channel-specific content into templates. (Intended
use: Google AdSense ads.)
Fixes
- "ping upon publish" checkbox no longer disabled
- rdf10 script works now
- highlighting of external seach terms has been restored.
- "posting rate" template now provided
- the section of config.inc that deals with $_SERVER values
is wrapped in a test, to avoid PHP warnings when the
file is used by command-line scripts
Other changes
- includes SmartyPants-PHP 1.41php-r2
- UPGRADING doc updated
- restored javascript to put cursor into 1st field
of login form
- added phpinfo() script to admin menu, plus links
to public site and RDF script
- renamed script files from .html to .php, on the
assumption that most sites don't parse .html files
- renamed some config-file elements (iscript, jscript,
mscript, pscript...). This will make upgrading somewhat
more painful but has the advantage of making the code
much less obscure.
- changed VERSION and APPNAME define()s to avoid
namespace collisions
- in find_item script, show '*' in place of blank title
(to make editing of untitled items easier)
- restored lastmod function (now query_for_lastmod());
needed by RDF script
- documentation for 'posting rates' provided
Changes in v. 0.5a2
- rewritten admin interface -- much-improved navigation,
new stylesheet, better presentation
- several changes to the core schemas, to store data
more sensibly
- simpler data-retrieval queries (fewer joins)
- media review items now appear on the homepage, and/or
in any non-genre channels. This reverses a design
decision made back in the v0.1 days.
- Any content item can be changed from 'journal item'
to 'media review' or back easily; the media template
is used for rendering whenever appropriate.
- the non-optimal "quote educator" from 0.5a1 has been
replaced with a PHP port of the industrial-strength
SmartyPants code from daringfireball.net.
Changes in v. 0.5a1
- major rewrite! new features:
- ping weblogs.com, blogrolling.com upon item publication
- RSS 1.0 (RDF 1.0) feed
- no more tedious channels.inc regenation; channels table
is now queried live for every page request. Although slower,
for most sites the performance hit is trivial, and this
makes installation much easier -- no more permissions
errors to confound new users.
- template-based formatting: no more markup in the source code
- assumes / requires CSS
- search term highlighting for both internal and external searches
- nested channels
- context-specific page titles
- generates XML-clean whitespace markup. This is not perfect.
- automatic smartquotes.
- new channels editor (admin tool)
- uses long tags throughout
- does not require register_globals (!)
Changes in v. 0.4.3
- bugfix: media items now inserted to channelitems table
Special thanks to Daniel Lashua
for the patches. Both editor.html and nueditor.inc were modified.
- improvements to editor.html/nueditor.inc: instructions
now appear in a popup window, saving screen space
- made handling of $defaultgenre and $defaultchannel
prefs more robust (in editor.html); script now fails
gracefully if those prefs are not defined.
- bugfix: 'default' channel shouldn't appear in channels
pulldown within admin form (fix to nueditor.inc)
- bugfix: genres with 1 item triggered a bug in return_content()
in journal.inc
Changes in v. 0.4.2
- bugfix: rss091 now uses $dyn_channels
- mailit script includes dynamic channels hash
- formatting media items as journal now works (journal.inc modified)
Changes in v. 0.4.1
- mailing list subscription address in FAQ has
been corrected.
Changes in v. 0.4
- new tables: channels, channelitems, to store channel
definitions (previously defined in $channels and
$genres hashes) and one-to-many item-to-channel,
item-to-genre associations (previously limited to
one-to-one associations, stored in items.channel
and media.genre fields). v0.4 ships with a utility
script that creates and populates these tables; see
the upgrade section of the README document.
- to save runtime queries, channels data is written to
a globally-available array ($dyn_channels). Many
functions in journal.inc rewritten to use $dyn_channels
instead of $channels, $genres, $attributes.
- schema changes to items table to simplify primary key
(removed channel field from primary key)
- schema changes to media table to simplify primary key
(removed type, genre fields from primary key)
- bugfix: addition of WHERE term to single-item database
queries to improve performance. I'd inadvertently left
out the WHERE site='${sitename}' term, preventing MySQL
from using the primary key to retrieve based on items.id
and media.id.
- many changes to editor.html and nuedit.inc to
support new tables
- navigation improvements to editor.html
- editor.html allows channels table to be edited
(add/edit channels, genres, attributes)
- bugfix: run item link names through stripslashes()
- login form now sets focus on top form field, via javascript
- show_channel_itemcounts and show_media_itemcounts
are now per-channel (and per-genre) preferences.
- dump_channels() rewritten to use $dyn_channels;
should now be faster if you had itemcounts enabled,
but might be slower if you didn't.
- get_items() modified; processing of
$queryspec changed somewhat to accomodate new
channelitems table. Additional changes to allow
editors (but no one else) to see unavailable and
future-dated items.
- notes on spider control included in README
- added new include to journal.html file:
include $prefs['channelsfile'];
- new mailing list for Monaural Jerk users: see FAQ
Changes in v. 0.3
- DTD address of RSS091 changed from netscape.com
to scripting.com; for info, search for 'DTD' here:
http://scriptingnews.userland.com/backissues/2001/04/27
- added instructions to editing form (also visible on
demo site, http://monauraljerk.org/demo/ )
- modified schema for editors table, to assign an ID
to each site editor.
- modified items, media, and sessions tables, to store
editorIDs.
- modified login/session management system to store
editorIDs. Session-checking function now joins with
editors table; login.html was modified to accomodate
the new sessions schema.
- Bugfix: admin script no longer allows content to be
added to non-content channels (e.g. menu items that
simply point to other sites).
- fixed minor bug in calendar() function that would
highlight future days when future (not-yet-published)
content was present.
- Relocated distro to monauraljerk.org; changed URLs
in documentation to use new site.
- Bugfix: hardcoded paths in editor.html and login.html
replaced with variable values from config file
(Thanks to John Puster, http://guar.org)
- Media items now show publication date in search results
- Random-email-address generator now bundled with dist.
- Bugfix: printit script no longer complains about missing
synopsis field for media items
- Item retrieval and formatting architecture radically
rewritten to be more modular
- journal.html script updated to use this new, more-
modular function set
- New genre-attribute item (['show_as_journal'])
controls how media lists are displayed -- either as
journal items (one title per item) or as a list of
artists/authors with titles under each name, linking
to individual pages for the reviews.
- New preference item, $prefs['show_media_scores'],
controls whether a score value is output for media
items. This only has effect if show_media_as_journal
is set to 0.
- journal.inc now uses global J_DEBUG flag, to assist
in problem-solving. (Set the flag to 1 to have most
queries and other helpful values output to the browser.)
Changes in v. 0.2
- added function to journal.inc: lastmod_date()
- added new type of field to blobs table: type=6,
to store synposis of item, for use in RSS files as
well as META tags
- mods to nueditor.inc to support new synopsis field:
update_item_table(), get_item_data(), show_item_form()
- initialized new synopsis field ('') in nueditor.html
- mods to journal.inc functions to support new synopsis
field: get_items()
- added rss091.php script (standalone)
- modified searchresults() function to search new
field (type=6) in blobs table
- printit script rewrites relative URLs as full
- dump_content() function now returns an array; the
first argument is the synopsis of the first item on
the current page
- journal script now uses a dynamic META description
value -- if the page contains only 1 item it uses the
synopsis of that item, rather than default copy
- minor bugfix in channel_list() function; now no longer
shows ADD link for non-journal channels (that is, "channels"
that have an override URL set)
- in jconfig.inc, $attributes hash expanded in two ways:
an 'rss091' element was added, to hold the name of
an RSS091-compatible XML file (optional); also a new
item was added to the hash to store attributes of the
home page (which has no channel subscript, so I
created a "magic" value of '__')
- dump_content() function no longer uses SPACER tags
- added month-to-month navigation to calendar() function,
controllable by preference settings; also added
nav_prev and nav_next elements to $calendarprefs hash
- bugfix: lastmod functions and calendar functions now
query against items.site (so as not to return data from
items in other people's journals, for any installation
where the database is shared across sites)
- bugfix: DEBUG flag not obeyed in admin script
NOTE: as written, the new nueditor.inc functions will
not read old item data. The fix is to insert blank
records into blobs for each item field, e.g.
insert into blobs values (N,6,'');
where N is each of the IDs in the items table. The easiest
way to do this is to run the included script,
add_synopsis_fields.php
which you'll find in the utilities directory of this
distribution. Be sure to edit the two include lines
at the top of the script to reflect the locations to
your config and function files.
---------------------------------------------------
The most recent version of this document can probably
be found at http://monauraljerk.org/CHANGELOG