Printable Version of this PageHome PageRecent ChangesSearchSign In

AniAniWeb Help Guide

About AniAniWeb

An AniAniWeb (Ani for short) is a collaborative home page; while this home page clearly belongs to someone, there are areas that visitors can edit and contribute to. Aniani means "mirror" in Hawaiian Creole. If a regular static home page can be compared to a self portrait, an Ani is more akin to a reflection in a mirror. It is dynamic and there are often interesting things happening in the background which are independent of the individual looking in the mirror.

Consider yourself a guest in someone's virtual home. If you behave yourself badly, the owner might not be so keen to allow guests in the future.

AniAniWeb is implemented in Squeak, a Smalltalk with a liberal license. It was inspired by Ward Cunningham's WikiWikiWeb. AniAniWeb was created as a research project by Jochen "Je77" Rick of Mark Guzdial's Collaborative Software Laboratory at Georgia Institute of Technology.

Editing Rules

AniAniWeb has its own simple editing rules. To link to a page, surround the page's title by '*'s (i.e. '*My Page*'); if the page does not already exist, a create button appears next to the new title; click on it to create the new page. The extensive list below documents all the editing features; these features are meant to enhance your use, but you do not need them to get started.

  • Carriage returns are preserved.
  • A line starting with '!'s becomes a header line. The more '!'s, the more important the header is. For example, '!!subject' will show up as '<h2>subject</h2>' in HTML. Up to three '!'s can be used.
  • A line starting with '_' (an underscore) becomes a horizontal line. This is often used to separate topics.
  • Using lines starting with '#'s and '-'s, creates a list.
    • A block of lines, where each line starts with '-' is transformed into a bulleted list, where each line is an entry.
    • A block of lines, where each line starts with '#' is transformed into an ordered list, where each line is an entry.
    • Lists can be nested. Thus, a line starting with '#-' is an element of a bulleted list that is part of an ordered list.
  • To create a table, start off the lines with '|' and separate the elements with '|'s. Each new line represents a new row of the table.
  • To create a preformatted section, begin each line with '='. A preformatted section uses equally spaced text so that spacing is preserved.
  • To add an append (add to the page) area, begin a line with +. This will turn into a text area in the view mode, so users can add to the page without editing. This can be used to stop people from deleting a page's content; simply add the + line and lock the page; now, users are able to add, but not delete. Here are several options you can use with append areas (just add the character of each feature you want after the initial +):
    ^  Append area stays at the top and appends go down.
    _(underscore) Appends are separated by horizontal lines. This can be useful for being able to tell the difference between different appends.
    +Append areas are self replicating, so that an append also creates another append area. In this way, it is easy to respond to a specific append.
    @Appends are marked with a timestamp. This can make it easier to identify the dynamics of certain discussions.
    -(dash) Append areas do not show up on the page. Rather, there is just a button (add to the page here) that takes you to a separate page to add the comment. This is particularly useful in combination with self replicating appends (+ above), so that the amount of append areas does not dominate the page's content.
  • To create a link, put it between '*'s.
    • If the page exists in the AniAniWeb (e.g. '*Existing Page's Name*'), a link to that page shows up on save.
    • In case the page does not already exist, the link shows up with a 'create' button next to it; click on it to create the new page.
    • If the link is external (e.g. '*http://minnow.cc.gatech.edu/swiki*'), a link to that external page shows up.
    • If the link is an image (URL ends in 'gif', 'jpeg', 'jpg', or 'png'), the image is inlined.
    • If the link is an email address (e.g. '*self@mail.me.com*'), a link to mail that person shows up.
    • You can add anchors to places in the text by adding a line starting with '@', such as '@My Section'. You can then create a link to that section using '*' and a '@'. So, '*My Valid Page@My Section*' will link to 'My Section' on the 'My Valid Page' page. If the section is inside the page you are linking from, you can omit the page name (e.g. '*@My Section*').
    • You can also alias all these links using '>'. So, you can create a link like this: '*My Alias>A Valid Page Name*'. The link will show up as 'My Alias', but link to 'My Valid Page Name'. For images, the alias text will become the alternate text for the image.
  • Use any HTML you want. Here are some useful HTML tags:
    • To make something bold, surround it by '<b>' and '</b>'.
    • To make something italics, surround it by '<i>' and '</i>'.
    • To make something underlined, surround it by '<u>' and '</u>'.
  • You may want to import HTML from another program. To do this, simply put the HTML between '<html>' and '</html>' and the formatting rules will not apply.
  • You may want to share source code (C, Java, Smalltalk, etc.) on a AniAniWeb. To do this, simply put the source code between '<code>' and '</code>' and the formatting rules will not apply.
  • You can also use plug-in tags, of the form <?tag ...?>, to include special features, such as calendars and graphs, in your page. To find out more about that, visit the plug-ins section.
  • There are three characters (&, <, >) that have special meaning in HTML. Also, AniAniWeb adds two characters (*, @) to that list. In order to have these characters show up in plain text, you will have to alias them. This is the mapping for these characters:
    &  maps to  &amp;
    <  maps to  &lt;
    >  maps to  &gt;
    *  maps to  &star;
    @  maps to  &at;
    These mapping can be used in page names too.

Plug-ins

Plug-in tags allow you to include special features in your AniAniWeb page. The tags and attributes are processed like HTML tags (attributes and tag names are case insensitive). The file and image tags allows you to reference uploaded files. The changes tag inlines the recent changes to the site. The calendar tag embeds a calendar with dates linking to pages. The blog tag embeds the calendar entries into a page. The graph and vote tags create graphs tabulating the votes of visitors. The rss tag embeds information from another site published through really simple syndication. The since and until tags embed a measurement of time. The siteMap tag embeds a site map, based on the page hierarchy. The text tag allows you to change the text displayed based on the access control of the user.

<?file?>This tag allows you to embed a reference to an uploaded file in your page.
 Required Attribute
src specifies the name of the uploaded file to reference.
 Optional Attributes
alt specifies the text of the reference. By default, this is the file name.
page (a positive integer) specifies the page to look for this upload. By default, this is the page of the reference. If the plug-in cannot find the file on the page level, it looks for it on the site level.
 Example
<?file src="myUploadFileName" alt="Alternative Text" page=7?>
This will produce a link to the file myUploadFileName on page 7. The link will show up in the page as "Alternative Text."
<?image?>This tag is similar to the <?file?> tag above, except that it is used specifically for image (GIF, JPEG, or PNG) files. When referenced with the image tag, the uploaded image is in-lined in the page.
 Required Attribute
src specifies the name of the image file to in-line.
 Optional Attributes
alt specifies the ALT text of the image, used by blind people. This is also the text that appears when you hover over the image with your mouse.
page (a positive integer) specifies the page to look for this image. By default, this is the page of the reference. If the plug-in cannot find the image on the page level, it looks for it on the site level.
linkToPage (a positive integer) specifies the page that the image links to.
width (a positive integer) indicates the maximum width of this image reference.
height (a positive integer) indicates the maximum height of this image reference.
space (a positive integer) indicates the amount of space around the image reference. By default, it is 0.
border (a positive integer) indicates the border width of the image reference. By default, it is 0.
align (bottom | middle | top | left | right) indicates where the image should appear on the screen.
 Example
<?image src="myUploadImageName" width=120 linkToPage=7?>
This will in-line the uploaded image into the page. If the image is wider than 120 pixels, the in-lined image will be scaled down to 120 pixels, preserving its aspect ratio. When you click on the image, it will take you to page 7.
<?changes?>This tag allows you to embed a table of recently changed pages in a page.
 Optional Attributes
max indicates the maximum number of pages that should be listed. The default value is 30 pages.
min indicates the minimum number of pages that should be listed. The default value is 5 pages.
days indicates the number of days that should be listed, given the maximum and minimum restrictions. The default value is 8 days.
noUser is a flag that indicates that the user who last edited that page should not be shown in the table.
noTime is a flag that indicates that the time the page was last edited should not be shown in the table.
noDate is a flag that indicates that the date the page was last edited should not be shown in the table.
 Example
<?changes min=2 noUser noTime?>
This will create a table of recent changes that lists the page title and the date it was last edited (the user and time will not be displayed). At minimum, 2 entries will be listed.
<?calendar?>This tag allows you to embed a calendar in your page. From there, pages can be created for any day; the calendar will mark which days have pages.
 Optional Attributes
month (a positive integer from 1 to 12) indicates the month the calendar shows. On default, the month used is the current month.
year (a positive integer, such as 2003) indicates the year the calendar shows. On default, the year used is the current year.
prefix can be any piece of text (for example, "Schedule: "). When page entries are created from the calendar, the prefix will come before the date in the page's title (for example, "Schedule: 8 June 2003").
postfix can be any piece of text (for example, " - schedule"). When page entries are created from the calendar, the postfix will come after the date in the page's title (for example, "8 June 2003 - schedule").
 Example
<?calendar month=6 year=2003 prefix="Schedule: "?>
This will produce a calendar for June, 2003. All page entries will begin with the "Schedule: " prefix (and no postfix).
<?blog?>This tag allows you to do web-logging (or blogging). You can use the <?calendar?> plug-in (above) to create page entries for specific dates. This tag will then embed the matching entries into a page.
 Optional Attributes
max (a positive integer) indicates the maximum number of pages that should be embedded. The default value is 7 pages.
min (a positive integer) indicates the minimum number of pages that should be embedded. The default value is 2 pages.
days (a positive integer) indicates the maximim number of days to go back from today to look for pages to embed, given the maximum and minimum restrictions. The default value is 14 days.
prefix can be any piece of text (for example, "Schedule: "). This should match with the prefix of the <?calendar?> plug-in.
postfix can be any piece of text (for example, " - schedule"). This should match with the postfix of the <?calendar?> plug-in.
 Example
<?blog prefix="Schedule: "?>
This will produce a blog embedding dated pages, whose title matches the "Schedule: " prefix and no postfix. This blog corresponds to the <?calendar?> plug-in example (above).
<?graph?>This tag embeds a bar graph, showing the number of votes cast for particular choices. To specify which choices are listed, see the <?vote?> plug-in below (note: no graph will be shown unless there are corresponding <?vote?> tags somewhere on the site).
 Required Attribute
name is a piece of text that specifies the name of the graph.
 Example
<?graph name="The Muffin Joke"?>
This will create a bar graph, displaying the number of votes cast for particular choices for the "The Muffin Joke" graph.
<?vote?>This tag allows you to embed a button that allows visitors to that page to place a vote for a certain graph; this vote will be reflected in the corresponding graph (see <?graph?> above).
 Required Attributes
A vote tag can either have a value attribute or both a to and a from attribute. In either case, the vote tag needs a graph attribute.
graph is a piece of text that specifies the graph to which the vote is registered.
value is a piece of text that specifies the value of the vote. If this is specified (instead of to and from), the tag will be transformed into a simple button that will transmit a vote for this value.
to and from specifies a numerical range for the vote. If this is specified (instead of value), the tag will be transformed into a drop-down box and a submit button, which the visitor can use to submit a numerical vote.
 Optional Attributes
label is a piece of text that is used to change the label of the button.
page indicates the page number that the voter should be directed to after submitting their vote.
 Examples
<?vote graph="The Muffin Joke" value="Funny" label="The Joke was Funny"?>
This will create a button, labeled "The Joke was Funny." When the button is pressed, a vote for "Funny" will be added to the "The Muffin Joke" graph.
<?vote graph="The Muffin Joke" from=5 to=1 label="stars" page=4?>
This will create a drop down list from 5 (at the top) to 1 (at the bottom) and a submit button, labeled "stars." When the submit button is pressed, a vote will be added to the "The Muffin Joke" graph. After submitting the vote, the voter will be transferred to page 4 (/myAni/4).
<?rss?>This tag allows you to embed an RSS (Really Simple Syndication) feed in your page.
 Required Attribute
src is the URL of the RSS feed.
 Optional Attributes
max indicates the maximum number of entries that should be listed. By default, all entries in the feed will be listed.
expire (a positive integer) indicates in how many hours a cached version of the RSS feed will expire. By default, it will expire in 12 hours.
 Example
<?rss src="http://rss.slashdot.org/Slashdot/slashdot" expires=1 max=5?>
This will embed a table with 5 entries from the Slashdot RSS feed. The cached version will be replaced every hour.
<?since?>This tag embeds the time since a certain date.
 Required Attribute
date can be specified in one of three formats: 5 April 1982 or April 5, 1982 or 4/5/82.
 Optional Attribute
format indicates what format the period of time should be listed in: yd will produce "m years and n days"; dy will produce "m days and n years"; d will produce "m days"; y will produce "m years"; and adj will produce the year as an adjective "mth". The default value is yd.
 Example
<?since date="1 January 1980" format="y"?>
This will produce how many years have gone by since the begin of the 80s.
<?until?>This tag embeds the time until a certain date.
 Required Attribute
date can be specified in one of three formats: 5 April 1982 or April 5, 1982 or 4/5/82.
 Optional Attribute
format indicates what format the period of time should be listed in: yd will produce "m years and n days"; dy will produce "m days and n years"; d will produce "m days"; and y will produce "m years". The default value is yd.
 Example
<?since date="1 January 2100" format="d"?>
This will produce how many days until the next century begins.
<?siteMap?>This tag allows you to embed a hierarchical listing of the pages on this site.
 Optional Attribute
depth indicates the numerical depth (minimum of 1) that should be shown.
<?text?>This tag allows you to change a small bit of text, so that user who can edit a page see one value (private), while users who can only view the page will see another (public). This can be used for things like obscuring your e-mail addresses, so bots will not cache it.
 Required Attributes
private is the text that people who can edit the page will see.
public is the text that others will see.