Random Bytes


  So much has happened this week. Its unfortunate that I got sucked into a last minute trip to Washington - the week flew by and a ton of new things happened with Blogware that I want to start playing with. Life's like that I suppose - too many things to do, to little time to do all of them. As a side note, it was nice to get to Washington and reconnect with people on ICANN politics. I think I'll always have a soft-spot for that...:)

Our first milestone release was completed this week. We slipped by two days because of feature-creep, but it was well worth the investment. In addition to the original specification, the styles manager, in-band blogroll management and support for global and custom tags - neato. Most of this is undocumented now, but if you are using blogware, you can definitely start hacking on these things on your own while I get caught up. I love the fact that all of this additional functionality only cost us an additional two days of effort - everything was completed one day ahead of schedule on May 8.

Next release is scheduled for the 23rd of May - PV2. This release will sport a cleaned-up UI and some nifty new features that will allow you to manage media objects - audio, video, pictures - within your blog in a much more useful manner. I'm really looking forward to this release.

In the meantime, be sure to check out what Guile is up to over on his blog - he's completed another blogware template that really showcases the variety that publishers can bring to their blogs with a little bit of effort.

On a personal note, I feel rather odd dealing with all of these different blogs in all of these different environments. Right now, I am running three public blogs, one internal Tucows one and this one. It will be nice to consolidate all of these under Blogware - I really find that having these environments scattered to the wind is *killing* my blog-productivity. Very few posts are going to any of these. I suppose that code-crunch time has something to do with this dynamic as well. Its tough to deal with multiple creative efforts at the same time - right now, getting Blogware in place is taking a much higher priority than posting dreck to Random Bytes....:) C  |  T (27)  |  #
  Tom and Ross are immersing themselves in CommunityVille for the next couple of days.

The goal? Design an entry point into Blogware that entices users, showcases content and provides bloggers and wannabloggers alike with a clear view of why Blogware is the coolest damned personal content management...ummm....personal publishing...erm....thing for bloggers on the market.

The problem is, we've invested so much of our creative energy into designing cool new Blogware features that we've been coming up short on what will make for good enticing marketing community social software stuff things.

Our first inclination is to throw three cups of weblogs.com, two ounces of technorati, a dash of blogger.com and 1/2 cup of slashdot into the BradBlender.

Do you have any better ideas?

C  |  T (5)  |  #

  Whelp, let's take a crack at this...

The following is a first run at the documentation for the template tag documentation. The first of, I fear, a million and six pieces of documentation about Blogware.

Blogware styles and templates sit on top of a template management system called "Bots". Bots (short for Brad's Own Templating System) evolved from Jots (Joe's Own Templating System). Bots is loosely based on the the very helpful HTML::Template perl module, but there are differences.

  • IF/ELSIF/UNLESS/ELSUNLESS can check for the existence of a template.

  • ELSIF tag supported.

  • EQ/REGEXP tag supported in IF, ELSIF, UNLESS, and ELSUNLESS blocks.
  • 'global' array of variables which are available in all contexts is supported.
  • INCLUDE tags can take a variable name as well as a filename. See docs for usage.
  • {{ }} used for tag markers instead of < >.
  • No TMPL_ prefix needed for tags.
  • Short syntax supported for simple variables: {{variable_name}} is the same as {{var name="variable_name"}}
  • Miscellaneous other cool features in HTML::Template still need to be implemented in Bots.


Caveat: This is a very simplistic first crack that solely describes the tags and where they can be used. This document doesn't attempt to describe the templating system or styles or how to use either.

...and of course, this is all very likely wrong by the time that you read it. :) I will be doing some more work on this later today and throughout the week to make it more self-explanatory. This first crack is simply a head-start for the eager beavers that like wrestling with half-documented features :)

