Swiki Help Guide

Welcome to this Swiki! A Swiki is a collaborative website; anyone can edit and create pages. While that may seem dangerous, it's also amazingly powerful. We all know quite a bit about writing and talking together; we tend not to mess up one another's space, we tend not to talk trash, and we tend to try to contribute.

Swiki is implemented in Squeak, a Smalltalk with a liberal license. It was inspired by Ward Cunningham's WikiWikiWeb (Squeak + Wiki = Swiki). Swiki was created by Mark Guzdial's Collaborative Software Laboratory at Georgia Institute of Technology.

If you are familiar with regular web browsing, it should be fairly easy to navigate through the Swiki. The only major difference are the special features:

View this Page: Pressing this button takes you back to simply viewing the page. References (the pages that link to this page) are shown there.

Edit this Page: This enables the user to edit the current page. Pressing on this button brings up a form where the text and title of the page can be changed. The changes made take effect when the save button is pressed. Also, the user can enter a password that will lock the page from others editing the page. Be careful to remember that password; otherwise, only the administrator (or at least their password) will unlock that page. Plus, entering your e-mail address in the appropriate space will send you a message whenever the page is edited. Please, check below (Editing Rules) to learn more about what kind of text is allowed.

Edit this Page (locked): There is a lock on this page. In order to edit it, you will need either the page's assigned password or the administrator's password. With the administrator password, you can edit and save a locked page and retain the assigned password.

Uploads to this Page: With this feature, you can upload documents to the server. Attachments can be made to the page or the Swiki; page attachments can only be references from that page. To reference your attachment, insert *+myUploadedFileName+* into the page text, or chose the add a reference option when uploading and a reference will automatically be appended to the end of the page. Image (files ending in gif, jpg, jpeg, or png) references are inlined.

History of this Page: This shows the different versions of the page through time. Since pages are editable, it sometimes is useful to look at what was previously on the page or to correct a mistake.

Home: Pressing this button takes you to the front page of this Swiki (the first page).

Recent Changes: This feature lists the pages by the last time they were edited in reverse order. This is very useful for finding what's new on the site.

Search: Using this feature, you can search for all pages that might contain certain word(s) or phrases.

Help Guide: Pressing this button takes you back to this page.

...

Guessing the URL: Occasionally, it will happen that you know the name of the page you want to go to (even approximately), but you don't know the number and you don't want to try to find your way there through searches or browsing. For these times, you might want to guess using the URL. Simply type the words you remember from the page name in concatenated form after the swiki address; you can separate words by capitalizing the first letter of each word (a la Smalltalk). The Swiki will return the first match it finds to those words. For example, mySwiki/iWantCandy might bring up a page named 'The candy I want for Halloween'. Of course, you aren't guaranteed to make a match, or you might get the wrong match; in that case, it's back to the drawing board.

...

Rendering: the administrator has the ability to render the swiki into a normal web site. This is sometimes helpful when reliability and portability are important. This feature is not accessible to the normal viewer, but it can be found here. Note: rendering takes a while and uses up the resources, so it may be good to render when traffic is low.

Swiki 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 _ (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 Swiki (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 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 'A Valid Page Name' page. 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 text bold, surround it by <b> and </b>.

To make text italicized, surround it by <i> and </i>.

To make text 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 swiki formatting rules will not apply.

You may want to share source code (HTML, C, Java, Smalltalk, etc.) on a Swiki. To do this, simply put the source code between <code> and </code> and the swiki 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 Swiki page. To find out more about that, visit the plug-ins section.

There are three characters (&, <, >) that have special meaning in HTML. Also, Swiki 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:

Plug-in tags allow you to include special features in your Swiki 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 inline tag embeds the content of another page. The since and until tags embed a measurement of time.

<?file?>

This tag allows you to embed a reference to an uploaded file in your page.

Required Attributesrc specifies the name of the uploaded file to reference.

Optional Attributesalt 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 Attributesrc specifies the name of the image file to in-line.

Optional Attributesalt 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 Attributesmax 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.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 noTime?>
This will create a table of recent changes that lists the page title and the date it was last edited (the 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 Attributesmonth (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 Attributesmax (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 Attributename 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 Attributeslabel 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 (/mySwiki/4).

<?rss?>

This tag allows you to embed an RSS (Really Simple Syndication) feed in your page.

Required Attributesrc is the URL of the RSS feed.

Optional Attributesmax 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.

<?inline?>

This tag allows you to embed the content of another page in your page.

Required Attributepage is the id number of the page to be embedded.

Example<?inline page=5?>
This will embed the contents of page 5 into the page.

<?since?>

This tag embeds the time since a certain date.

Required Attributedate can be specified in one of three formats: 5 April 1982 or April 5, 1982 or 4/5/82.

Optional Attributeformat 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 Attributedate can be specified in one of three formats: 5 April 1982 or April 5, 1982 or 4/5/82.

Optional Attributeformat 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.

Go to the page which you want to link it from. Edit that page. In the text put *My New Page Name*. When you save the page, a create link shows up next to My New Page. Click on that and the new page is created. In this way, you haven't just created a page, you've also created a link to it so others can find it.

The simple answer is you can't. But, you can upload a file with the same name and that file will be referenced in its place. If it is really necessary to delete the uploaded file, contact your system administrator.

An edit conflict is what happens when the server thinks someone else has saved the page before you. Thus, if you continued your save, you would delete their contributions. You are given both your version and the last saved one and asked to integrate the two. A real edit conflict happens rarely; however, some browsers (mainly MSIE) have problems with cacheing when you hit the browser's back button. If this is the case, just press the save button when you get the conflict. The best way to avoid this is not to hit the back button to re-edit a page.

Every version of the page is saved. Go to the damaged page. Click on the history button. Find the last version of the page that was okay. Now, open up another window for editing the page and move the old content to there. Save.

There could be several reasons for this. First, you need to save your image as either a GIF, JPEG, or PNG; other image formats (BMPs, PDFs, picts, etc.) are not handled by most browsers. Secondly, the file has to have the correct extension ('.gif', '.jpeg', '.jpg', or '.png') or the server will not recognize it as an image; it is not possible to simply change the file format by adding a different extension.