This is the supplemental plugin for the BlogUp TWikiApplication.
It bundles some of the features found in common blogging applications
that are very hard or even impossible to implement using TWikiML.
Note, that most of the tags are tightly related to the
data model of BlogUp, i.e. it relies on its TopicType and TWikiForm
definitions.

COUNTCOMMENTS

Count the BlogComments that refer to a given topic recursively, that is
the number of BlogComment topics that refer to a given BlogEntry and
each BlogComment referring to the BlogComment found so far. Reference
is expressed by the BlogRef formfield in the BlogCommentForm.

Syntax:

%COUNTCOMMENTS{"<topic>" ... }%

"<topic>"

name of a BlogEntry or BlogComment topic, e.g. BlogEntry0

web="..."

web where to search for references; defaults to the web specified as part of the "topic" parameter or the current one

format="..."

format string used to display the count; the variable $count is replaced by the calculated references; defaults to "$count"

single="..."

format string used to display a single hit; defaults to the "format" value (see above)

null="..."

format string used to display a zero hit; defaults to "0"

hidenull="on,off"

if set to "on" nohting is displayed if no references where found; defaults to "off"

offset="..."

add an "offset" to the computed number of hits; so if offset="9" and 11 references where found the $count is set to 20

Following variables are expanded in format strings:

$percnt: % sign

$dollar: $ sign

$n: newline

$t: tab

$nop: "empty string"

$count: the calculated number of references (plus an optional offset)

PREVDOC, NEXTDOC

Display the previous/next topic in an ordered set.
These tags can be used to establish a navigation within a set of related topics
paging to the preceding or succeeding one. A set of related topics is defined
using a "where" and an "order" clause which the given topic is supposed to be part of.

if set to on the sorting will be reversed, that is the logic of PREV and NEXT is inverted

RECENTCOMMENTS

Display an ordered list of most recent BlogComments, grouped by the
referred BlogEntry.

Syntax:

%RECENTCOMMENTS{"<format>" ...}%

"<format>"

format string used to display the hit results; each hit is displayed using the given format

header="..."

format string to prepended to the list of hits being displayed

footer="..."

format string to appended to the list of hits being displayed

separator="..."

format string used to separate hits; defaults top "$n"; the special separator "none" disables separation

limit="..."

restrict the number of hits being displayed; defaults to "-1" which means unlimited

age="..."

restrict the age of comments being displayed; values must be given in epoch seconds, e.g. 5184000 being ca. 2 months; defaults to "0" which means unlimited

category="..."

pattern that limits comments to those whose BlogEntries match the SubjectCategory; defaults to ".*"

author="..."

pattern that limits comments to those on BlogEntries from the given author defaults to ".*"

(Each BlogEntry that is found given the above search parameters and limits
is called a hit.)

Following variables are expanded in format strings:

$percnt: % sign

$dollar: $ sign

$n: newline

$t: tab

$nop: "empty string"

$count: the number of comments on the given BlogEntry

$topic: the topic name of the referring BlogEntry, e.g. BlogEntry0

$web: the web where the hit was found

$headline: the headline of the referring BlogEntry

$commenter: a list of links to the comments in the format [[BlogEntry0#BlogComment1][<author>]],... (author: name of commenter)

$date: date of the most recent comment on the current hit.

See also the interface TopicFunction "RenderRecentComments".

RELATEDENTRIES

Display a list of BlogEntries related to a given one. The Relationship
is manually encoded in the data model using the "Related" formfield. The
relation is computed transitively and reflexively ('til a configurable depth).
That is, two BlogEntries A and B are related if A points to B or vice versa
or A and B are connected by a series of related postings C1,...CN, where A is related
to C1 and B CN is related to B.

Syntax:

%RELATEDENTRIES{"<topic>" ...}%

"<topic>"

topic name of a BlogEntry related once are search for

web="..."

web where to search for related topics; defaults to the web given with the <topic> parameter or the current one

format="..."

format string to display a hit; defaults to "$topic"

header="..."

format string to prepended to the list of hits

footer="..."

format string to appended to the list of hits

separator="..."

format string used to separate hits; defaults to "$n"; the special separator "none" disables separation

depth="..."

depth of recursion (the number of hops from posting A to posting B); defaults to "2";

Note, that large "depth" values will very soon include your complete blog archive.
The hit set also depends on the amount of direct relationships that you add to your
BlogEntries. So either use a low "depth" value and add more direct relations based on
your own judgment, or just specify one related entry and use a "depth" value of up to
3 for good results.

Following variables are expanded in format strings:

$percnt: % sign

$dollar: $ sign

$n: newline

$t: tab

$topic: topic name of a hit

$web: web name where the hit was found

$depth: distance to the given <topic> (depth in which this topic was found)

$headline: headline of the related BlogEntry

The relatedness feature here is a very naïve and purely manual one.
We'd like to semi-automate this task using some automatic classificator
on document similarities. Making use of weights following links is an option too to
improve the hit set quality.

Plugin Info

added NO_PREFS_IN_TOPIC; added TWiki:Plugins/ImagePlugin support; fixed BlogArchive not to compute terms before calling the tagcloud; removed whitespaces from WebPreferences to prevent insecure eval warnings (strange); fixed use of NatSkin's IFSKINSTATE as it glues no more

making use of new feature of the IfDefinedPlugin to speed up certain things; improved way to render meta data and pagetitle; generating relative urls instead of absolute where possible now

28 Jul 2006:

hiding the breadcrumbs in the blog introduced in the recent NatSkin version; reordered sidebar section to "make more sense"; minor docu changes; added recommendation to use the BlogPlugin in combination with the TWiki:Plugins/NatSkin because some features will work with it only

added BlogFactory to ease creation of blogs; fixed BlogImages feature introduced recently; added docu to to blog's WebPreferences; moved some hard-coded values to WebPreferences so that they can be set by the BlogFactory

09 June 2006:

added last.fm support to display the 10 most recent tracks you listened to in the sidebar; simplified uploading/managing images using a new "Upload Image" button; cleaned up technorati sidebar functionality; minor fixes in the blog archive; added ENABLEPINGBACK to blog postings so that they can receive pings once that plugin is ready; added TAG parameter to TopicFunctions that extract blog entries; fixed error in RenderGoogleAdsense; displaying recent visitors within the last week (was today's visitors only) ; added a customized "page not found"; added support to render your blog's license in the sidebar, defaults to a creative common license for wiki

added views for all models: all BlogenTries, SubjectCategories etc only set a specific TopicView; this reduces redundancy, hides implementation and fixes a pagination error using URLPARAM in TopicTemplates, e.g. SubjectCategories pages couldn't be run over; separated BlogUp ring from blogroll using new NOCAT parameter of RenderBlogRoll; added TopicViews twisty to AdminTools; page through BlogLinks of the same category

30 Mar 2006:

moved the createdate field in the WebDB into the DBCachePlugin; overriding it using a Date formfield if there is one; this means you need DBCachePlugin > 1.2; added RenderGoogleAdsense; fixed inconsequent parameter naming of categories (was sometimes NAME sometimes CAT) NOTE: you will need to correct preexisting SubjectCategory topics by hand if you upgrade (sorry again); fixed html in RenderBlogComments;

better separation of multiple authors: each BlogAuthor page renders a dedicated About info now taken from the new BlogAuthorForm; the sidebar renders the items that belong to the author only using the new Author section in RenderSideBar; unpublished postings are listed per author only; added RenderAuthors to the sidebar - disabled on a single-author blog; added BlogAuthor to BlogLinks so that every author can have his own sidebar as well as share parts with other authors; added AUTHOR to a couple of TopicTunctions to make them author-aware; added HOME parameter to RenderBlogEntriesOfAuthor link to a different topic than the default Main.AuthorName one; added author argument to RECENTCOMMENTS

11 Mar 2006:

css fixes to catch up with the recent changes to the PatternSkin; replaced css based way to hide topic forms with VIEW_TEMPLATEs; added comments field to SubjectCategories; replaced CALF{IF(EXACT())} with new IFDEFINED{"" as=""}; hide postings for guests if they are not published yet; browsing postings coming from a SubjectCategory frontpage will propagate down the category so that pagination will be restricted to that category only; added mechanisms to propagate urlparams; componentized the BlogArchive: no need for CALC variables anymore; listing unpublished/unfinished postings in the sidebar for authors; packaging using the BuildContrib; CAUTION on upgrade: you need to add "Set VIEW_TEMPLATE = HiddenViewTemplate in your previous postings, links and categories (sorry)

03 Mar 2006:

added easy way to add/remove tags in the BlogEntryForm; tags are displayed using a mini-tag cloud on the blog entry pages to sort them by weight and name (btw. you can weight each tag like mytag:2)

01 Mar 2006:

grand rework of the BlogArchive; added BlogTags for BlogEntries; added dependency on TWiki:Plugins/TagCloudPlugin; added rel="tag" to links to tags and categories to make technorati happy; reworked category and archive in sidebar using the new DBSTATS tag of the recent DBCachePlugin resulting in a drastic speed improvement on the front pages; removed unused TopicFunctions

22 Feb 2006:

tighter control of alias substitution; removed % in RenderBlogEntryButton;

21 Feb 2006:

removed dependency on the NatSkin; added dependency on the IfDefinedPlugin; added PatternSkin specific styles for the blog web; lots of minor TopicFunction tweaks

14 Feb 2006:

added and diverse rss and atom feeds; added comment syndication per blog entry; added TopicTypes BlogPage and TWikiTopic; added descriptive tooltips to all links; added reverse argument to PREVDOC, NEXTDOC; added header, footer arguments to COUNTCOMMENTS; renamed RELATEDENTRIES to RELATEDTOPICS to handle BlogPages with it too; added a filter argument to RELATEDTOPICS for more flexibility; preliminary BlogUp documentation and screenshots; reworked sidebar generation by removing BlogSideBar and adding; a proper RenderSideBar TopicFunction for it; added WebButtons to navigate inside the blog application; added nice rss feed icons everywhere; added scroll helper to blog entries (need more); moved most of the descriptive text in BlogAbout into a BlogHelpText and reuse the BlogAbout for a free-form "About" page that is added to the WebButtons; speed improvements rendering the front page by simplifying the navigation renderer; added a dedicated TopicFunction to render http-equivs, i.e. to list the feeds; added w3c validation button to the TWikiWorkbench; added example WebAggregation by rendering own feeds using the HeadlinesPlugin; added dependency to TWiki:Plugins/FilterPlugin for the FORMATLIST tag; unified redundant navigation renderer; improved admin tools using twisties; postings are owned by the author by default now; fixed print view to popup the print dialogue