'article' => {
'label' => 'Article template',
'filename' => 'article.html',
'tags' => {
'trackback_rdf' => "A string of rdf text which enables blog interfaces to use auto-discovery techniques against these blog articles",
'title' => "The article title",
'author' => "The article author",
'publish_time' => "The publish time for this article",
'num_comments' => "The number of comments",
'num_trackbacks' => "The number of trackbacks",
'body' => "The article body",

'category' => {
'label' => 'Category template',
'filename' => 'category.html',
'tags' => {
'breadcrumb' => {
'description' => "A loop containing the category breadcrumb trail",
'tags' => {
'selected' => "A boolean indicating whether the user is currently viewing this category",
'name' => "The category name",
'url' => "The url to view this category",

'days' => {
'description' => "A loop containing the days of articles for display",
'tags' => {
'date' => "The date string for this day",
'articles' => {
'description' => "A loop containing the articles for this day",
'tags' => {
'title' => "The article title",
'author' => "The article author",
'excerpt' => "The article excerpt",
'body' => "The article body",
'publish_time' => "The publish time",
'view_url' => "The url to view this article",
'num_comments' => "The number of comments",
'num_trackbacks' => "The number of trackbacks",

'calendar' => {
'label' => 'Calendar template',
'filename' => 'calendar.html',
'tags' => {
'calendar.month' => "The month name",
'calendar.year' => "The year",
'calendar.weeks' => {
'description' => "A loop containing the weeks for this month",
'tags' => {
'days' => {
'description' => "A loop containing the days of this week",
'tags' => {
'can_link' => "A boolean indicating whether the day should be linked",
'selected' => "A boolean indicating whether the day is being viewed",
'url' => "The url to view this day",
'day' => "The day of the month",

'calendar.months' => {
'description' => "A loop containing several nearby months with articles",
'tags' => {
'selected' => "A boolean indicating whether the month is being viewed",
'url' => "The url to view this month",
'month_name' => "The month name",
'year' => "The year",

'calendar.years' => {
'description' => "A loop containing the years with articles",
'tags' => {
'url' => "The url to view this year",
'year' => "The year",

'comments' => {
'label' => 'Comments template',
'filename' => 'comments.html',
'tags' => {
'comments' => {
'description' => "A loop containing article comments",
'tags' => {
'thread_starts' => "A loop whose size is equal to the number of indent levels that should be created for this comment",
'thread_ends' => "A loop whose size is equal to the number of indent levels that should be closed after this comment",
'title' => "The comment title",
'author' => "The comment author (optional)",
'publish_time' => "The publish time for the comment",
'body' => "The comment's body",
'can_post' => "A boolean variable which indicates whether the current user can post a reply to this comment",
'post_reply_url' => "The url which brings up the post-comment form",

'trackbacks' => {
'label' => 'Trackbacks template',
'filename' => 'trackbacks.html',
'tags' => {
'article.url' => "The url to view the article for these trackbacks",
'article.title' => "The article title",
'article.trackback_url' => "The trackback url for this article",
'trackbacks' => {
'description' => "A loop containing the trackbacks",
'tags' => {
'title' => "The trackback title",
'blog_name' => "The blog name for this trackback",
'create_time' => "The time when the trackback was received",
'excerpt' => "The trackback excerpt",

'style' => {
'label' => 'Style sheet template',
'filename' => 'style.css',

'base' => {
'label' => 'Base template',
'filename' => 'base.html',
'tags' => {
'blog.url' => "The primary url for this blog",
'blog.name' => "The blog name",
'blog.new_article_url' => "The url used to post a new article to the current category",
'blog.edit_article_url' => "The url to edit the currently viewed article",
'user.username' => "The username of the currently logged in user",
'authenticated' => "Boolean indicating whether the user is logged in",
'blog.rss_url' => "The url to access the rss feed for this blog",
'category.rss_url' => "The url to access the rss feed for this category",
'category.collection_url' => "The url to add this category to the user's virtual blog",
'test_tmpl_mode' => "Boolean indicating whether the user is viewing the blog with staging templates",
'live_tmpl_mode_url' => "The url to view the blog with live templates",
'message' => "A string containing occasional information from the cgi",

C  |  T (45)  |  #
  Test C  |  T (38)  |  #
  This is a test article - a production definition C  |  T (20)  |  #
  [[zempt:Main Entry]] C  |  T (21)  |  #
  This editor supposedly only works with MT. C  |  T (2)  |  #
  This is a test of the XML-RPC interface using w.bloggar. In this case, blogware is masquerading as MovableType. C  |  T (27)  |  #
  C  |  T (21)  |  #
  C  |  T (41)  |  #
  Few more small UI changes. We still haven't gotten to the meat of the wishlist and won't until Brad has finished up PV1.

In the meantime, I've made a few small adjustments (very small) to the UI - including dropping a {{body}} into the category template.

BOTS documentation next... C  |  T (32)  |  #
  Okay, you've got me swinging. How do I post to the wish list that Tom is running.

I'm sure its obvious, but I refuse to RTFM. Especially when we don't have one yet ;) C  |  T (46)  |  #
Blogroll 2.0
Make a Donation to the Tour For Kids!
www.flickr.com
This is a Flickr badge showing public photos from rrader. Make your own badge here.
Twitterings

Search
Search all blogs
Get Firefox

"Random Bytes" is a produced for and by Ross Rader.

Everything else is just a happy byproduct.

The views expressed here belong to me and not my employer..

Contact Me

Feel free to use my contact information to get in touch for work related items.

email: ross@tucows.com
tel. +1.4165385492
cel. +1.4168288783
MSN. ross@tucows.com

Local Topics
Recent Visitors
jamessmithforum - Tue 15 Dec 2009 03:21 AM EST 
ahmed100 - Tue 08 Dec 2009 06:49 AM EST 
Andrew C - Fri 04 Dec 2009 09:57 PM EST 
maxvoice - Mon 30 Nov 2009 06:33 AM EST 
ahmed1212 - Thu 19 Nov 2009 09:20 PM EST 
Login
User name:
Password:
Remember me