Fixed a bug that would freeze the wysiwyg editor when changing a paragraph from one type to another, or when switching off a list. This bug is due to an apparent regression in the javax.swing.text package under Java 6.0.
Fixed a few various quirks in the wysiwyg editor.
Editor now includes resizing handles for tables and images.
Fixed a bug that would prevent the day from being changed on the calendar component under Linux.
Fixed a bug which would prevent TAMB from shutting down correctly under Mac OSX. This was apparently due to using command-Q to exit the program, which wouldn't save appropriate settings resulting in all blog pages getting re-uploaded on the next publish. Major props go to Okamura for catching this.
Fixed a bug that would convert stressed/accented characters in the body of an entry to entities. Now the only characters that get explicitly converted to entities are double-quote, ampersand, less-than, greater-than and chars 160 through 190.
Updated German translation courtesy of the German Thingamablog Community.
Newly created blogs no longer automatically include the now defunct “Updated Thingablogs” ping service.
Fixed a bug that would add a "shape=rect" attribute to link tags if the tidy_html attribute is used for hypertext tags.
Fixed a bug that would strip whitespace from template tag attributes.
The "Browse" button on the image dialog now remembers the last directory.
Adds a "justify text" option to the entry editor. Note that due to a bug in Swing's JEditorPane, this might visually center the text in the entry editor. However, according to sun, it is fixed in Java 1.5.0_06.
Fixed a bug that wouldn't save the extension for category feeds.
When using the “strip_html” attribute in hypertext tags, ampersands are not converted to an entity (&)
Thingamablog now has a Japanese translation and proper Japanese date/time formats (Thanks Tatsuya!)
The password field in the login dialog now has the initial focus when made visible.
Find/Replace
Hypertext tags now have find/replace feature. To use this feature you supply a regular expression value via the following attribute.
find=”regex”
This finds all occurrences as specified by the regular expression. For the find attribute to do anything, you must also supply a replacement value.
replace=”text to replace the regex with”
For example, let's suppose that we want to change all occurrences of the word “Robert” in our entries to “Bob.” The <$EntryBody$> tag would look like...
<$EntryBody find="Robert" replace="Bob"$>
Thus, any occurrence of “Robert” in the entry body is automatically changed to “Bob” when the weblog pages are generated.
Since the find attribute takes regular expressions, much more complex find/replacements can be done. As an example, let's say we want to strip all image tags from the entries. We'd use a tag such as...
<$EntryBody find="\<img\s.*?\>" replace=""$>
In the above example the attribute replace=”” simply replaces the image tags with nothing.
One caveat to be aware of when using find and replace is when either value contains the quote character “. In this case, replace the “ with the quote entity ("). For instance, if we want to find the string 'Hello, World!' and change it to Goodbye, “cruel” World! we'd use the tag...
<$EntryBody find="Hello\, World\!" replace="Goodbye\, "cruel" World\!"$>
Fixed a bug that wouldn't correctly set the value of the archive range format combo box in the archiving options.
Fixed a bug that would replace the <$PageTitle$> tag with the weblogs title on entry pages. The <$PageTitle$> tag is now correctly replaced with the entry's title.
Fixed a bug that would double the text of an entry if the <BlogEntry> container appeared more than once on the “Entry Page” template.
Fixed a bug that would strip html when the “words” attribute is supplied to hypertext template tags. Any html in the text is now preserved when using a tag such as <$EntryBody words=”10”$>
Fixed a bug that would convert non-7 bit characters to entities when the “encode_html” attribute is supplied to hypertext template tags.
Fixed a bug that would produce an incorrectly formatted RFC822 date.
The <Calendar> container's <$MonthLabel$> tag now functions as a date tag, and can accept the usual date attributes... format, lang, country, etc...
Added Japanese archive range formats to the archive range combo boxes in the archiving options (Thanks OKAMURA!)
Added the option to publish user specified file types in ASCII mode for the FTP transport. File type extensions added to this list will be published in ASCII mode, and everything else is published in binary mode.
HyperText tags can now take an optional “tidy_html” attribute. When used, this attribute strictly formats any html in the text, fixes broken tags, closes empty tags, etc...
<$EntryBody tidy_html=”1”$>
The <Include> container can now include from URL's in addition to local files.
<Include file=”http://mysite.com/myfile.txt”>
<$IncludeText$>
</Include>
Added the option to generate feeds (rss/atom) from the categories. The category feeds are generated from the “Feed” template. In addition, the <CategoryList> container now contains a <$FeedLink$> tag, which can be used to create a link to the category feeds.
<h2>Categories</h2>
<ul>
<CategoryList>
<li><a href="<$CategoryLink$>"><$CategoryName$></a> [<a
href="<$FeedLink$>">rss</a>]</li>
</CategoryList>
</ul>
This release fixes a bug in the entry editor which would delete two characters when pressing the backspace key.
The source editor can now paste with the shift+insert keystroke.
When loading a database, TAMB now checks that the user.xml file exists before trying to open it. If the file doesn't exist (moved, renamed, deleted), no database is loaded.
Fixed a problem in FTP and SFTP publish transports which could possibly prevent publishing if the server doesn't permit changing to the root directory.
Fixed a bug that would prevent the xml-rpc pinger from sending a ping if the blog title contained Base64 character data.
The entry editor no longer changes non-Latin characters to entities when switching from wysiwyg to source view and when posting entries.
Improved the date chooser component. The calendar now displays the weekdays appropriately for the locale.
Fixed a bug in the JMySpell package that wouldn't correctly parse the charset spec from the affix files for certain dictionaries.
Hypertext template tags now have a “close_empty_tags” attribute. When this attribute is true, empty tags such as <img>, <br>, <hr>, are closed properly (e,g <br />) This is useful for maintaining xhtml compliance.
Example: <$EntryBody close_empty_tags="1"$>
Fixed French translation. Certain strings would get truncated on Mac OS X
Improved WYSIWYG editing.
Various editing bugs fixed.
The entry editor now gives the user the option to save an entry if the window is closed without publishing.
Lists can now be toggled on and off.
Insert/Delete table rows, cells, and columns options added.
Backspacing and deleting between paragraph elements now works properly.
Improved spell checking. The spell checker now works with OpenOffice dictionary files. New dictionaries can be downloaded from http://lingucomponent.openoffice.org/spell_dic.html for almost any language.
Improved image publishing. Images no long need to be published before being inserted into an entry. Rather, they're published along with the pages of the blog, during an ordinary publish.
Improved source code editing.
Fixed bug that wouldn't remember the "Limit entries" option.
Updated the blogger template converter to handle newer Blogger template tags
Updated help file.
Fixed entry editor behavior that would always reformat the source code after switching between Edit and Source view. Now the source only gets reformatted if a change is made in the WYSIWYG edit view.
Fixed bugs in the WYSIWYG editor that would not display tables or horizontal lines if they were at the top of the editor.
Fixed a "sticky link" issue. When creating new links in WYSIWYG mode, a space is added after the linked text so that any following text is not also linked.
Fixed a bug that would omit the specified hyperlink specified in the Image dialog.
Fixed extra indentation problem in the source editor.
Fixed a bug in the HTML list action. Nested lists didn't work right, so now they're ignored.
Fixed editor window resize behavior. The category list now maintains its size after the window is resized.
Fixed a bug that prevented the FTP port number from being saved.
Fixed a bug that prevented publishing after publishing an image in the editor
Fixed a bug in entry preview pane that failed to properly format entries with tables, lists, etc.
Fixed a bug that would not save a blog's locale if it didn't have a country code.
Added text edit popup menus to HTML dialogs.
After startup, Thingamablog now selects the previously selected blog in the Weblogs tree.
The RSS feed is now generated with newest entries first by default. This was changed because some users felt that this sort order worked better with Firefox's live bookmark feature. In any case, the sort order of the feed can be changed by supplying the "sort_order" attribute in the <BlogEntry> tag of the feed template. e.g <BlogEntry sort_order="ascend">
Date related template tags can now take two new attributes "lang" and "country." These attributes override the blogs default locale. In addition you can now specify the value "RFC822" for the format attribute. This is useful if you need to, for instance, supply RFC822 date formats for the RSS feed.
Several tags have been changed from text tags to hypertext tags. That is, they can now take hypertext related attributes, such as the <$EntryBody$> tag. This is useful for converting special characters to character entities. e.g. <$EntryTitle encode_html="1">. This solves the problem users had with special characters in RSS feed.
The updated RSS feed template:<?xml version="1.0" encoding="<$Charset$>"?>
<rss version="2.0">
<channel>
<title><$BlogTitle$></title>
<link><$FrontPageLink$></link>
<description><$BlogDescription encode_html="1"$></description>
<language><$Lang$>-<$Country$></language>
<copyright>Copyright <$CurrentDate format="yyyy"$></copyright>
<lastBuildDate><$CurrentDate format="RFC822"$></lastBuildDate>
<pubDate><$CurrentDate format="RFC822"$></pubDate>
<generator>http://thingamablog.sf.net</generator>
<docs>http://blogs.law.harvard.edu/tech/rss</docs>
<BlogEntry>
<item>
<title><EntryTitle><$EntryTitle encode_html="1"$></EntryTitle></title>
<description><$EntryBody encode_html="1"$></description>
<link><$EntryArchivePage$>#<$EntryID$></link>
<guid><$EntryArchivePage$>#<$EntryID$></guid>
<EntryCategories>
<category><$CategoryName$></category>
</EntryCategories>
<pubDate><$EntryDateTime format="RFC822"$></pubDate>
</item>
</BlogEntry>
</channel>
</rss>
The <Calendar> container now has a <WeekDays> container. The <WeekDays> container outputs the named days of the week (Sun, Mon, Tue, etc) in the users own locale. This solves the problem some users had with Sunday being the first day of the week. The <WeekDays> container is a list tag that can take the optional attribue "long" which, if true, prints the week days in long format (Sunday, Monday, Tuesday, etc)
Syntax:
<WeekDays><$WeekDay$></WeekDays>
Syntax (Long weekday names):
<WeekDays
long="1"><$WeekDay$></WeekDays>
Example: A fully localized calendar
<Calendar>
<table border="0" cellspacing="3" cellpadding="0">
<caption class="calendarhead"><$MonthLabel$></caption>
<tr>
<WeekDays><th align="center"><span class="calendar"><$WeekDay$></span></th></WeekDays>
</tr>
<CalendarWeek>
<tr><CalendarDay><td align="center">
<span class="calendar">
<IfDayHasNoEntries><$DayOfMonth$></IfDayHasNoEntries>
<IfDayHasEntries><a href="<$EntryArchivePage$>#<$DateOfDay format="yyyy-MM-dd"$>"><$DayOfMonth$></a></IfDayHasEntries>
<IfEmptySpace> </IfEmptySpace></span></td>
</CalendarDay></tr>
</CalendarWeek>
</table>
</Calendar>
Version 1.0b4 ties up a few odds and ends left over from the previous version.
Entry Editor
Several bugs have been fixed in the wysiwyg entry editor.
Links and images no longer jump to the previous paragraph after being inserted.
The font face, font size, and font color can be changed directly from the toolbar, rather than through the “Custom Style” dialog.
The format menu has been more logically arranged.
Template Processing
A bug has been fixed that would prevent a blog from being published if the Calendar container appeared on the Category template.
A bug has been fixed that would ignore the "Limit entries" option for category pages.
A bug has been fixed that added superfluous non-breaking spaces to entry text in the feed.
The <$EntryAuthorEmail$> tag now supports a "mung" attribute which hides the address from spam robots.
Supposing a user’s email address is user@domain.com, the tag <$EntryAuthorEmail mung="1"$> will substitute every other character with character entities and output:
user@domain.com
Since this is valid HTML, the browser will still render it. However, as spam robots parse the HTML source of the page, they will harvest the munged address.
User Interface
The entry editor now has HTML wysiwyg editing capabilities. Entries can be easily formatted in rich text in addition to HTML source. The preview tab has been removed since the wysiywg editor displays the same formatted output.
The main window now displays an "HTML options pane" when a weblog is selected in the weblogs hierarchy.
The entry/feed preview pane’s appearance has been improved via a style sheet.
The publish dialog is slightly more verbose.
A bug has been fixed that could block input to text fields with popup menus under Linux Java 5.
Feed Reader
The feed reader now tries to keep track of the date an item was posted whereas in the previous release it only worried about the date the item was retrieved. However, if an item doesn’t have a post date, then it reverts to the retrieved date.
Feeds now automatically retrieved upon creation.
Publishing
Weblog publishing is smarter. After editing or deleting an entry, only the pages that have changed or may have changed are published, rather than republishing the entire weblog.
Weblogs now have the optional ability to generate "Entry Pages." Entry Pages are single entry pages that are useful for permalinks, etc.
Entry pages are named according to the entry’s ID and are published to the weblog’s archive directory. For instance, and entry with the ID of 12 and a post date of Jan 1st 2005 would be located at http://myblog.com/archives/2005/01/entry_12.html
Template Processing
The tag <$Lang$> has been added. This tag is replaced with the language code of the blog’s locale. E.g en, es, de, etc.
The tag <$Country$> has been added. This tag is replaced with the country code of the blog’s locale. E.g US, DE, FR, etc.
The templates can now contain any number of <BlogEntry> containers. The <BlogEntry> container also has a new tag… <$EntryPermalink$> which is replaced with the URL of the entry page of the entry.
New Containers
<NextPage> and <PreviousPage>
These containers are replaced with link to the next/previous pages on the archive, category, and entry pages.
The <NextPage> container syntax is:
<NextPage>
<IfPageExists>
<$PageLink$><$PageName$>
</IfPageExists>
<IfNoPageExists></IfNoPageExists>
</NextPage>
The <PreviousPage> container syntax is:
<PreviousPage>
<IfPageExists>
<$PageLink$><$PageName$>
</IfPageExists>
<IfNoPageExists></IfNoPageExists>
</PreviousPage>
Example: Next and previous links on the archive pages
<PreviousPage>
<IfPageExists>
<a href="<$PageLink$>">« <$PageName$></a> |
</IfPageExists>
<IfNoPageExists>
No More Archives
</IfNoPageExists>
</PreviousPage>
<a href="<$FrontPageLink$>">Main</a>
<NextPage>
<IfPageExists>
| <a href="<$PageLink$>"><$PageName$> »</a>
</IfPageExists>
<IfNoPageExists>
No More Archives
</IfNoPageExists>
</NextPage>
Output:
« December 2004 | Main | February 2005 »
<ArchiveYears>
The <ArchiveYears> container generates a list of years and archive pages. The syntax is:
<ArchiveYears sort_order="descend">
<$Year$>
<ArchiveYear>
<$ArchiveLink$><$ArchiveName$>
</ArchiveYear>
</ArchiveYears>
Example: generating a yearly list of weblog archives
<ul>
<ArchiveYears sort_order="descend">
<li><$Year$></li>
<ul>
<ArchiveYear>
<li><a href="<$ArchiveLink$>"><$ArchiveName$></a></li>
</ArchiveYear>
</ul>
</ArchiveYears>
</ul>
Output:
- 2005
- 2004
<Include>
The <Include> container prints the contents of a file into the template. This syntax is:
<Include file="filepath">
<$IncludeText$>
</Include>
The tag <$IncludeText$> is replaced with the contents of the file IF the file exists and can be read. The filepath attribute might be, for instance, C:\myfolder\myfile.txt.

