# MojoMojo Features
{{toc 2-}}
## [Pluggable wiki syntax](http://search.cpan.org/dist/MojoMojo/lib/MojoMojo/Formatter.pm)
MojoMojo ships with a wide range of formatter plugins, from Textile and Markdown markup and Wiki syntax to File Include and Comment box formatters. Its flexible system for text formatting also gives you the flexibility to easily extend MojoMojo for your purposes by adding custom syntax for your business needs.
Check out the [[/Formatter Demo]] to see the currently available formatters.
## Tree-based node structure
Like a traditional wiki, MojoMojo uses **\\[[internal words]]** to interlink pages. However, it also has a sense of hierarchy, so you can create any number of pages under another, and refer to them just like in a traditional file system, for instance **\\[[support/contact]]**. Compared with most wikis, where the page structure is flat, MojoMojo easily avoids [disambiguation pages](http://en.wikipedia.org/wiki/Disambiguation_page):
|| _Tree hierarchy_ | _Flat structure_ ||
| /geography/europe/france/paris | Paris |
| /geography/usa/texas/paris | Paris, Texas |
| /mythology/greek/paris | Paris (mythology) |
| /botany/paris | Paris (genus) |
## Tags
MojoMojo supports a fully AJAX driven tag implementation throughout the site, both for pages and the photos in each gallery. This is a good way to find photos across different nodes, for instance. It also solves the problem of content which cannot always be categorized in strict tree-like directories of concepts. As Professor Michael Wesch points out in his video [Information R/evolution](http://www.youtube.com/watch?v=-4CV05HyAbM), "ontology is overrated". Thus, you can tag your pages and let a [folksonomy](http://en.wikipedia.org/wiki/Folksonomy) emerge from all the tags that other editors add.
## Revision control
MojoMojo tracks every change you make to a file directly in the SQL database, and provides quick and reliable tools to manipulate and check
### Diff
In order to show differences between two versions, the system uses the unified diff format, where added lines are shown in green with + in front of them, and removed as red '-' lines. MojoMojo can also represent smaller changes, for instance to a single word in a line.
### Rollback
You can easily set any previous version as current, for instance to remove spam, or to correct mistaken edits. You can also move back to the latest at some later point if required.
## Attachments
Each page in MojoMojo has its own set of attachments. These can be viewed in different ways and inserted into pages.
### Uploading
We use the flash component SWFUpload as known from WordPress to receive uploads. This means you can select multiple files in one go, and get progress bars for each file.
### Gallery
Any image that is uploaded as an attachment to a page is automatically added to a gallery for that page. You can also set titles and tags for each individual image in the gallery.
## Editing content
Since the extensible syntax is part of the mojo in MojoMojo, we've opted to provide a native text area for input. To make it easy to use, we provide a live preview that shows the rendered document as you type. There is also a syntax quick-reference which is relevant to your installed formatters, as well as a toolbar for common operations like headlines and links.
<div class=photo style="text-align: center">![MojoMojo wiki editing live preview](/advocacy.attachment/97/)
<div markdown="1" class="photo" style="text-align: center">![MojoMojo wiki editing live preview](/advocacy.attachment/97/)
### Syntax
MojoMojo currently defaults to Textile as the default text-formatting language, but you can easily switch to Markdown via a simple preference setting. Providing support for other text-formatters is a simple matter of implementing the main\_formatter api.
### Change highlighting
Whenever you save your document, your latest changes are highlighted, giving you a chance to review the changes you just made.
## Searching
MojoMojo search is implemented using KinoSearch. This provides a fast and powerful freetext index of all the content in and given MojoMojo.
## RSS Feeds
The wiki provides several different RSS feeds. You can subscribe to a feed for a specific page, or you can follow recent changes for a certain tree (including the root). You can also follow RSS feeds on a per tag basis, in order to keep up with what interests you.
## Export
MojoMojo can export content at any tree-level both as HTML or raw wiki-format. This static delivery/serving.
## Themes/skins
MojoMojo supports custom themes via CSS and ships with a few native themes. For a gallery of sites using different skins, please see [[/reference_installations]].