Overview
Documentation describing Confluence markup is available here: http://confluence.atlassian.com/display/DOC/Confluence+Wiki+Markup
Macro documentation is available here: http://confluence.atlassian.com/display/CONF35/Working+with+Macros
Confluence 4 does not store page text in the plain text markup but instead uses an XHTML-based syntax as described here: https://confluence.atlassian.com/display/CONF43/Confluence+Storage+Format
As a result, although the Confluence 3 textual markup will still be handled (historical versions depend on it), all content migrated to Confluence 4 will be handled using XML parsing techniques (and some workarounds to handle ill-formed XML produced by Confluence).
Contents
The following tables map the Confluence markup to MoinMoin markup - this is split into the sub-sections defined in the Confluence documentation (Headings, Text Effects, Text Breaks, Links, Lists, Images, Tables, Advanced Formatting, Confluence Content, External Content, Misc).
Quoting
Some basic quoting appears to be required in Confluence. The following characters appear to require preceding backslash (\) characters in order to appear verbatim: exclamation mark (!), hyphen/dash (-).
Markers and Effects
Some basic text effect markers appear to need surrounding white-space to take effect. This is mostly due to the minimalist choice of markers and their tendency to appear relatively frequently in text. Thus, matching pairs of underscores to identify emphasised regions, for example, is not sufficient: underscores may appear as part of words and must not then mark the boundary of such a region.
Mapping
Headings
Confluence |
Comments |
|
h1. Biggest heading |
= Biggest Heading = |
|
h2. Bigger heading |
== Bigger heading == |
|
h3. Big Heading |
=== Big Heading === |
|
h4. Normal Heading |
==== Normal Heading ==== |
|
h5. Small Heading |
===== Small Heading ===== |
|
h6. Smallest Heading |
====== Smallest Heading ====== |
|
Text Effects
Confluence |
Comments |
|
*strong* |
'''strong''' |
{*} is used where * would otherwise be part of a word |
_emphasis_ |
''emphasis'' |
{_} is used where _ would otherwise be part of a word |
??citation?? |
|
No direct mapping, probably can use itallic like emphasis |
-strikethrough- |
--(strikethrough)-- |
{-} is used where - would otherwise be part of a word |
+underlined+ |
__underlined__ |
{+} is used where + would otherwise be part of a word |
^superscript^ |
^superscript^ |
|
~subscript~ |
,,subscript,, |
|
{{text will be monospaced}} |
`text will be monospaced` |
|
bq. Some block quoted text |
Some block quoted text |
(that's space indented) |
{quote} |
{{{ |
|
{color:red} |
<<Color2(look ma, red text!,col=red)>> |
No native way to do this, but it can be done by using a macro which needs to be installed: MacroMarket/Color2 |
Text Breaks
Confluence |
Comments |
|
(empty line) |
(empty line) |
The same |
\\ |
<<BR>> |
|
---- |
---- |
Same for basic rule, MoinMoin supports a heavier rule by adding - characters. This isn't important for the conversion. |
--- |
Use unicode EM DASH (0x2014) : "—" |
MoinMoin does not have markup for EM DASH - see FeatureRequests/LongDashes |
-- |
Use unicode EN DASH (0x2013) : "–" |
MoinMoin does not have markup for EN DASH- see FeatureRequests/LongDashes |
Links
Confluence |
Comments |
|
[#anchor] |
[[#anchor]] |
|
[^file.ext] |
[[attachment:file.ext]] |
Reference to page attachment |
[pagename#anchor] |
[[pagename#anchor]] or [[../pagename#anchor]] |
See notes |
[pagename^file.ext] |
[[attachment:pagename/file.ext]] or [[attachment:../pagename/file.ext]] |
Reference to other page attachment; see notes |
[space:pagename] |
[[space/pagename]] |
Unlike Confluence, Moin uses the page hierarchy to define "spaces" |
[space:pagename#anchor] |
[[space/pagename#anchor]] |
|
[space:pagename^file.ext] |
[[attachment:space/pagename/file.ext]] |
|
[alias|#anchor|tooltip] |
[[#anchor|alias|title=tooltip]] |
Moin always puts the target first, the alias second and options third (here the combinations have been reduced for brevity) |
[alias|pagename#anchor|tooltip] |
[[pagename#anchor|alias|title=tooltip]] |
|
[alias|space:pagename^file.ext|tooltip] |
[[attachment:space/pagename#anchor|alias|title=tooltip]] |
|
[$12345] |
not supported |
Confluence has internal identifiers referring to content; Moin uses page names as content identifiers |
[link text|$12345] |
||
[space:] |
[[space]] |
Confluence spaces might act more like Moin categories than simple pages at the root of a hierarchy |
[link text|space:] |
[[space|link text]] |
|
[~username] |
[[username]] |
Homepages in Moin are just normal pages within the hierarchy; by default such pages don't have any content, which might be a bit different to Confluence (can be solved by the config var user_homewiki giving an interwiki name and a prefix for the home page, see also this patch) |
[link text|~username] |
[[link text|username]] |
|
[resource@site] |
[[site:resource]] or site:resource |
This is like the Moin InterWiki feature |
[link text|resource@site] |
[[site:resource|link text]] |
|
http://moinmo.in/ |
http://moinmo.in/ |
URLs are automatically linked in both systems |
[http://moinmo.in/] |
[[http://moinmo.in/]] |
|
[link text|http://moinmo.in/] |
[[http://moinmo.in/|link text]] |
|
{doc:...} ... {doc} |
not supported |
Confluence-specific function |
{anchor:anchorname} |
<<Anchor(anchorname)>> |
Make an anchor in the page for convenience |
If spaces are to appear at the top level of the page hierarchy, such that the DEV space is held within a parent page of that name, then links between pages must be written accordingly. Thus, if DEV space page Web Interface links to Web UI Mockups in the same space then the link must be written as [[../Web UI Mockups]] in order to remain within the DEV hierarchy.
Blog Links
Confluence has special links for blog posts; in Moin such posts could be put under an optional parent page and linked to as shown. Alternatively, each post might appear within a common day-specific page. See also the MonthCalendar macro for blog-like support in Moin.
Confluence |
Comments |
|
[/2011/05/22/Blog Post] |
[[Blogs/2011/05/22/Blog Post]] or [[Blogs/2011/05/22#Blog Post]] |
Show a specific blog post within a particular day |
[space:/2011/05/22/Blog Post] |
[[Blogs/space/2011/05/22/Blog Post]] or [[Blogs/space/2011/05/22#Blog Post]] |
|
[/2011/05/22] |
[[Blogs/2011/05/22]] |
Show a full day's posts, where a set of separate subpages could be incorporated into a parent page using the Include macro |
[space:/2011/05/22] |
[[space/Blogs/2011/05/22]] |
|
[link text|/2011/05/22] |
[[Blogs/2011/05/22|link text]] |
|
[link text|space:/2011/05/22] |
[[space/Blogs/2011/05/22|link text]] |
Lists
Confluence |
Comments |
|
* top-level |
* top-level |
Confluence uses first column, Moin has leading space |
** second-level |
* second-level |
Confluence adds symbols for depth (like MediaWiki), Moin adds leading spaces |
# top-level |
# top-level |
Numbered/ordered lists |
## second-level |
# second-level |
Numbered/ordered lists behave like bullet lists |
*# second-level |
# second-level |
Mixing list types, Moin treats different levels independently, anyway |
- top-level |
not supported? |
Alternative bullet types (square, not round) |
Task lists in Confluence are provided by a macro of the form {dynamicTaskList:<name>} which could presumably be supported in Moin given an equivalent macro.
Images
Confluence |
Comments |
|
!http://example.com/image.png! |
{{http://example.com/image.png}} |
|
!image.png! |
{{attachment:image.png}} |
Moin uses a transclusion syntax based on the general link syntax |
!space:pagename^image.png! |
{{attachment:space/pagename/image.png}} |
|
!/2011/05/22/Blog Post^image.png! |
{{attachment:Blogs/2011/05/22/Blog Post/image.png}} |
See the blog links section for a discussion of blog pages |
!image.png|thumbnail! |
{{attachment:image.png||width=100px}} or <<Image(image.png,width=100)>> |
Moin requires explicit dimensions but preserves the aspect ratio; the second argument is always the label or alt text |
!image.png|align=right, vspace=4! |
{{attachment:image.png||align="right"}} |
Moin apparently supports align, alt, class, height, longdesc, title, width as arguments |
{giffy:...} |
{{drawing:...}} |
Gliffy is apparently a diagramming tool available within Confluence; Moin 1.8 provides TWikiDraw support; Moin 1.9 provides anywikidraw and twikidraw actions (see HelpOnDrawings), as well as supporting svg-edit |
{gallery} |
<<arnica>> or {{{#!arnica ... }}} or <<ThumbGallery>> |
Arnica is possibly the most supported image gallery offering for Moin, but ThumbGallery appears to offer a simple alternative |
{gallery:...} |
Tables
Confluence |
Comments |
|
||heading||heading|| |
|| '''heading''' || '''heading''' || |
Moin doesn't have explicit heading syntax |
|cell text|cell text| |
|| cell text || cell text || |
Moin doesn't distinguish between heading cells and ordinary cells |
Tables in Confluence appear to involve consecutive lines, just like Moin's tables. This should make conversion somewhat easier than, say, from MediaWiki syntax.
Sections and Columns
Sections with multiple columns are supported in Confluence using the following syntax:
{section} {column:width=25%} The first column. {column} ... {section}
Moin doesn't have specific support for sections and columns, but it would be possible to use blocks defined within {{{#!wiki and }}} and then make use of CSS rules to set block widths. Moin appears to permit the nesting of blocks by adding extra { and } characters to the outer block markers.
See also MacroMarket/Columns.
CSV Tables
Confluence provides a CSV macro to show tabular data with optional options given after the csv "tag":
{csv:delimiter=whitespace} heading1,heading2,heading3 value1,value2,value3 {csv}
Moin provides a CSV parser for blocks defined within {{{#CSV and }}} and there are also macros available (such as ShowCSV). The options translate between Confluence and the CSV parser as follows:
Confluence |
Comments |
|
output |
not supported |
Moin will generate the appropriate format for the page, (you can choose the mimetype fot the output, e.g. MoinMoinTalks/pyCologne-2009-09-09/csv |
script |
not supported |
This reads the data from some other location in the Wiki or filesystem (can be archived by a plugin_dirs = ['/some/where/extensions/data/plugin']) |
encoding |
not supported |
Moin uses the page encoding |
url |
not supported |
Perhaps the link option in Moin is the equivalent? |
heading |
not supported |
Moin supports only one heading row (page_header and page_footer are config vars) |
footing |
not supported |
Moin doesn't seem to support footers (page_header and page_footer are config vars) |
border |
not supported |
Perhaps CSS rules can be used with the CSV block in Moin |
width |
||
delimiter |
delimiter and quotechar |
Moin presumably requires the literal value? |
columns |
show (and hide) |
Used to reorder columns (specified using a 1-based index in Confluence, column names in Moin) |
ignoreTrailingBlankRows |
not supported |
Confluence can suppress blank rows; this may not be related to Moin's autofilter |
quote |
quotechar |
Confluence may include encapsulating quotes in the delimiter specification |
escape |
not supported |
Moin generates appropriately formatted page output (see output above) |
showWiki |
not supported |
Apparently used for troubleshooting |
disableAntiXss |
not supported |
Moin generates appropriately formatted page output (see output above) |
Many of the Confluence options would be superfluous in the common case.
The Table Plus Macro
Confluence provides a macro which enhances table presentation and provides JavaScript-dependent viewing features:
{table-plus} || heading || heading || | cell text | cell text | {table-plus}
Moin doesn't support anything like this by default, but a parser like ParserMarket/ImprovedTableParser could possibly be used to present tables in a similar fashion.
Advanced Formatting
Many of these features are actually provided by macros.
Confluence |
Comments |
|
{code:...} |
{{{#!format ... }}} |
Moin doesn't support the title or border options, but provides generic support using parsers |
{calendar:...} |
<<MonthCalendar(...)>> |
|
{chart} |
not supported |
Moin would require a macro to support charts |
{slide} |
page-level support |
Moin supports single and multiple page slideshows but not as content strictly with a page |
{rsvp} |
not supported |
This provides some kind of event registration support and would be done using a macro in Moin |
{widget} |
not supported |
This would appear to embed content, perhaps using an iframe element, requiring a macro in Moin |
{newcode} |
{{{#!format ... }}} |
See {code} above |
{content-by-user:...} |
not supported |
Reporting of user contributions could be done using a macro in Moin |
{index} |
various macros |
See navigation macros in Moin |
{include:...} |
<<Include(...)>> |
See the Include macro documentation |
{note} |
{{{#!wiki caution ... }}} |
|
{warning] |
{{{#!wiki warning ... }}} |
|
{info} |
{{{#!wiki important ... }}} |
|
{tip} |
{{{#!wiki tip ... }}} |
|
{cache} |
not supported |
Moin handles caching itself, depending on macros to declare caching properties if appropriate |
{noformat} |
{{{ ... }}} |
|
{panel} |
not supported |
See {code} above |
{sub-section:...} |
<<Anchor(...)>> |
Here, Moin only supports a convenient anchor for navigation, not editable sections; a solution is to make the section a sub-page and to include it |
{clickable:tooltip|link}...{clickable} |
[[link|...|title=tooltip]] |
See HelpOnLinking |
Numerous low-level styling and formatting macros are provided by Confluence (perhaps similar to the way MediaWiki lets a subset of HTML be used to fine-tune page appearance). Many of these are arguably superfluous.
Confluence Content
Many of these features are actually provided by macros.
Confluence |
Comments |
|
!video.swf! |
{{attachment:video.swf}} |
Embed an object in the page using an object element inside a div element; in principle, Moin supports any viewable content using transclusion (see the image syntax examples), although macros might also be useful since transclusion doesn't support all possible attributes (such as id) |
!space:pagename^video.swf! |
{{attachment:pagename/video.swf}} |
|
!video.swf|id=video,width=640,height=480! |
{{attachment:video.swf|alt text|width=640 height=480}} |
|
{viewfile:file.pdf} |
{{attachment:file.pdf}} |
Embed an attachment in the page |
{attachments:patterns=...} |
<<AttachList(...)>> |
Shows a list of attachments; Confluence supports the selection of attachments by regular expression and the retrieval of old attachments; Moin doesn't have versioned attachments |
{bookmarks} |
not supported |
Moin typically shows an individual user's bookmarks (quick links) in the theme boilerplate, but this could be inserted into the page using a macro e.g. quicklink; Moin doesn't permit other users' bookmarks to be displayed |
{excerpt} ... {excerpt} |
not supported |
Moin doesn't appear to use predefined excerpts when showing search results |
{excerpt-include:pagename} |
<<Include(pagename,,from="...",to="...")>> |
As standard, Moin can include page content, but only really using textual inclusion mechanisms |
{global-reports} |
not supported |
|
{toc:...} |
<<TableOfContents(...)>> |
Table of contents for a page, somewhat more flexible in Confluence (although the Moin macro could be extended) albeit with questionable benefits |
{toc-zone:...} ... {toc-zone} |
not supported |
Apparently a specially crafted table of contents |
{welcome-message} |
not supported |
This would be easily replicated using a page containing the message, however |
Labels or Tags
Moin only supports categories as a potential equivalent to labels or tags on content.
Confluence |
Comments |
|
{contentbylabel:labels=...} |
<<FullSearch(category:...)>> |
A predefined search for the specified labelled or tagged pages |
{dynamiccontentbylabel} |
<<FullSearch(category:...)>> |
A predefined search for similarly labelled or tagged pages to the current page; Moin categories would need to be entered manually |
{listlabels:spaceKey=...} |
<<PageList(regex:^Category)>> |
Moin could probably approximate this feature using categories as labels |
{navmap:label} |
not supported |
A search macro with configurable output could support a search for category pages presented like navigation macro output |
{popular-labels} |
not supported |
The CategoryCloud macro might be a suitable equivalent |
{recently-used-labels} |
not supported |
|
{related-labels} |
not supported |
Moin doesn't support "clustering" of categories |
Navigation and Search
Confluence |
Comments |
|
{blog-posts} |
<<Include(Blogs/.*)>> |
Shows blog posts either as titles, excerpts or in full; an enhanced search macro would arguably make it easier for Moin to duplicate this functionality (instead of using inclusion) |
{children} |
<<Navigation(children)>> |
Moin shows children and descendant pages in a navigation style, not as a list |
{create-space-button:...} |
<<NewPage(...)>> |
Moin would permit a new page to be created at the top of a hierarchy, potentially using a special template |
{livesearch:...} |
not supported |
A search form with live feedback ("search as you type") |
{pagetree} |
<<PageList(regex:"^ConfluenceConverter/DevelopmentNotes/MarkupMapping(/.*)?")>> |
A page tree appears to be like a site map or a predefined search within a page hierarchy |
{pagetreesearch} |
not directly supported |
A configurable page hierarchy search form; Moin offers a TitleSearch macro, but this does an unconstrained title search |
{recently-updated} |
<<RecentChanges>> |
An enhanced version of the standard RecentChanges macro would be able to support the Confluence options |
{recently-updated-dashboard} |
not supported |
An aggregated collection of recently updated content |
{search:query=...} |
<<FullSearch(...)>> |
Options differ between Confluence and Moin |
{spaces} |
not directly supported |
Since Moin does not explicitly nominate page hierarchies as "spaces", search macro usage would be needed to produce the desired list of hierarchy root pages |
Knowledge Base Content
Confluence supports something called a "knowledge base". Surveys/questionnaires, which contribute to the knowledge base, are not part of Moin by default but could be supported using extensions. Moin supports WikiDicts which permit the definition of key-value pairs, but this is typically most useful for shared content and common definitions.
Confluence |
Comments |
|
{kbsearch} |
not supported |
A "knowledge base" search |
{kbsurvey} |
not supported (there are form macros on the MacroMarket, needs an additional action) |
Show a "yes/no" survey |
{kbtoparticles} |
not supported (If that is the most clicked page that could be implemted by an action or macro reading Hits events e.g. PageHits) |
The "top ranked" articles in a space, |
External Content
TODO
Misc
TODO