In the MoinMoin wiki, there is this neat little hack called Admonitions that basically create a <div> block with a specific style out of a certain section of the text.

I couldn't find a way to do this easily in Ikiwiki. On the one hand, there is no easy way to create div blocks with arbitrary styles (which is basically what MoinMoin admonitions are). On the other hand, there are no neat little logos in stylesheets like there are in Moinmoin either.

It would be great to see this implemented in Ikiwiki. Now, I know I can make a <div> myself, but I am not sure we should encourage users to inject arbitrary HTML in ikiwiki pages. And even then, we should add adminition CSS classes to make that easier to use.

Ideally, Ikiwiki would support Pandoc or Github-style fenced blocks and could abuse those to allow arbitrary styles (and markup!) to kick in. The format directive could also be used, I guess, but I dislike how it requires all those brackets and quotes and bangs and all...

-- anarcat

ikiwiki's general design is that it supports exactly three forms of markup:

  • whatever the htmlize plugin does
  • as a special ikiwiki-specific extension, [[wikilinks]]
  • as another special ikiwiki-specific extension, [[!directives ]]

All markup interpretation beyond wikilinks and directives is the htmlize plugin's responsibility. The mdwn plugin interprets Markdown, the rst plugin interprets reStructuredText and so on.

It sounds as though you're asking for a htmlize plugin which interprets an extended dialect of Markdown:

  • standard Markdown (inasmuch as such a thing exists) as usual
  • mapping certain syntax (what?) to "admonitions"

ikiwiki deliberately doesn't implement Markdown parsing, it just calls out to one of several Perl implementations of Markdown.

Alternatively, you could have a small plugin that translates

[[!warning  "Do what I say, not as I do."]]

into an appropriate <div>. That's the "lightest" form of markup that is built into ikiwiki itself.

Alternatively2, some different hook (I think typography might use the right one?) could interpret an ad-hoc syntax and turn it into a <div> either before or after htmlize processing. However, that would be adding an extra layer of syntax for your users to keep track of.

templates are another way this could work:

[[!template  id=warning text="Do as I say, not as I do."]]

There's a "note" template bundled with ikiwiki already.

--smcv

I think you mean the htmlize hook, as I cannot find any htmlize plugin.. That said, yeah, i understand the limitations of Ikiwiki here. I guess that the template directive is a good workaround, but it's not really shorter to write:

[[!template  id=warning text="Do as I say, not as I do."]]

than to write:

<div class="warning">Do as I say, not as I do.</div>

... in fact, it's actually longer. So short of allowing arbitrary classes and fenced blocks, I don't think this can go much further.

We could, however, import the admonition styles from MoinMoin directly. It would involve importing 5 icons from MoinMoin and creating associated styles. Is that something you would be open to?

--anarcat

Looking more at the MoinMoin images, the source (and license!) for them is not quite clear, so they don't make such great targets for inclusion. They are, nevertheless, included in Debian so presumably they are DFSG-friendly? The copyright file marks them as "UNKNOWN" which is worrisome... I have found the following results about them:

Even though there is some confusion about the source of those images, I think, in good faith, that they can be generally be considered reusable. --anarcat

Update: I have made a admonition plugin for this purpose, as a patch. Hopefully it will be mergeable here? Here's a screenshot of what the help page would look like, to give you an idea of the results: