* Bus Nr. 02 - **Wiki Developers Tour** - next stop: [MeatballWiki TourBusStop](http://www.usemod.com/cgi-bin/mb.pl?TourBusStop)
* Bus Nr. 42 - **Software Developers Tour** - next stop: [Ward's Wiki TourBusStop](http://c2.com/cgi/wiki?TourBusStop)
-[[meatballwiki TourBusMap]]
+[[!meatballwiki TourBusMap]]
Famous sights to visit here at **ikiwiki**
==========================================
Also see the [Debian bugs](http://bugs.debian.org/ikiwiki).
-[[inline pages="bugs/* and !bugs/done and !bugs/discussion and
+[[!inline pages="bugs/* and !bugs/done and !bugs/discussion and
!link(patch) and !link(bugs/done) and !bugs/*/*"
feedpages="created_after(bugs/no_commit_mails_for_new_pages)"
actions=yes rootpage="bugs" postformtext="Add a new bug titled:" show=0]]
> is already valid utf-8, when in fact it's not yet been decoded. So I
> removed that line to fix it. --[[Joey]]
-[[tag done]]
+[[!tag done]]
The "ikwiki.cgi?page=index&do=edit" function has a problem
-when running with [[debpkg thttpd]] or [[debpkg mini-httpd]]:
+when running with [[!debpkg thttpd]] or [[!debpkg mini-httpd]]:
for some reason the headers ikiwiki outputs are transmitted
as the page content. Surprisingly, the "do=prefs" function
works as expected.
<html>
(...)
-Ikiwiki runs fine with [[debpkg boa]].
+Ikiwiki runs fine with [[!debpkg boa]].
--[[JeremieKoenig]]
>>> where ikiwiki might output to stderr, and that's the right thing to do.
>>> So I don't see any way to address this in ikiwiki. --[[Joey]]
->>>> (reported as [[debbug 437927]] and [[debbug 437932]]) --[[JeremieKoenig]]
+>>>> (reported as [[!debbug 437927]] and [[!debbug 437932]]) --[[JeremieKoenig]]
Marking [[done]] since it's not really an ikiwiki bug. --[[Joey]]
>> -- intrigeri
-[[tag patch]]
+[[!tag patch]]
> apparently all versions of perl, apparently leaking taint flags at random.
> See [[Insecure_dependency_in_mkdir]] --[[Joey]]
-[[tag done]]
+[[!tag done]]
In `wiki-wc/factors/tag.mdwn`, I have a map for these tags:
- \[[map pages="factors/tag/*"]]
+ \[[!map pages="factors/tag/*"]]
and this works, except that for *whatever* reason, it actually sorts the three
`affects/*` tags under `active`:
Here for future reference is the most recent version of support for
that I've been sent. It's not yet working; there are path issues. --[[Joey]]
-> I think this was fixed in version 2.40. --[[Joey]] [[tag done]]
+> I think this was fixed in version 2.40. --[[Joey]] [[!tag done]]
<pre>
diff --git a/IkiWiki/Rcs/monotone.pm b/IkiWiki/Rcs/monotone.pm
</TMPL_IF>
> Well, that don't look like as good an idea today.. I've documented the
-> recent template change. --[[Joey]] [[tag done]]
+> recent template change. --[[Joey]] [[!tag done]]
enabled, then `$safe_url_regexp` determines the URL unsafe because of the
colon and hence removes the `src` attribute.
-Digging into this, I find that [[rfc 3986]] pretty much discourages colons in
+Digging into this, I find that [[!rfc 3986]] pretty much discourages colons in
filenames:
> A path segment that contains a colon character (e.g., "this:that") cannot be
> Thanks for the patch, but I already fixed this in 2.4 using a different
> approach. I think your patch is slightly broken, an anchor tag isn't
> really meant to enclose all the html it anchors to, but just be stuck in
-> front of it. --[[Joey]] [[tag done]]
+> front of it. --[[Joey]] [[!tag done]]
--- IkiWiki/Plugin/toc.pm.orig Thu Jun 7 11:53:53 2007
+++ IkiWiki/Plugin/toc.pm Thu Jun 7 13:00:00 2007
> This bug is [[done]], all issues are fixed. --[[Joey]]
-[[tag patch]]
+[[!tag patch]]
Versions 2.0 and 2.1 of ikiwiki, and I think earlier versions as well,
-allowed wiki links to have spaces in the link text. For example, [[ikiwiki
+allowed wiki links to have spaces in the link text. For example, [[!ikiwiki
logo page|logo]] should create an anchor tag referencing the logo page, and
-[[ikiwiki logo|logo/ikiwiki.png]] should create an image tag referencing
+[[!ikiwiki logo|logo/ikiwiki.png]] should create an image tag referencing
the logo.
As of version 2.2, this no longer works. I think the pattern \\[[...|...]]
-[[tag patch]]
+[[!tag patch]]
When a page containing tags and using the [[syntax_(3rd_party)_plugin|plugins/contrib/syntax]] (though pages using other preprocessors may also be affected) is rendered as an inline page, some extra `<p>` elements are added.
# header2
- \[[map pages="sandbox"]]
+ \[[!map pages="sandbox"]]
Removing the `\[[!toc]]` directive or moving it at the end of the page
> html parser, that will get confused if markdown is present between two
> separate html blocks, and not format the markdown.
>
-> This is fixed in [[cpan Text::MarkDown]] 1.0.19. markdown 1.0.2 also
+> This is fixed in [[!cpan Text::MarkDown]] 1.0.19. markdown 1.0.2 also
> fixes the problem. Install either one. I'm going to make ikiwiki's
> dependencies list Text::Markdown before markdown, since people keep
> stumbling over this. (The downside is that the old broken markdown is
> > `<br/>` is also valid, so this is a bug still. --[[madduck]]
->>> It _is_ the htmlscrubber that removes that. It's due to [[debbug 365971]],
->>> basically the [[cspan HTML::Scrubber]] doesn't understand xhtml tags
+>>> It _is_ the htmlscrubber that removes that. It's due to [[!debbug 365971]],
+>>> basically the [[!cspan HTML::Scrubber]] doesn't understand xhtml tags
>>> of this sort at all, I hacked it to support `<br />` by tellig it to treak
>>> the "/" as an attribute, but if there's no space, it doesn't see it as
>>> an attribute. Hmm, I could also add `br` as a tag name, that would catch both cases.
> This is a bug in XML::Parser. Unfortunately, perl does not have a feed
> parser that handles invalid feeds, and in particular, XML::Parser has
> issues with feeds that claim to be encoded in utf-8 and contain invalid
-> utf sequences, as well as other encoding issues. See also [[debbug 380426]].
+> utf sequences, as well as other encoding issues. See also [[!debbug 380426]].
> Note though that this invalid feed does not really crash the aggregate plugin,
> it just notes that XML::Parser crashed on it and continues. This is the
> best I can do in ikiwiki. I have filed a bug on XML::Parser about this,
-> it's [[debbug 420636]]. I've also put in a workaround, so [[done]].
+> it's [[!debbug 420636]]. I've also put in a workaround, so [[done]].
**Wonderful**, thanks Joey! -- Adam.
[[done]] --[[Joey]]
-[[tag patch]]
+[[!tag patch]]
-`\[[debbug 123456]]` expands to "bug #123456", which is hyperlinked. Could you please drop the leading "bug", for two reasons?
+`\[[!debbug 123456]]` expands to "bug #123456", which is hyperlinked. Could you please drop the leading "bug", for two reasons?
First, #123456 is not a bug, it's a bug report. And second, #123456 suffices, doesn't it? By hardcoding the "bug" in there, you make it impossible to start a sentence with a bug number, e.g.:
recently fixed [[bugs]]
-[[inline pages="link(bugs/done) and !bugs and !*/Discussion" sort=mtime show=10]]
+[[!inline pages="link(bugs/done) and !bugs and !*/Discussion" sort=mtime show=10]]
> This is a bug in markdown, not in ikiwiki. Markdown often has issues with
> one sort of list followed by a second sort. I've filed a bug report on
-> markdown about this ([[debbug 432152]])
+> markdown about this ([[!debbug 432152]])
> (BTW, this bug was filed by editing the bugs page directly. Please don't
> do that, use the form to generate a new per-bug page..)
>>> security since ikiwiki can be run setuid.) If you need to use
>>> a nonstandard path, you'll need to edit that. --[[Joey]]
-[[tag done]]
+[[!tag done]]
> to be no way to override it reading /etc/tidy.conf, so options there can
> still screw things up. I guess I'll pass --markup yes and deal with
> overriding other problem settings from config files if they're found
-> later. --[[Joey]] [[tag done]]
+> later. --[[Joey]] [[!tag done]]
The img plugin causes a taint failure if one tries to link a scaled image, e.g.
- \[[img foo.png size=64x64]]
+ \[[!img foo.png size=64x64]]
.ikiwiki.setup: Insecure dependency in mkdir while running with -T switch at /usr/lib/perl5/vendor_perl/5.8.8/IkiWiki.pm line 360.
BEGIN failed--compilation aborted at (eval 5) line 109.
**Update**: this is the same bug as [[the_colon-in-links_bug|No_link_for_blog_items_when_filename_contains_a_colon]]
-[[tag done]]
+[[!tag done]]
> said broken software will then display its old out of date cached
> version.
>
-> So, not changing this. [[tag done]]
+> So, not changing this. [[!tag done]]
>
> --[[Joey]]
Hi, I try to make an example to reproduce some bug with inline and toc plugins.
My friend uses
- \[[inline pages="users/joey" raw="yes"]]
+ \[[!inline pages="users/joey" raw="yes"]]
to include common snippets in various pages, and it works as advertised, but if toc plugin is used, page is messed up.
> [here](http://bugs.debian.org/421843).
>
> I'm going to close this bug report since it's a markdown bug. --[[Joey]]
-[[tag done]]
+[[!tag done]]
>> thanks, that fixes it.
* bl bla
* aadsd
-[[toc levels=2]]
+[[!toc levels=2]]
bla bla
-[[table data="""
+[[!table data="""
Customer|Amount
Fulanito|134,34
Menganito|234,56
Here's a paragraph.
-[[inline pages="users/joey" raw="yes"]]
+[[!inline pages="users/joey" raw="yes"]]
bla bla
> filesystem. It just avoids you having to get the case right when
> referring to existing files, by wikilinks or pagespecs --[[Joey]]
-[[tag done]]
+[[!tag done]]
-[[meta title="mailto: links not properly generated in rss/atom feeds"]]
+[[!meta title="mailto: links not properly generated in rss/atom feeds"]]
A link like \[this](mailto:foo@bar.org) will not be converted correctly to a mailto link in the rss/atom feeds, but an absolute link instead. See e.g. the logitech post on http://madduck.net/blog/feeds/planet-lca2008/index.rss
-> fixed --[[Joey]] [[tag done]]
+> fixed --[[Joey]] [[!tag done]]
-[[meta title="map does not link entries which are equal to basename(current_page)"]]
+[[!meta title="map does not link entries which are equal to basename(current_page)"]]
On <http://phd.martin-krafft.net/wiki/tag/factors/>, the top-level `factors` entry is not linked to the corresponding page. Looking at <http://phd.martin-krafft.net/wiki/tag/factors/language/>, this must be because the page name is the same as the entry name, and ikiwiki probably doesn't take the complete path of subpages into account.
## given map:
-\[[map pages="blog/tags/*"]]
+\[[!map pages="blog/tags/*"]]
## received map:
See this example:
-[[table class=table1 data="""
+[[!table class=table1 data="""
aaaaaaaaaaaaaaa|b|c
--\|\|--|e|f
"""]]
> I don't really support using ikiwiki with the perl 5.8.4 in debian
> oldstable, and would recommend upgrading. --[[Joey]]
-[[tag patch done]]
+[[!tag patch done]]
I have to suspect that replacing html with some hash is a bug.
-> Congrats, you're another person to fall afoul of markdown [[debbug 380212]].
+> Congrats, you're another person to fall afoul of markdown [[!debbug 380212]].
> The fix is to use Text::Markdown, or markdown 1.0.2 instead of buggy
-> old markdown 1.0.1. --[[Joey]] [[tag done]]
+> old markdown 1.0.1. --[[Joey]] [[!tag done]]
## inlining raw html
> I only see it with 1.0.1. (Bad news: Newer versions of markdown are
> slooooooow, especially on such large files.)
-> I'm calling this [[done]] since I've filed [[debbug 470676]] on perl, and
+> I'm calling this [[done]] since I've filed [[!debbug 470676]] on perl, and
> also have modified recentchangesdiff to only show the first 200 lines of
> diff, which should be enough without bloating the recentchanges into
> perl-crashing territory. --[[Joey]]
it's a problem with the XML-RPC interface.
Sorry for the delay, this is now fixed! --[[Joey]]
-[[tag done]]
+[[!tag done]]
[patch]: http://www.gmcmanus.org/0001-Use-correct-term-prefixes-when-searching.patch
[search]: http://ikiwiki.info/ikiwiki.cgi?P=title%3Atags
-[[tag done]]
+[[!tag done]]
return $gettext_obj->get(shift);
}
-[[tag patch]]
+[[!tag patch]]
-- [[ThomasBleher]]
> According to my testing, this patch makes ikiwiki's localisation fail for
Preview up a small amount.
--Chapman Flack
-[[tag done]]
+[[!tag done]]
e.g. use "wikibase" for css and favicon and "baseurl" for the <base> tag.
> thanks for pointing this bug out, I've fixed it --[[Joey]].
-[[tag done]]
+[[!tag done]]
Might this be a problem of the web server?
Also, I'd like to put the shortcut usages into backticks
--- `[[iki shortcuts]]` --
+-- `[[!iki shortcuts]]` --
to have them displayed in the usual backtick-formatting.
That also doesn't work, but this is an already-reported issue, as far as I know.
-Writing [[wikipedia Low_frequency_oscillation]] causes the word "frequency"
+Writing [[!wikipedia Low_frequency_oscillation]] causes the word "frequency"
to show up in italics, since underscores are Markdown for italics. Using
-[[wikipedia low frequency oscillation]] works in this case, because Wikipedia
+[[!wikipedia low frequency oscillation]] works in this case, because Wikipedia
will redirect, but it's hardly clean. Maybe the shortcuts plugin should
run pagetitle() on the text of its link? --Ethan
I attempted to make a new webpage by having wiki code with
- [[new page]]
+ [[!new page]]
[newpage]
This was converted to literal:
- [[new page]]
+ [[!new page]]
and the correct hyperlink:
?newpage
So when has a space it doesn't let you create a new page. I am using 1.35. Let's see what happens here:
-[[new page]]
+[[!new page]]
A moment later ... same thing ... it is not a link (no question mark to create).
-Having read i18n_characters_in_post_title, I have a page named `St John's` in a file named `St_John__39__s.mdwn`. Regular wikilinks like `\\[[St_John's]]` successfully point to that page. However, if I tag a page with `\[[tag St_John's]]`, that link is shown as pointing to a non-existant page. Modify the tag to read `\[[tag St_John__39__s]]` works around the problem.
+Having read i18n_characters_in_post_title, I have a page named `St John's` in a file named `St_John__39__s.mdwn`. Regular wikilinks like `\\[[St_John's]]` successfully point to that page. However, if I tag a page with `\[[!tag St_John's]]`, that link is shown as pointing to a non-existant page. Modify the tag to read `\[[!tag St_John__39__s]]` works around the problem.
[[done]] in 1.49 --[[Joey]]
> is good.
> --[[Joey]]
-[[tag done]]
+[[!tag done]]
Already existing tags, corresponding to pages like tags/foo.html work just
fine.
-If I add to a page a tag which is not existing (e.g. with [[tag newtag]])
+If I add to a page a tag which is not existing (e.g. with [[!tag newtag]])
the just modified page will have a link which point to tags/newtag. This is
in theory correct, but in practice leads to creating a tags/newtag subpage
of the page I'm editing, while my tagbase is supposed to be relative to the
> even in 5.8. See also: [[prune_causing_taint_mode_failures]],
> [[Insecure_dependency_in_mkdir]],
> [[Insecure_dependency_in_eval_while_running_with_-T_switch]],
-> and especially [[debbug 411786]]
+> and especially [[!debbug 411786]]
>
> The last of those was the last straw for me, and I disabled taint
> checking in the debian package. You can do the same by building ikiwiki
Other than ikiwiki.in, am I missing something here?
->> I think this is [[debbug 425891]]. I have sent there a patch that incorporates the original
+>> I think this is [[!debbug 425891]]. I have sent there a patch that incorporates the original
>> author's two diffs but has a more correct solution to the first problem described
>> above. -- Thomas, 2007-06-26
--[[PatrickWinnertz]]
-[[tag done]]
+[[!tag done]]
> alone. If you feel the other things you brought up are bugs, please talk
> to the markdown maintainer. --[[Joey]]
-[[tag done]]
+[[!tag done]]
-Wiki formatting between `\[[toc ]]` and an inline fails to render. The
+Wiki formatting between `\[[!toc ]]` and an inline fails to render. The
problem does not seem to trigger if the inline uses the titlepage template,
or if it doesn't match any pages. See example below; also reproducible
with a single-file wiki containing the text below, rendered via `ikiwiki
--plugin toc`.
-> This is [[debbug 421843]], and I suspect it affects certian other plugins
+> This is [[!debbug 421843]], and I suspect it affects certian other plugins
> that also use empty divs as placeholders. It's fixed in markdown 1.0.2 b7
> (available in debian experimental). So I'll [[close|done]] this as it's
> not really an ikiwiki bug. --[[Joey]]
-[[toc ]]
+[[!toc ]]
**not bold**
[not a link](http://ikiwiki.info)
-[[inline pages="news/*" description="Sparse News" show=1 feeds=no]]
+[[!inline pages="news/*" description="Sparse News" show=1 feeds=no]]
**bold**
> there should give some strong hints how to fix this bug, though I haven't
> tried to apply the method yet. --[[Joey]]
-[[debbug 487397]]
+[[!debbug 487397]]
I try to create wikilink in table. But it does not work. Here is example:
- \[[table class=table1 data="""
+ \[[!table class=table1 data="""
\[[wikilink_test|index]]
\[[wikilink_test\|index]]
[wikilink test](/servers/webmail1)
Trying to report this I found something weird. I changed in the example [[ with || because wiki renders something wrongly. You can see what I tried originally here:
- \[[table class=table1 data="""
+ \[[!table class=table1 data="""
\[[wikilink_test|servers/webmail1]]
\[[wikilink_test|servers/webmail1]]
[wikilink test](/servers/webmail1)
-[[meta title="CSS"]]
+[[!meta title="CSS"]]
## Using CSS with ikiwiki
-[[meta title="CSS Market"]]
+[[!meta title="CSS Market"]]
User contributed stylesheet files for ikiwiki. Feel free to add your own
stylesheets here. (Upload as wiki pages; wiki gnomes will convert them to css
* **[[css_market/zack.css]]**, contributed by [[StefanoZacchiroli]],
customized mostly for *blogging purposes*, can be seen in action on
[zack's blog](http://www.bononia.it/~zack/blog/)
- [[meta stylesheet="zack"]]
+ [[!meta stylesheet="zack"]]
* **[[css_market/kirkambar.css]]**, contributed by [[Roktas]]. This far from perfect
stylesheet follows a [Gitweb](http://www.kernel.org/git/?p=git/git.git;a=tree;f=gitweb)
like theme, so it may provide a consistent look'n feel along with the [[rcs/git]] backend. ;-)
You can see it in action on [kirkambar](http://kirkambar.net/) (Turkish content).
- [[meta stylesheet="kirkambar"]]
+ [[!meta stylesheet="kirkambar"]]
* **[[css_market/embeddedmoose.css]]**, contributed by [[JoshTriplett]].
Designed for [Embedded Moose](http://embeddedmoose.com). Some ideas from the
Debian lighttpd index.html page.
- [[meta stylesheet="embeddedmoose"]]
+ [[!meta stylesheet="embeddedmoose"]]
* **Refresh**, contributed by [[FredericLespez]]. Adapted from a free template
designed by [styleshout](http://www.styleshout.com).
**[[css_market/02_Template.tmpl]]**. If you prefer
[my header image](http://martin.wuertele.net/images/header.png) you can
use it under the terms of the MIT License (see png comment).
- [[meta stylesheet="02_Template"]]
+ [[!meta stylesheet="02_Template"]]
* **[[css_market/cstamas.css]]**, contributed by [[cstamas]].
This one is based on embeddedmoose, however it is slightly different now.
[My webpage's](http://users.itk.ppke.hu/~cstamas/tag/english) is not the same.
You can grab some pictures used as background patterns from there.
- [[meta stylesheet="cstamas"]]
+ [[!meta stylesheet="cstamas"]]
* **[[css_market/bma.css]]**, contributed by [bma](http://subvert.org.uk/~bma/).
Not quite the same as I use on my site, since that has slightly modified
templates.
- [[meta stylesheet="bma"]]
+ [[!meta stylesheet="bma"]]
If your web browser allows selecting between multiple stylesheets, this
page can be viewed using many of the stylesheets above. For example, if
## packages
To install with apt, if using Debian (since 4.0), or Ubuntu (since 6.10):
-[[template id=note text="""
+[[!template id=note text="""
Note that Debian 4.0 and especially Ubuntu 6.10 contain older versions of
ikiwiki, there have been lots of enhancements and bug fixes since those
versions.
* Make sure you have the tag plugin enabled, and tag posts using it. An
example of how to tag a post is:
- \[[tag tags/life]]
+ \[[!tag tags/life]]
* Enable the sidebar plugin to get a sidebar listing all the categories
you've tagged posts with.
-[[meta title="example blog"]]
+[[!meta title="example blog"]]
-[[pagestats pages="./tags/*"]]
+[[!pagestats pages="./tags/*"]]
Welcome to my blog. Have a look at the most recent posts below, or
browse the tag cloud on the right. An archive of all [[posts]] is also
available.
-[[inline pages="./posts/* and !*/Discussion" show="10"
+[[!inline pages="./posts/* and !*/Discussion" show="10"
actions=yes rootpage="./posts"]]
----
Here is a full list of posts to my [[blog|index]].
-[[inline pages="./posts/* and !*/Discussion" archive=yes feedshow=10 quick=yes]]
+[[!inline pages="./posts/* and !*/Discussion" archive=yes feedshow=10 quick=yes]]
This is the first post to this example blog. To add new posts, just add
files to the blog/posts/ subdirectory, or use the web form.
-[[tag tags/tech]]
+[[!tag tags/tech]]
* [[Archive|posts]]
Categories:
-[[map pages="./tags/* and !*/Discussion"]]
+[[!map pages="./tags/* and !*/Discussion"]]
-[[pagestats pages="./tags/*"]]
+[[!pagestats pages="./tags/*"]]
On the right you can see the tag cloud for this blog.
This feed contains pages in the "life" category.
-[[inline pages="link(tags/life) and ./posts/* and !*/Discussion"
+[[!inline pages="link(tags/life) and ./posts/* and !*/Discussion"
show="10" actions=yes]]
This feed contains pages in the "tech" category.
-[[inline pages="link(tags/tech) and !*/Discussion" show=10 actions=yes]]
+[[!inline pages="link(tags/tech) and !*/Discussion" show=10 actions=yes]]
This is FooBar's bug list. Link bugs to [[bugs/done]] when done.
-[[inline pages="./bugs/* and !./bugs/done and !link(done)
+[[!inline pages="./bugs/* and !./bugs/done and !link(done)
and !*/Discussion" actions=yes postform=yes show=0]]
recently fixed [[bugs]]
-[[inline pages="./* and link(./done) and !*/Discussion" sort=mtime show=10]]
+[[!inline pages="./* and link(./done) and !*/Discussion" sort=mtime show=10]]
FooBar frequently asked questions.
-[[toc ]]
+[[!toc ]]
## Is this a real program?
posted. FooBar users are recommended to subscribe to this page's RSS
feed.
-[[inline pages="./news/* and !*/Discussion" rootpage="news" show="30"]]
+[[!inline pages="./news/* and !*/Discussion" rootpage="news" show="30"]]
<TMPL_VAR news>
</TMPL_IF>
-FooBar <TMPL_VAR version> released with [[toggle text="these changes" id="changelog"]]
-[[toggleable id="changelog" text="""<TMPL_VAR changelog>"""]]
+FooBar <TMPL_VAR version> released with [[!toggle text="these changes" id="changelog"]]
+[[!toggleable id="changelog" text="""<TMPL_VAR changelog>"""]]
An overview of some of ikiwiki's features:
-[[toc ]]
+[[!toc ]]
## Uses a real RCS
## Current topics ##
-[[inline pages="forum/* and !forum/discussion and !forum/*/*"
+[[!inline pages="forum/* and !forum/discussion and !forum/*/*"
actions=yes rootpage="forum" postformtext="Add a new thread titled:" show=0]]
-[[meta title="Free Software"]]
+[[!meta title="Free Software"]]
ikiwiki, and this documentation wiki, are licensed under the terms of the
GNU [[GPL]], version 2 or later.
> [[preprocessor_directive|preprocessordirective]] for it, though.
> --[[JoshTriplett]]
->> [[tag wishlist]]
+>> [[!tag wishlist]]
>> I'd like to implement such a thing. Joey, what is this supposed to look like?
>> `\[[anchor WHATEVER]]`? --[[tschwinge]]
There are many other [[features]], including support for
[[blogging|ikiwiki/blog]], as well as a large array of [[plugins]].
-[[template id=links]]
+[[!template id=links]]
## using ikiwiki
All wikis are supposed to have a [[SandBox]], so this one does too.
This site generally runs the latest release of ikiwiki; currently, it runs
-ikiwiki [[version ]].
+ikiwiki [[!version ]].
## developer resources
Note that for more formal bug reports or todo items, you can also edit the
[[bugs]] and [[todo]] pages.
-[[toc ]]
+[[!toc ]]
# Installation/Setup questions
> Jamey Sharp and I have a set of scripts in progress to convert other wikis to ikiwiki, including history, so that we can migrate a few of our wikis. We already have support for migrating MoinMoin wikis to ikiwiki, including conversion of the entire history to Git. We used this to convert the [XCB wiki](http://xcb.freedesktop.org/wiki/) to ikiwiki; until we finalize the conversion and put the new wiki in place of the old one, you can browse the converted result at <http://xcb.freedesktop.org/ikiwiki>. We already plan to add support for TWiki (including history, since you can just run parsecvs on the TWiki RCS files to get Git), so that we can convert the [Portland State Aerospace Society wiki](http://psas.pdx.edu) (currently in Moin, but with much of its history in TWiki, and with many of its pages still in TWiki format using Jamey's TWiki format for MoinMoin).
>
-> Our scripts convert by way of HTML, using portions of the source wiki's code to render as HTML (with some additional code to do things like translate MoinMoin's `\[[TableOfContents]]` to ikiwiki's `\[[toc ]]`), and then using a modified [[cpan HTML::WikiConverter]] to turn this into markdown and ikiwiki. This produces quite satisfactory results, apart from things that don't have any markdown equivalent and thus remain HTML, such as tables and definition lists. Conversion of the history occurs by first using another script we wrote to translate MoinMoin history to Git, then using our git-map script to map a transformation over the Git history.
+> Our scripts convert by way of HTML, using portions of the source wiki's code to render as HTML (with some additional code to do things like translate MoinMoin's `\[[TableOfContents]]` to ikiwiki's `\[[!toc ]]`), and then using a modified [[!cpan HTML::WikiConverter]] to turn this into markdown and ikiwiki. This produces quite satisfactory results, apart from things that don't have any markdown equivalent and thus remain HTML, such as tables and definition lists. Conversion of the history occurs by first using another script we wrote to translate MoinMoin history to Git, then using our git-map script to map a transformation over the Git history.
>
> We will post the scripts as soon as we have them complete enough to convert our wikis.
>
It's recommended you have a C compiler, as ikiwiki uses one to build
wrappers.
-Ikiwiki requires the [[cpan Text::Markdown]], [[cpan URI]],
-[[cpan HTML::Parser]], [[cpan HTML::Template]], and [[cpan HTML::Scrubber]]
+Ikiwiki requires the [[!cpan Text::Markdown]], [[!cpan URI]],
+[[!cpan HTML::Parser]], [[!cpan HTML::Template]], and [[!cpan HTML::Scrubber]]
perl modules be installed. It can also use a lot of other perl modules, if
they are available.
posted. [[IkiWikiUsers]] are recommended to subscribe to this page's RSS
feed.
-[[inline pages="news/* and !news/*/* and !news/discussion"
+[[!inline pages="news/* and !news/*/* and !news/discussion"
feedpages="created_after(news/Article_on_Ikiwiki_as_a_BTS)" rootpage="news" show="30"]]
By the way, some other pages with RSS feeds about ikiwiki include
I've produced a [code_swarm](http://vis.cs.ucdavis.edu/~ogawa/codeswarm/)
visualization of the first 2+ years of ikiwiki's commit history.
-[[img screenshot.png size="480x360"]]
+[[!img screenshot.png size="480x360"]]
* [15 mb avi](http://kitenet.net/~joey/screencasts/ikiwiki_swarm.avi)
* [stream on vimeo](http://vimeo.com/1324348)
the procedure described at [[tips/switching_to_usedirs]]
or edit your setup file to turn `usedirs` off: `usedirs => 0,`
* [[plugins/OpenID]] logins are now enabled by default, if the
- [[cpan Net::OpenID::Consumer]] perl module is available. Password logins
+ [[!cpan Net::OpenID::Consumer]] perl module is available. Password logins
are also still enabled by default. If you like, you can turn either OpenID
or password logins off via the `disable_plugins` setting.
* Some support for other markup languages than markdown: rst, textile.
* Unit test suite, with more than 300 tests.
-[[meta date="2007-04-30 00:51:57 -0400"]]
+[[!meta date="2007-04-30 00:51:57 -0400"]]
OpenID, and see how OpenID works for you. And let me know your feelings about
making such a switch. --[[Joey]]
-[[poll 59 "Accept only OpenID for logins" 18 "Accept only password logins" 35 "Accept both"]]
+[[!poll 59 "Accept only OpenID for logins" 18 "Accept only password logins" 35 "Accept both"]]
Quick poll: Do you feel that ikiwiki is fast enough on this server, or
should I move it to my much beefier auxiliary server?
-[[poll open=no 40 "It's fast enough" 6 "It's too slow!" 4 "No opinion"]]
+[[!poll open=no 40 "It's fast enough" 6 "It's too slow!" 4 "No opinion"]]
If you have specifics on performance issues, you might mention them on the
[[discussion]] page.
-ikiwiki 2.50 released with [[toggle text="these changes"]]
-[[toggleable text="""
+ikiwiki 2.50 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
* img: Support captions.
* img: Don't generate empty title attributes, etc.
* img: Allow setting defaults for class and id too.
-ikiwiki 2.51 released with [[toggle text="these changes"]]
-[[toggleable text="""
+ikiwiki 2.51 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
* Improve toplevel parentlink to link directly to index.html when usedirs is
disabled.
* map: Add a "show" parameter. "show=title" can be used to display page
wiki in /etc/ikiwiki/wikilist this will be done automatically when the
Debian package is upgraded. Or use ikiwiki-mass-rebuild to force a rebuild.
-ikiwiki 2.52 released with [[toggle text="these changes"]]
-[[toggleable text="""
+ikiwiki 2.52 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
* attachment: New plugin for uploading and managing attachments.
This includes a fairly powerful PageSpec based admin pref for deciding
whether to accept a given upload, and an attachment management interface
-ikiwiki 2.53 released with [[toggle text="these changes"]]
-[[toggleable text="""
+ikiwiki 2.53 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
* search: generate configuration files once only when rebuilding
(Gabriel McManus)
* attachment: Fix an uninitialised value warning when editing a page
-ikiwiki 2.54 released with [[toggle text="these changes"]]
-[[toggleable text="""
+ikiwiki 2.54 released with [[!toggle text="these changes"]]
+[[!toggleable text="""
* [ Joey Hess ]
* Make it possible to load setup files w/o running them. Code
needing to do so can call IkiWiki::Setup::load, which will return
aggregated data to internal-use files, rather than wiki pages. This
can save disk space, and be faster.
* ikiwiki-transition: Add a `aggregateinternal` transition to rename
- the aggregated files."""]]
\ No newline at end of file
+ the aggregated files."""]]
If your patch is non-trivial and might need several iterations to get
right, please consider publishing a [[git]] branch.
-[[inline pages="(todo/* or bugs/*) and link(patch) and !link(bugs/done) and
+[[!inline pages="(todo/* or bugs/*) and link(patch) and !link(bugs/done) and
!link(todo/done) and !*/Discussion" rootpage="todo" archive="yes"]]
Most of ikiwiki's [[features]] are implemented as plugins. Many of these
plugins are included with ikiwiki.
-[[pagestats pages="plugins/type/* and !plugins/type/slow"]]
+[[!pagestats pages="plugins/type/* and !plugins/type/slow"]]
There's documentation if you want to [[write]] your own plugins, or you can
[[install]] plugins [[contributed|contrib]] by others.
## Plugin directory
-[[inline pages="plugins/* and !plugins/type/* and !plugins/write and
+[[!inline pages="plugins/* and !plugins/type/* and !plugins/write and
!plugins/write/* and !plugins/contrib and !plugins/install and !*/Discussion"
feedpages="created_after(plugins/graphviz)" archive="yes"
rootpage="plugins/contrib" postformtext="Add a new plugin named:" show=0]]
-[[template id=plugin name=amazon_s3 author="[[Joey]]"]]
-[[tag type/special-purpose]]
+[[!template id=plugin name=amazon_s3 author="[[Joey]]"]]
+[[!tag type/special-purpose]]
This plugin allows ikiwiki to publish a wiki in the [Amazon Simple Storage
Service](http://aws.amazon.com/s3) (S3). As pages are rendered, ikiwiki
will upload them to Amazon S3. The entire wiki contents, aside from the
ikiwiki CGI, can then be served directly out of Amazon S3.
-You'll need the [[cpan Net::Amazon::S3]] and [[cpan File::MimeInfo]] perl
+You'll need the [[!cpan Net::Amazon::S3]] and [[!cpan File::MimeInfo]] perl
modules and an Amazon S3 account to use this plugin.
## configuration
-[[template id=plugin name=anonok author="[[Joey]]"]]
-[[tag type/auth]]
+[[!template id=plugin name=anonok author="[[Joey]]"]]
+[[!tag type/auth]]
By default, anonymous users cannot edit the wiki. This plugin allows
anonymous web users, who have not signed in, to edit any page in the wiki
-[[template id=plugin name=attachment core=0 author="[[Joey]]"]]
-[[tag type/useful]]
+[[!template id=plugin name=attachment core=0 author="[[Joey]]"]]
+[[!tag type/useful]]
This plugin allows files to be uploaded to the wiki over the web.
[[enhanced_PageSpec|ikiwiki/pagespec/attachment]] in the "Allowed
Attachments" field of the wiki admin's preferences page.
-This plugin will use the [[cpan File::MimeInfo::Magic]] perl module, if
+This plugin will use the [[!cpan File::MimeInfo::Magic]] perl module, if
available, for mimetype checking.
The `virusfree` [[PageSpec|ikiwiki/pagespec/attachment]] requires that
-[[template id=plugin name=brokenlinks author="[[Joey]]"]]
-[[tag type/link type/meta]]
+[[!template id=plugin name=brokenlinks author="[[Joey]]"]]
+[[!tag type/link type/meta]]
This plugin generates a list of broken links on pages in the wiki. This is
a useful way to find pages that still need to be written, or links that
If this plugin is turned on, here's a list of broken links on this wiki:
-[[brokenlinks pages="* and !recentchanges"]]
+[[!brokenlinks pages="* and !recentchanges"]]
-[[template id=plugin name=calendar author="[[ManojSrivastava]]"]]
-[[tag type/chrome]]
+[[!template id=plugin name=calendar author="[[ManojSrivastava]]"]]
+[[!tag type/chrome]]
This plugin displays a calendar, similar to the typical calendars shown on
some blogs.
# examples
- \[[calendar ]]
+ \[[!calendar ]]
- \[[calendar type="month" pages="blog/* and !*/Discussion"]]
+ \[[!calendar type="month" pages="blog/* and !*/Discussion"]]
- \[[calendar type="year" year="2005" pages="blog/* and !*/Discussion"]]
+ \[[!calendar type="year" year="2005" pages="blog/* and !*/Discussion"]]
This plugin is inspired by the calendar plugin for Blosxom, but
derives no code from it. This plugin is essentially a fancy front end
-[[template id=plugin name=camelcase author="[[Joey]]"]]
+[[!template id=plugin name=camelcase author="[[Joey]]"]]
This plugin makes words in CamelCase be treated as a [[ikiwiki/WikiLink]].
That is to say, any two or more words capitalised and mashed together are
If this plugin is enabled, this will be a link: SandBox
-[[tag type/link]]
+[[!tag type/link]]
-[[template id=plugin name=conditional core=1 author="[[Joey]]"]]
-[[tag type/format]]
+[[!template id=plugin name=conditional core=1 author="[[Joey]]"]]
+[[!tag type/format]]
With this plugin, you can make text be conditionally displayed on a page.
For example:
- \[[if test="enabled(smiley)"
+ \[[!if test="enabled(smiley)"
then="The smiley plugin is enabled :-)"
else="No smiley plugin here.."]]
> The blank lines in this example are coming from the newline after `then="`, and also from the newline before the close quote. If you remove those newlines, I think it should work. --[[Joey]]
>> No, that's unfortunately not it, see here:
->> [[if test="enabled(trallala)" then="foot"]]
+>> [[!if test="enabled(trallala)" then="foot"]]
>> Continued. But on the other
->> [[if test="enabled(trallala)" then="foot" else="hand:"]]
+>> [[!if test="enabled(trallala)" then="foot" else="hand:"]]
>> Continued. --[[tschwinge]]
>>> Seems ok, no? The only linebreaks I see in the source are the ones you
>>>> Okay, that would explain the linebreak between 1 and 3. But then, why are all linebreaks removed between 3 and 5?
>>>> 1 No, that's unfortunately not it, see here:
->>>> [[if test="enabled(trallala)" then="foot"]]
+>>>> [[!if test="enabled(trallala)" then="foot"]]
>>>> 3 Continued. But on the other
->>>> [[if test="enabled(trallala)" then="foot" else="hand:"]]
+>>>> [[!if test="enabled(trallala)" then="foot" else="hand:"]]
>>>> 5 Continued. --[[tschwinge]]
>>>>> The conditional after 1 evaluates to "", so there's a blank line
<pre>
#### Archives
- \[[calendar type="year" months_per_row="6" pages="blog/* and !*/Discussion"]]
- \[[calendar type="month" pages="blog/* and !*/Discussion"]]
+ \[[!calendar type="year" months_per_row="6" pages="blog/* and !*/Discussion"]]
+ \[[!calendar type="month" pages="blog/* and !*/Discussion"]]
<h4>Indices</h4>
- \[[map pages="archives/* and !*/Discussion"]]
+ \[[!map pages="archives/* and !*/Discussion"]]
</pre>
I am trying to make it so that the archives and index only show up if the destpage is either blog/* or / -- the top of the wiki. Unfortunately, I don't think I am getting the
conditional right -- I have a "]] left over at the end (looking at the rendered html). Ideally, I would like to be able to do todays calendar on the top level pagel and
(See [[install]] for installation help.)
-[[inline pages="plugins/contrib/* !*/Discussion"
+[[!inline pages="plugins/contrib/* !*/Discussion"
feedpages="created_after(plugins/contrib/navbar)" archive="yes"
rootpage="plugins/contrib" postformtext="Add a new plugin named:" show=0]]
-[[template id=plugin name=attach author="[[Ben]]"]]
+[[!template id=plugin name=attach author="[[Ben]]"]]
**Note: This plugin is currently pending upload. It is also most assuredly beta.**
-[[template id=plugin name=copyright author="[[tschwinge]]"]]
-[[template id=plugin name=license author="[[tschwinge]]"]]
+[[!template id=plugin name=copyright author="[[tschwinge]]"]]
+[[!template id=plugin name=license author="[[tschwinge]]"]]
-[[meta title="default content for *copyright* and *license*"]]
+[[!meta title="default content for *copyright* and *license*"]]
Someone was just asking for it and I had written these two plugins already some months ago,
so I'm now publishing them here.
-[[template id=plugin name=gallery author="[[arpitjain]]"]]
+[[!template id=plugin name=gallery author="[[arpitjain]]"]]
This plugin would create a nice looking gallery of the images. It has been build over the img plugin in Ikiwiki
USAGE :
-\[[gallery imagedir="images" option="value"]]
+\[[!gallery imagedir="images" option="value"]]
Available options : <br>
* imagedir(required) => Directory containing images. It will scan all the files with jpg|png|gif extension from the directory and will put it in the gallery.<br>
-- [[arpitjain]]
-[[tag plugins]] [[tag patch]] [[tag soc]] [[tag wishlist]]
+[[!tag plugins]] [[!tag patch]] [[!tag soc]] [[!tag wishlist]]
However, I can't even get simply things like this to work:
$ cat web/index.mdwn
- [[gallery imagedir="b" vcs="0"]]
+ [[!gallery imagedir="b" vcs="0"]]
$ ls web/b/
1.jpg 2.jpg 3.jpg 4.jpg
$ ikiwiki [...] --plugin gallery web web.rendered
[...]
$ grep gallery web.rendered/index.html
- <p>[[gallery Failed to Read Directory b.]]</p>
+ <p>[[!gallery Failed to Read Directory b.]]</p>
When using `vcs="1"` it's no better:
Its probably because of the restriction of permissions by plugins in newer version of IkiWiki.
For the time being, you can turn resizing off till I look into conditional underlay directory feature.
-USAGE : [[gallery imagedir="directory" resize="0"]]
+USAGE : [[!gallery imagedir="directory" resize="0"]]
New version updated at SVN REPO : http://ned.snow-crash.org:8080/svn/ikiwiki-gallery/
-[[template id=plugin name=googlemaps author="Christian Mock"]]
-[[tag type/special-purpose todo/geotagging]]
+[[!template id=plugin name=googlemaps author="Christian Mock"]]
+[[!tag type/special-purpose todo/geotagging]]
`googlemaps` is a plugin that allows using the [Google Maps API][2]
from ikiwiki.
-[[template id=plugin name=headinganchors author="[[PaulWise]]"]]
+[[!template id=plugin name=headinganchors author="[[PaulWise]]"]]
This is a simple plugin to add ids to all headings, based on their text. It
works as a postprocessing filter, allowing it to work on mdwn, wiki, html,
-[[template id=plugin name=img author="Christian Mock"]]
-[[tag type/chrome]]
+[[!template id=plugin name=img author="Christian Mock"]]
+[[!tag type/chrome]]
`img` is an enhanced image handling plugin.
and use the plugin once per page? Something like this on the first one if
it's got multiple clickable thumbnails:
- \[[img foo.jpg width=256 link=page2]]
+ \[[!img foo.jpg width=256 link=page2]]
This on the second:
- \[[img foo.jpg width=1024 link=page3]]
+ \[[!img foo.jpg width=1024 link=page3]]
\[[small|page1]]
\[[medium|page2]]
\[[large|page3]]
This on the third:
- \[[img foo.jpg link=page3]]
+ \[[!img foo.jpg link=page3]]
\[[small|page1]]
\[[medium|page2]]
\[[large|parge3]]
-[[template id=plugin name=linguas author="Jordà Polo"]]
+[[!template id=plugin name=linguas author="Jordà Polo"]]
Linguas
=======
`pagename.$LANG`, where `$LANG` is a ISO639-1 (two-letter) language code.
To enable linguas, add the following line in the source code of the page:
- \[[linguas ]]
+ \[[!linguas ]]
Note that linguas is only required in one of the pages (the original,
for instance); the rest of translations will be automatically
updated. Additionally, it is also possible to specify the title of
the translation:
- \[[linguas title="Translated title"]]
+ \[[!linguas title="Translated title"]]
Template
+ push @links, IkiWiki::htmllink($page, $destpage, $trans, noimageinline => 0, forcesubpage => 0, linktext => $link);
}
- my $otherlinguas = 'Translations:';
\ No newline at end of file
+ my $otherlinguas = 'Translations:';
-[[template id=plugin name=navbar author="[[TobiOetiker]]"]]
+[[!template id=plugin name=navbar author="[[TobiOetiker]]"]]
The Navbar Plugin renders a Navigation Bar into your page. It is based on code
from the [[sidebar_plugin|plugins/sidebar]].
-[[template id=plugin name=sar author="[[VictorMoral]]"]]
-[[tag type/chrome type/slow ]]
+[[!template id=plugin name=sar author="[[VictorMoral]]"]]
+[[!tag type/chrome type/slow ]]
The `sar` plugin is useful to make global or local search and replace operations
using common or specific terms.
## Sites and projects
- - [[sar search="ikiwiki" first="[IkiWiki](http://ikiwiki.info)" next="_IkiWiki_"]]
- - [[sar search="debian" first="[Debian](http://debian.org)" next="_Debian_"]]
- - [[sar search="perl" first="[Perl](http://perl.org)" next="_Perl_"]]
- - [[sar search="linux" replace="GNU/Linux"]]
+ - [[!sar search="ikiwiki" first="[IkiWiki](http://ikiwiki.info)" next="_IkiWiki_"]]
+ - [[!sar search="debian" first="[Debian](http://debian.org)" next="_Debian_"]]
+ - [[!sar search="perl" first="[Perl](http://perl.org)" next="_Perl_"]]
+ - [[!sar search="linux" replace="GNU/Linux"]]
## Persons
- - [[sar search="joey" first="[Joey Hess](http://ikiwiki.info/users/joey]]" next="_Joey_" ]]
- - [[sar search="angel" first="[Angel](http://triptico.com)" next="Angel"]]
+ - [[!sar search="joey" first="[Joey Hess](http://ikiwiki.info/users/joey]]" next="_Joey_" ]]
+ - [[!sar search="angel" first="[Angel](http://triptico.com)" next="Angel"]]
## Technical terms
- - [[sar search="smtp" first="\[[wp SMTP]]" next="‘SMTP‘"]]
- - [[sar search="pop3" first="\[[wp POP3]]" next="’POP3’"]]
+ - [[!sar search="smtp" first="\[[!wp SMTP]]" next="‘SMTP‘"]]
+ - [[!sar search="pop3" first="\[[!wp POP3]]" next="’POP3’"]]
The search expressions must be surrounded by double dashes in a source ikiwiki
page, like this:
In a ikiwiki source page we can write this
- \[[sar search=debian replace="__Debian__"]]
+ \[[!sar search=debian replace="__Debian__"]]
for define a global replace for the term `--debian--` or
- \[[sar search=ibm first=’[IBM](http://www.ibm.com)’
+ \[[!sar search=ibm first=’[IBM](http://www.ibm.com)’
next="_IBM_"]]
to define a replace for the first match of the string `--ibm--` and a different
-[[template id=plugin name=siterel2pagerel author="[[PaulWise]]"]]
+[[!template id=plugin name=siterel2pagerel author="[[PaulWise]]"]]
This is a simple plugin to convert all site-relative links to page-relative
links (converts /foo into ../../../foo or similar). It works as a
-[[template id=plugin name=syntax author="[[VictorMoral]]"]]
-[[tag type/chrome type/slow]]
+[[!template id=plugin name=syntax author="[[VictorMoral]]"]]
+[[!tag type/chrome type/slow]]
-The `syntax` plugin adds support to ikiwiki for syntax highlighting through the *vim* editor and its perl interface [[cpan Text::VimColor]]. It depends on a functional vim installation.
+The `syntax` plugin adds support to ikiwiki for syntax highlighting through the *vim* editor and its perl interface [[!cpan Text::VimColor]]. It depends on a functional vim installation.
The plugin inserts a fragment of HTML with special marks from a file or a string text. It accepts the following parameters:
Example:
- \[[syntax type="perl" text="""
+ \[[!syntax type="perl" text="""
#!/usr/bin/perl
my $a = "World";
or
- \[[syntax file="/examples/hello.pl" description="My first perl program"]]
+ \[[!syntax file="/examples/hello.pl" description="My first perl program"]]
This plugin create the following CSS styles:
-[[template id=plugin name=texinfo author="[[tschwinge]]"]]
+[[!template id=plugin name=texinfo author="[[tschwinge]]"]]
[[I|tschwinge]] started writing a plugin to render
[GNU Texinfo](http://www.gnu.org/software/texinfo/)
-[[template id=plugin name=creole author="BerndZeimetz"]]
-[[tag type/format]]
+[[!template id=plugin name=creole author="BerndZeimetz"]]
+[[!tag type/format]]
This plugin allows ikiwiki to process pages written in
[WikiCreole](http://www.wikicreole.org/) format.
-To use it, you need to have the [[cpan Text::WikiCreole]] perl
+To use it, you need to have the [[!cpan Text::WikiCreole]] perl
module installed, enable the plugin, then files with the extention `.creole`
will be processed as creole.
-[[template id=plugin name=ddate author="[[Joey]]"]]
-[[tag type/fun]]
+[[!template id=plugin name=ddate author="[[Joey]]"]]
+[[!tag type/fun]]
Enables use of Discordian dates. `--timeformat` can be used to change
the date format; see `ddate(1)`.
-This plugin requires the [[cpan DateTime]] and
-[[cpan DateTime::Calendar::Discordian]] perl modules.
+This plugin requires the [[!cpan DateTime]] and
+[[!cpan DateTime::Calendar::Discordian]] perl modules.
-[[template id=plugin name=editdiff author="[[JeremieKoenig]]"]]
-[[tag type/useful]]
+[[!template id=plugin name=editdiff author="[[JeremieKoenig]]"]]
+[[!tag type/useful]]
This plugin adds a "Diff" button when a page is being edited.
When clicked, a diff between the stored page and provided content
-[[template id=plugin name=edittemplate author="[[Joey]]"]]
-[[tag type/useful]]
+[[!template id=plugin name=edittemplate author="[[Joey]]"]]
+[[!tag type/useful]]
This plugin allows registering template pages, that provide default
content for new pages created using the web frontend. To register a
Reproducible: y/n
Details:
-The template page can also contain [[cpan HTML::Template]] directives,
+The template page can also contain [[!cpan HTML::Template]] directives,
similar to other ikiwiki [[templates]]. Currently only one variable is
set: `<TMPL_VAR name>` is replaced with the name of the page being
created.
-[[template id=plugin name=embed author="[[Joey]]"]]
-[[tag type/html]]
+[[!template id=plugin name=embed author="[[Joey]]"]]
+[[!tag type/html]]
This plugin allows embedding content from external sites on
wiki pages.
-[[template id=plugin name=favicon author="[[Joey]]"]]
-[[tag type/chrome]]
+[[!template id=plugin name=favicon author="[[Joey]]"]]
+[[!tag type/chrome]]
If this plugin is enabled, then an icon link is added to pages, for web
browsers to display. The icon is currently hardcoded to be a favicon.ico,
-[[template id=plugin name=fortune author="[[Joey]]"]]
-[[tag type/fun]]
+[[!template id=plugin name=fortune author="[[Joey]]"]]
+[[!tag type/fun]]
This just uses the `fortune` program to insert a fortune into the page.
Usage:
- \[[fortune ]]
+ \[[!fortune ]]
-[[if test="enabled(fortune)" then="""
+[[!if test="enabled(fortune)" then="""
Here's a fortune for you:
----
-[[fortune ]]
+[[!fortune ]]
"""]]
-[[template id=plugin name=goodstuff author="[[Joey]]"]]
-[[tag type/bundle]]
+[[!template id=plugin name=goodstuff author="[[Joey]]"]]
+[[!tag type/bundle]]
This plugin enables a bunch of other plugins -- basically all the ones that
are not too intrusive, work well with little configuration, and are nice to
-[[template id=plugin name=googlecalendar author="[[Joey]]"]]
-[[tag type/special-purpose]]
+[[!template id=plugin name=googlecalendar author="[[Joey]]"]]
+[[!tag type/special-purpose]]
*Note*: This plugin is deprecated. Please switch to the [[embed]] plugin.
Example use:
- \[[googlecalendar html="""
+ \[[!googlecalendar html="""
<iframe src="http://www.google.com/calendar/embed?src=adkrdken8mupngh13jshlbenoc%40group.calendar.google.com&title=OSEL%20Calendar&chrome=NAVIGATION&bgcolor=%2371d873&height=588" style=" border-width:0 " width="480" frameborder="0" height="588"></iframe>
"""]]
-[[template id=plugin name=graphviz author="[[JoshTriplett]]"]]
-[[tag type/chrome type/format]]
+[[!template id=plugin name=graphviz author="[[JoshTriplett]]"]]
+[[!tag type/chrome type/format]]
This plugin allows embedding [graphviz](http://www.graphviz.org/) graphs in a
page. Example usage:
- \[[graph src="a -> b -> c; a -> c;"]]
+ \[[!graph src="a -> b -> c; a -> c;"]]
Note that graphs will only show up in previews if your browser has
-[[wikipedia data: URI]] support, or if the same graph already exists on that
+[[!wikipedia data: URI]] support, or if the same graph already exists on that
page.
Security implications: graphviz does not seem to have any syntax exploitable to
in inches. You must specify both to limit the size; otherwise, graphviz will
choose a size, without any limit.
-[[if test="enabled(graphviz)" then="""
+[[!if test="enabled(graphviz)" then="""
Some example graphs:
-[[graph src="a -> b -> c; a -> b;"]]
-[[graph src="a -- b -- c -- a;" prog="circo" type="graph"]]
+[[!graph src="a -> b -> c; a -> b;"]]
+[[!graph src="a -- b -- c -- a;" prog="circo" type="graph"]]
"""]]
-This plugin uses the [[cpan Digest::SHA1]] perl module.
+This plugin uses the [[!cpan Digest::SHA1]] perl module.
-[[template id=plugin name=haiku author="[[Joey]]"]]
-[[tag type/fun]]
+[[!template id=plugin name=haiku author="[[Joey]]"]]
+[[!tag type/fun]]
This plugin allows inserting a randomly generated haiku into a wiki page.
Just type:
- \[[haiku hint="argument"]]
+ \[[!haiku hint="argument"]]
-[[haiku hint="argument test"]]
+[[!haiku hint="argument test"]]
The hint parameter can be omitted, it only provides the generator a hint of
what to write the haiku about. If no hint is given, it might base it on the
-[[template id=plugin name=hnb author="[[XTaran]]"]]
-[[tag type/format type/slow]]
+[[!template id=plugin name=hnb author="[[XTaran]]"]]
+[[!tag type/format type/slow]]
This plugin allows ikiwiki to process `.hnb` XML files, as created by
the Hierachical Notebook [hnb](http://hnb.sourceforge.net/). To use it, you need to have
-[[template id=plugin name=html author="[[Joey]]"]]
-[[tag type/html type/format]]
+[[!template id=plugin name=html author="[[Joey]]"]]
+[[!tag type/html type/format]]
This plugin lets html pages be used as source pages for the wiki. The
html pages will still be wrapped in the same html template as any other
-[[template id=plugin name=htmlscrubber core=1 author="[[Joey]]"]]
-[[tag type/html]]
+[[!template id=plugin name=htmlscrubber core=1 author="[[Joey]]"]]
+[[!tag type/html]]
This plugin is enabled by default. It sanitizes the html on pages it renders
to avoid XSS attacks and the like.
that the url is in a known, safe scheme, and to block embedded javascript
in such urls.
-It uses the [[cpan HTML::Scrubber]] perl module to perform its html
+It uses the [[!cpan HTML::Scrubber]] perl module to perform its html
sanitisation, and this perl module also deals with various entity encoding
tricks.
-[[template id=plugin name=htmltidy author="Faidon Liambotis"]]
-[[tag type/html]]
-[[tag type/slow]]
+[[!template id=plugin name=htmltidy author="Faidon Liambotis"]]
+[[!tag type/html]]
+[[!tag type/slow]]
This plugin uses [tidy](http://tidy.sourceforge.net/) to tidy up the html
emitted by ikiwiki. Besides being nicely formatted, this helps ensure that
-[[template id=plugin name=httpauth author="Alec Berryman"]]
-[[tag type/auth]]
+[[!template id=plugin name=httpauth author="Alec Berryman"]]
+[[!tag type/auth]]
This plugin allows HTTP basic authentication to be used to log into the
wiki. To use the plugin, your web server should be set up to perform HTTP
-[[template id=plugin name=img author="Christian Mock"]]
-[[tag type/chrome]]
+[[!template id=plugin name=img author="Christian Mock"]]
+[[!tag type/chrome]]
This is an image handling plugin. While ikiwiki supports inlining full-size
images by making a [[ikiwiki/WikiLink]] that points to the image, using
## usage
- \[[img image1.jpg size="200x200" alt="clouds"]]
+ \[[!img image1.jpg size="200x200" alt="clouds"]]
The image file will be searched for using the same rules as used to find
the file pointed to by a [[ikiwiki/WikiLink]].
You can also set default values that will be applied to all later images on
the page, unless overridden. Useful when including many images on a page.
- \[[img defaults size=200x200 alt="wedding photo"]]
- \[[img photo1.jpg]]
- \[[img photo2.jpg]]
- \[[img photo3.jpg size=200x600]]
+ \[[!img defaults size=200x200 alt="wedding photo"]]
+ \[[!img photo1.jpg]]
+ \[[!img photo2.jpg]]
+ \[[!img photo3.jpg size=200x600]]
-[[template id=plugin name=inline core=1 author="[[Joey]]"]]
+[[!template id=plugin name=inline core=1 author="[[Joey]]"]]
This is a [[ikiwiki/PreProcessorDirective]] that allows including one wiki page
inside another. For example:
- \[[inline pages="blog/*"]]
+ \[[!inline pages="blog/*"]]
The most common use of inlining is generating blogs and RSS or Atom feeds.
See [[ikiwiki/blog]] for details.
-[[meta title="Installing third party plugins"]]
+[[!meta title="Installing third party plugins"]]
Most ikiwiki plugins are perl modules and should be installed somewhere in
the perl module search path. See the @INC list at the end of the output of
-[[template id=plugin name=link core=1 author="[[Joey]]"]]
-[[tag type/link]]
+[[!template id=plugin name=link core=1 author="[[Joey]]"]]
+[[!tag type/link]]
This plugin implements standard [[WikiLinks|WikiLink]].
-[[template id=plugin name=linkmap author="[[Joey]]"]]
-[[tag type/meta]]
-[[tag type/slow]]
+[[!template id=plugin name=linkmap author="[[Joey]]"]]
+[[!tag type/meta]]
+[[!tag type/slow]]
This plugin uses [graphviz](http://www.graphviz.org/) to generate a graph showing the links between a
set of pages in the wiki. Example usage:
- \[[linkmap pages="* and !blog/* and !*/Discussion"]]
+ \[[!linkmap pages="* and !blog/* and !*/Discussion"]]
Only links between mapped pages will be shown; links pointing to or from
unmapped pages will be omitted. If the pages to include are not specified,
in inches. Both must be specified for the limiting to take effect, otherwise
the map's size is not limited.
-[[if test="enabled(linkmap)" then="""
+[[!if test="enabled(linkmap)" then="""
Here is an example link map, of the index page and all pages it links to:
-[[linkmap pages="index or (backlink(index) and !*.png)"]]
+[[!linkmap pages="index or (backlink(index) and !*.png)"]]
"""]]
-[[template id=plugin name=lockedit core=1 author="[[Joey]]"]]
-[[tag type/auth]]
+[[!template id=plugin name=lockedit core=1 author="[[Joey]]"]]
+[[!tag type/auth]]
This plugin enables [[page_locking]]. It is enabled by default.
-[[template id=plugin name=map author="Alessandro Dotti Contra"]]
-[[tag type/meta]]
+[[!template id=plugin name=map author="Alessandro Dotti Contra"]]
+[[!tag type/meta]]
-[[meta description="some page description"]]
+[[!meta description="some page description"]]
This plugin generates a hierarchical page map for the wiki. Example usage:
Hint: To limit the map to displaying pages less than a certain level deep,
use a [[ikiwiki/PageSpec]] like this: `pages="* and !*/*/*"`
-[[if test="enabled(map)" then="""
+[[!if test="enabled(map)" then="""
Here's an example map, for the plugins section of this wiki:
[[!map pages="(plugins or plugins/*) and !*/*/*"]]
We'd also very much like to have an option to display the title of the page instead of the filename in the map plugin. --Andrew
-There's a patch implementing this in [[debbug 484510]]. It needs a few fixes
+There's a patch implementing this in [[!debbug 484510]]. It needs a few fixes
before I merge it. Now applied. --[[Joey]]
-[[template id=plugin name=mdwn core=1 author="[[Joey]]"]]
-[[tag type/format]]
+[[!template id=plugin name=mdwn core=1 author="[[Joey]]"]]
+[[!tag type/format]]
This plugin lets ikwiki convert files with names ending in ".mdwn" to html.
It uses the [[ikiwiki/markdown]] minimal markup language.
There are several implementations of markdown support that can be used by
this plugin. The [original version of
markdown](http://daringfireball.net/projects/markdown/) can be used, or the
-[[cpan Text::Markdown]] perl module.
+[[!cpan Text::Markdown]] perl module.
-[[cpan Text::Markdown]] also includes a markdown variant called
+[[!cpan Text::Markdown]] also includes a markdown variant called
[multimarkdown](http://fletcherpenney.net/MultiMarkdown/), which supports
tables, footnotes, and other new features. Multimarkdown is not enabled by
default, but can be turned on via the `multimarkdown` option in the setup
-[[template id=plugin name=meta author="[[Joey]]"]]
-[[tag type/meta]]
+[[!template id=plugin name=meta author="[[Joey]]"]]
+[[!tag type/meta]]
This plugin allows inserting arbitrary metadata into the source of a page.
Enter the metadata as follows:
* date
Specifies the creation date of the page. The date can be entered in
- nearly any format, since it's parsed by [[cpan TimeDate]].
+ nearly any format, since it's parsed by [[!cpan TimeDate]].
* stylesheet
-[[template id=plugin name=mirror author="[[Joey]]"]]
-[[tag type/special-purpose]]
+[[!template id=plugin name=mirror author="[[Joey]]"]]
+[[!tag type/special-purpose]]
This plugin allows adding links a list of mirrors to each page in the
wiki. For each mirror, a name and an url should be specified. Pages are
-[[template id=plugin name=more author="Ben"]]
-[[tag type/format]]
+[[!template id=plugin name=more author="Ben"]]
+[[!tag type/format]]
This plugin provides a way to have a "more" link on a page in a blog, that
leads to the full version of the page. Use it like this:
- \[[more linktext="click for more" text="""
+ \[[!more linktext="click for more" text="""
This is the rest of my post. Not intended for people catching up on
their blogs at 30,000 feet. Because I like to make things
difficult.
-[[template id=plugin name=opendiscussion author="[[Joey]]"]]
-[[tag type/auth]]
+[[!template id=plugin name=opendiscussion author="[[Joey]]"]]
+[[!tag type/auth]]
This plugin allows editing of Discussion pages by anonymous users who have
not logged into the wiki.
-[[template id=plugin name=openid core=1 author="[[Joey]]"]]
-[[tag type/auth]]
+[[!template id=plugin name=openid core=1 author="[[Joey]]"]]
+[[!tag type/auth]]
This plugin allows users to use their [OpenID](http://openid.net/) to log
into the wiki.
-The plugin needs the [[cpan Net::OpenID::Consumer]] perl module. The
-[[cpan LWPx::ParanoidAgent]] perl module is used if available, for added
-security. Finally, the [[cpan Crypt::SSLeay]] perl module is needed to support
+The plugin needs the [[!cpan Net::OpenID::Consumer]] perl module. The
+[[!cpan LWPx::ParanoidAgent]] perl module is used if available, for added
+security. Finally, the [[!cpan Crypt::SSLeay]] perl module is needed to support
users entering "https" OpenID urls.
This plugin has a configuration option. You can set `--openidsignup`
-[[template id=plugin name=orphans author="[[Joey]]"]]
-[[tag type/meta]]
+[[!template id=plugin name=orphans author="[[Joey]]"]]
+[[!tag type/meta]]
This plugin generates a list of possibly orphaned pages -- pages that no
other page links to.
page as linking to it, so will generally count many blog-type pages as
orphans.
-[[if test="enabled(orphans)" then="""
+[[!if test="enabled(orphans)" then="""
Here's a list of orphaned pages on this wiki:
-[[orphans pages="* and !news/* and !todo/* and !bugs/* and !users/* and
+[[!orphans pages="* and !news/* and !todo/* and !bugs/* and !users/* and
!recentchanges and !examples/* and !tips/* and !sandbox/* and !templates/* and
!wikiicons/* and !plugins/*"]]
"""]]
-[[template id=plugin name=otl author="[[Joey]]"]]
-[[tag type/format]]
+[[!template id=plugin name=otl author="[[Joey]]"]]
+[[!tag type/format]]
This plugin allows ikiwiki to process `.otl` outline files, as created by
[vimoutliner](http://www.vimoutliner.org/). To use it, you need to have
-[[template id=plugin name=pagecount author="[[Joey]]"]]
-[[tag type/meta]]
+[[!template id=plugin name=pagecount author="[[Joey]]"]]
+[[!tag type/meta]]
-Provides a \\[[pagecount ]] [[ikiwiki/PreProcessorDirective]] that is
+Provides a \\[[!pagecount ]] [[ikiwiki/PreProcessorDirective]] that is
replaced with the total number of pages currently in the wiki.
The optional parameter "pages" can be a [[ikiwiki/PageSpec]] specifying the
This plugin is included in ikiwiki, but is not enabled by default.
If it is turned on it can tell us that this wiki includes
-[[pagecount pages="* and !recentchanges"]]
-pages, of which [[pagecount pages="*/Discussion"]] are discussion pages.
+[[!pagecount pages="* and !recentchanges"]]
+pages, of which [[!pagecount pages="*/Discussion"]] are discussion pages.
-[[template id=plugin name=pagestats author="Enrico Zini"]]
-[[tag type/meta type/tags]]
+[[!template id=plugin name=pagestats author="Enrico Zini"]]
+[[!tag type/meta type/tags]]
This plugin can generate stats about how pages link to each other. It can
produce either a del.icio.us style cloud, or a table counting the number of
Here's how to use it to create a [[tag]] cloud:
- \[[pagestats pages="tags/*"]]
+ \[[!pagestats pages="tags/*"]]
And here's how to create a table of all the pages on the wiki:
- \[[pagestats style="table"]]
+ \[[!pagestats style="table"]]
-[[template id=plugin name=pagetemplate author="[[Joey]]"]]
-[[tag type/chrome]]
+[[!template id=plugin name=pagetemplate author="[[Joey]]"]]
+[[!tag type/chrome]]
This plugin allows a page to be created using a different
[[template|wikitemplates]]. The page text is inserted into the template, so
/usr/share/ikiwiki/templates (or wherever ikiwiki is configured to look for
them). You can choose to use any .tmpl files in that directory. Example:
- \[[pagetemplate template=my_fancy.tmpl]]
+ \[[!pagetemplate template=my_fancy.tmpl]]
-[[template id=plugin name=passwordauth core=1 author="[[Joey]]"]]
-[[tag type/auth]]
+[[!template id=plugin name=passwordauth core=1 author="[[Joey]]"]]
+[[!tag type/auth]]
This plugin lets ikiwiki prompt for a user name and password when logging
into the wiki. It also handles registering users, resetting passwords, and
Users' passwords are stored in the `.ikiwiki/userdb` file, which needs to
be kept safe to prevent exposure of passwords. If the
-[[cpan Authen::Passphrase]] perl module is installed, only hashes of the
+[[!cpan Authen::Passphrase]] perl module is installed, only hashes of the
passwords will be stored. This is strongly recommended.
The `password_cost` configuration option can be used to make the stored
-[[template id=plugin name=pingee author="[[Joey]]"]]
-[[tag type/special-purpose]]
+[[!template id=plugin name=pingee author="[[Joey]]"]]
+[[!tag type/special-purpose]]
This plugin causes ikiwiki to listen for pings, typically delivered from
another ikiwiki instance using the [[pinger]] plugin. When a ping is
-[[template id=plugin name=pinger author="[[Joey]]"]]
-[[tag type/special-purpose]]
+[[!template id=plugin name=pinger author="[[Joey]]"]]
+[[!tag type/special-purpose]]
This plugin allows ikiwiki to be configured to hit a URL each time it
updates the wiki. One way to use this is in conjunction with the [[pingee]]
The "to" parameter is the url to ping. The example shows how to ping
another ikiwiki instance.
-The [[cpan LWP]] perl module is used for pinging. Or the [[cpan
+The [[!cpan LWP]] perl module is used for pinging. Or the [[!cpan
LWPx::ParanoidAgent]] perl module is used if available, for added security.
-Finally, the [[cpan Crypt::SSLeay]] perl module is needed to support pinging
+Finally, the [[!cpan Crypt::SSLeay]] perl module is needed to support pinging
"https" urls.
By default the pinger will try to ping a site for 15 seconds before timing
-[[template id=plugin name=poll author="[[Joey]]"]]
-[[tag type/useful]]
+[[!template id=plugin name=poll author="[[Joey]]"]]
+[[!tag type/useful]]
This plugin allows you to create online polls in the wiki. Here's an
example use:
- \[[poll 0 "red" 0 "green" 0 "blue"]]
+ \[[!poll 0 "red" 0 "green" 0 "blue"]]
The numbers indicate how many users voted for that choice. When a user
votes for a choice in the poll, the page is modified and the number
-[[template id=plugin name=polygen author="Enrico Zini"]]
-[[tag type/fun]]
+[[!template id=plugin name=polygen author="Enrico Zini"]]
+[[!tag type/fun]]
This plugin allows inserting text generated by polygen into a wiki page.
For example:
- \[[polygen grammar="genius"]]
+ \[[!polygen grammar="genius"]]
It's also possible to specify a starting nonterminal for the grammar by
including `symbol="text"` in the directive.
-[[if test="enabled(polygen)" then="""
+[[!if test="enabled(polygen)" then="""
----
Here are a few notes about ikiwiki, courtesy of polygen:
-Ikiwiki is internally based on a [[polygen grammar="designpatterns"]]
-coupled to a [[polygen grammar="designpatterns"]], as described in
-"[[polygen grammar="paper"]]" by [[polygen grammar="nipponame"]] of
-[[polygen grammar="boyband"]].
+Ikiwiki is internally based on a [[!polygen grammar="designpatterns"]]
+coupled to a [[!polygen grammar="designpatterns"]], as described in
+"[[!polygen grammar="paper"]]" by [[!polygen grammar="nipponame"]] of
+[[!polygen grammar="boyband"]].
Ikiwiki reviews:
<ul>
-<li>[[polygen grammar="reviews"]]</li>
-<li>[[polygen grammar="reviews"]]</li>
-<li>[[polygen grammar="reviews"]]</li>
+<li>[[!polygen grammar="reviews"]]</li>
+<li>[[!polygen grammar="reviews"]]</li>
+<li>[[!polygen grammar="reviews"]]</li>
</ul>
"""]]
-[[template id=plugin name=postsparkline author="[[Joey]]"]]
-[[tag type/chrome]]
+[[!template id=plugin name=postsparkline author="[[Joey]]"]]
+[[!tag type/chrome]]
This plugin uses the [[sparkline]] plugin to create a sparkline of
statistics about a set of pages, such as posts to a blog.
# examples
Post interval:
- \[[postsparkline pages="blog/* and !*/Discussion" max=100
+ \[[!postsparkline pages="blog/* and !*/Discussion" max=100
formula=interval style=bar barwidth=2 barspacing=1 height=13]]
Posts per month this year:
- \[[postsparkline pages="blog/* and !*/Discussion" max=12
+ \[[!postsparkline pages="blog/* and !*/Discussion" max=12
formula=permonth style=bar barwidth=2 barspacing=1 height=13]]
# usage
-[[template id=plugin name=prettydate author="[[Joey]]"]]
-[[tag type/format]]
+[[!template id=plugin name=prettydate author="[[Joey]]"]]
+[[!tag type/format]]
Enabling this plugin changes the dates displayed on pages in the wiki to
a format that is nice and easy to read. Examples: "late Wednesday evening,
configuration variable in the setup file. `%X` will be expanded to the
prettified time value. The default prettydateformat is `"%X, %B %o, %Y"`.
-This plugin uses the [[cpan TimeDate]] perl module.
+This plugin uses the [[!cpan TimeDate]] perl module.
-[[template id=plugin name=rawhtml author="[[Joey]]"]]
-[[tag type/html type/format]]
+[[!template id=plugin name=rawhtml author="[[Joey]]"]]
+[[!tag type/html type/format]]
This plugin changes how ikiwiki handles html files, making it treat html
or xhtml files not as source files but as data files that are copied
-[[template id=plugin name=recentchanges core=1 author="[[Joey]]"]]
+[[!template id=plugin name=recentchanges core=1 author="[[Joey]]"]]
This plugin examines the [[revision_control_system|rcs]] history and
generates a page describing each recent change made to the wiki. These
Typically only the RecentChanges page will use the pages generated by this
plugin, but you can use it elsewhere too if you like. It's used like this:
- \[[inline pages="internal(recentchanges/change_*)"
+ \[[!inline pages="internal(recentchanges/change_*)"
template=recentchanges show=0]]
Here's an example of how to show only changes to "bugs/*".
This matches against the title of the change, which includes a list of
modified pages.
- \[[inline pages="internal(recentchanges/change_*) and title(*bugs/*)"
+ \[[!inline pages="internal(recentchanges/change_*) and title(*bugs/*)"
template=recentchanges show=0]]
Here's an example of how to show only changes that Joey didn't make.
(Joey commits sometimes as user `joey`, and sometimes via openid.)
- \[[inline pages="internal(recentchanges/change_*) and
+ \[[!inline pages="internal(recentchanges/change_*) and
!author(joey) and !author(http://joey.kitenet.net*)"
template=recentchanges show=0]]
-[[template id=plugin name=recentchangesdiff core=0 author="[[Joey]]"]]
+[[!template id=plugin name=recentchangesdiff core=0 author="[[Joey]]"]]
This plugin extends the [[recentchanges]] plugin, adding a diff for each
change. The diffs are by default hidden from display on the recentchanges
-[[template id=plugin name=rst author="martin f. krafft"]]
-[[tag type/format]]
+[[!template id=plugin name=rst author="martin f. krafft"]]
+[[!tag type/format]]
This plugin lets ikwiki convert files with names ending in ".rst" to html.
It uses the [reStructuredText](http://docutils.sourceforge.net/rst.html)
-markup syntax. You need to have [[cpan RPC::XML]], python and the
+markup syntax. You need to have [[!cpan RPC::XML]], python and the
python-docutils module installed to use it.
Note that this plugin does not interoperate very well with the rest of
-[[template id=plugin name=search author="[[Joey]]"]]
-[[tag type/useful]]
+[[!template id=plugin name=search author="[[Joey]]"]]
+[[!tag type/useful]]
This plugin adds full text search to ikiwiki, using the
[xapian](http://xapian.org/) engine, its
[omega](http://xapian.org/docs/omega/overview.html) frontend, and the
-[[cpan Search::Xapian]], [[cpan Digest::SHA1]], and [[cpan HTML::Scrubber]]
+[[!cpan Search::Xapian]], [[!cpan Digest::SHA1]], and [[!cpan HTML::Scrubber]]
perl modules.
The [[ikiwiki/searching]] page describes how to write search queries.
-[[template id=plugin name=shortcut author="[[Joey]]"]]
-[[tag type/format]]
+[[!template id=plugin name=shortcut author="[[Joey]]"]]
+[[!tag type/format]]
This plugin allows external links to commonly linked to sites to be made
more easily using shortcuts.
-[[template id=plugin name=sidebar author="Tuomo Valkonen"]]
-[[tag type/chrome]]
+[[!template id=plugin name=sidebar author="Tuomo Valkonen"]]
+[[!tag type/chrome]]
If this plugin is enabled, then a sidebar is added to pages in the wiki.
The content of the sidebar is simply the content of a page named
-[[template id=plugin name=signinedit core=1 author="[[Joey]]"]]
-[[tag type/auth]]
+[[!template id=plugin name=signinedit core=1 author="[[Joey]]"]]
+[[!tag type/auth]]
This plugin, which is enabled by default, requires users be logged in
before editing pages in the wiki.
-[[template id=plugin name=smiley author="[[Joey]]"]]
-[[tag type/chrome]]
+[[!template id=plugin name=smiley author="[[Joey]]"]]
+[[!tag type/chrome]]
This plugin makes it easy to insert smileys and other special symbols into
pages in the wiki. The symbols are all listed on the [[smileys]] page,
-[[template id=plugin name=sparkline author="[[Joey]]"]]
-[[tag type/chrome]]
+[[!template id=plugin name=sparkline author="[[Joey]]"]]
+[[!tag type/chrome]]
This plugin allows for easily embedding sparklines into wiki pages. A
sparkline is a small word-size graphic chart, that is designed to be
php can find it when `sparkline/Sparkline.php` is required.
* The GD PHP module used by the Sparkline library.
* A "php" program in the path, that can run standalone php programs.
-* [[cpan Digest::SHA1]]
+* [[!cpan Digest::SHA1]]
On a Debian system, this can be accomplished by installing these packages:
`libsparkline-php` `php5-gd` `php5-cli` `libdigest-sha1-perl`
-This plugin also uses the [[cpan Digest::SHA1]] perl module.
+This plugin also uses the [[!cpan Digest::SHA1]] perl module.
# examples
- \[[sparkline 1 3 5 -3 10 0 width=40 height=16
+ \[[!sparkline 1 3 5 -3 10 0 width=40 height=16
featurepoint="4,-3,red,3" featurepoint="5,10,green,3"]]
This creates a simple line graph, graphing several points.
-[[if test="enabled(sparkline)" then="""
-[[sparkline 1 3 5 -3 10 0 width=40 height=16
+[[!if test="enabled(sparkline)" then="""
+[[!sparkline 1 3 5 -3 10 0 width=40 height=16
featurepoint="4,-3,red,3" featurepoint="5,10,green,3"]]
"""]]
It will be drawn 40 pixels wide and 16 pixels high. The high point in the
line has a green marker, and the low point has a red marker.
- \[[sparkline 1 -1(red) 1 -1(red) 1 1 1 -1(red) -1(red) style=bar barwidth=2
+ \[[!sparkline 1 -1(red) 1 -1(red) 1 1 1 -1(red) -1(red) style=bar barwidth=2
barspacing=1 height=13]]
This more complex example generates a bar graph.
-[[if test="enabled(sparkline)" then="""
-[[sparkline 1 -1(red) 1 -1(red) 1 1 1 -1(red) -1(red)
+[[!if test="enabled(sparkline)" then="""
+[[!sparkline 1 -1(red) 1 -1(red) 1 1 1 -1(red) -1(red)
style=bar barwidth=2 barspacing=1 height=13]]
"""]]
The bars are 2 pixels wide, and separated by one pixel, and the graph is 13
-[[template id=plugin name=table author="[[VictorMoral]]"]]
-[[tag type/format]]
+[[!template id=plugin name=table author="[[VictorMoral]]"]]
+[[!tag type/format]]
This plugin can build HTML tables from data in CSV (comma-separated values)
or DSV (delimiter-separated values) format.
-It needs the perl module [[cpan Text::CSV]] for the CSV data.
+It needs the perl module [[!cpan Text::CSV]] for the CSV data.
## examples
- \[[table data="""
+ \[[!table data="""
Customer|Amount
Fulanito|134,34
Menganito|234,56
Menganito|234,56
"""]]
- \[[table class="book_record" format=csv file="data/books/record1"]]
+ \[[!table class="book_record" format=csv file="data/books/record1"]]
In this second example the `record1` page should be similar to:
To make a cell span multiple columns, follow it with one or more empty
cells. For example:
- \[[table data="""
+ \[[!table data="""
left||right|
a|b|c|d
this cell spans 4 columns|||
-[[template id=plugin name=tag author="[[Joey]]"]]
-[[tag type/tags type/link]]
+[[!template id=plugin name=tag author="[[Joey]]"]]
+[[!tag type/tags type/link]]
This plugin allows tagging pages. List tags as follows:
- \[[tag tech life linux]]
+ \[[!tag tech life linux]]
The tags work the same as if you had put a (hidden) [[ikiwiki/WikiLink]] on
the page for each tag, so you can use a [[ikiwiki/PageSpec]] match all
If you want a visible [[ikiwiki/WikiLink]] along with the tag, use taglink
instead:
- \[[taglink foo]]
- \[[taglink tagged_as_foo|foo]]
+ \[[!taglink foo]]
+ \[[!taglink tagged_as_foo|foo]]
This plugin has a configuration option. Set --tagbase=tags and links to tags
will be located under the specified base page. If ikiwiki is configured
having to write the full path to tags, if you want to keep them grouped
together out of the way.
-[[if test="enabled(tag)" then="""
+[[!if test="enabled(tag)" then="""
This wiki has the tag plugin enabled, so you'll see a note below that this
page is tagged with the "tags" tag.
"""]]
-I'd like to modify this plugin such that the tag pages are automatically created and populated with a list of relevant posts. The content of the tag page is simply `"\[[inline pages="link(tag/$tag)"]]`. The tag plugin will have to determine whether a page for the given tag already exists, and if not use that Markdown fragment to generate it.
+I'd like to modify this plugin such that the tag pages are automatically created and populated with a list of relevant posts. The content of the tag page is simply `"\[[!inline pages="link(tag/$tag)"]]`. The tag plugin will have to determine whether a page for the given tag already exists, and if not use that Markdown fragment to generate it.
There are clearly many ways to do this, but any opinions on which is the cleanest?
-[[template id=plugin name=template author="[[Joey]]"]]
-[[tag type/format]]
+[[!template id=plugin name=template author="[[Joey]]"]]
+[[!tag type/format]]
With this plugin, you can set up templates, and cause them to be filled out
and inserted into pages in the wiki. It's documented and existing templates
-[[template id=plugin name=testpagespec author="[[Joey]]"]]
-[[tag type/useful]]
+[[!template id=plugin name=testpagespec author="[[Joey]]"]]
+[[!tag type/useful]]
This plugin allows testing a [[ikiwiki/PageSpec]] to see if it matches a
page, and to see the part that matches, or causes the match to fail.
Example uses:
- \[[testpagespec pagespec="foopage and barpage" match="foopage"]]
+ \[[!testpagespec pagespec="foopage and barpage" match="foopage"]]
This will print out something like "no match: barpage does not match
foopage", highlighting which part of the [[ikiwiki/PageSpec]] is causing
the match to fail.
- \[[testpagespec pagespec="foopage or !bar*" match="barpage"]]
+ \[[!testpagespec pagespec="foopage or !bar*" match="barpage"]]
This will print out something like "no match: bar* matches barpage", since
the part of the [[ikiwiki/PageSpec]] that fails is this negated match.
- \[[testpagespec pagespec="foopage or barpage" match="barpage"]]
+ \[[!testpagespec pagespec="foopage or barpage" match="barpage"]]
This will print out something like "match: barpage matches barpage",
indicating the part of the [[ikiwiki/PageSpec]] that caused it to match.
-[[template id=plugin name=teximg author="[[PatrickWinnertz]]"]]
-[[tag type/chrome type/slow]]
+[[!template id=plugin name=teximg author="[[PatrickWinnertz]]"]]
+[[!tag type/chrome type/slow]]
This plugin renders LaTeX formulas into images.
## examples
- \[[teximg code="\ce{[Cu(NH3)3]^{2+}}"]]
- \[[teximg code="\frac{1}{2}"]]
- \[[teximg code="E = - \frac{Z^2 \cdot \mu \cdot e^4}{32\pi^2 \epsilon_0^2 \hbar^2 n^2}" ]]
+ \[[!teximg code="\ce{[Cu(NH3)3]^{2+}}"]]
+ \[[!teximg code="\frac{1}{2}"]]
+ \[[!teximg code="E = - \frac{Z^2 \cdot \mu \cdot e^4}{32\pi^2 \epsilon_0^2 \hbar^2 n^2}" ]]
To scale the image, use height=x:
- \[[teximg code="\ce{[Cu(NH3)3]^{2+}}" height="17"]]
- \[[teximg code="\ce{[Cu(NH3)3]^{2+}}" height="8"]]
+ \[[!teximg code="\ce{[Cu(NH3)3]^{2+}}" height="17"]]
+ \[[!teximg code="\ce{[Cu(NH3)3]^{2+}}" height="8"]]
If no height is choosen the default height 12 is used. Valid heights are: 8, 9,
10, 11, 12, 14, 17, 20. If another height is entered, the closest available
To add an alt text to the image, use alt="text":
- \[[teximg code="\frac{1}{2}" alt="1/2"]]
+ \[[!teximg code="\frac{1}{2}" alt="1/2"]]
See [this site](http://www.der-winnie.de/opensource/gsoc2007) for rendered images.
-[[template id=plugin name=syntax author="mazirian"]]
-[[tag type/format]]
+[[!template id=plugin name=syntax author="mazirian"]]
+[[!tag type/format]]
Textile is a versatile markup language. So here's a plugin that will use the
Textile markup language to render .txtl files in your data directory.
-You must have [[cpan Text::Textile]] installed for it to work.
+You must have [[!cpan Text::Textile]] installed for it to work.
-[[template id=plugin name=toc author="[[Joey]]"]]
-[[tag type/chrome]]
+[[!template id=plugin name=toc author="[[Joey]]"]]
+[[!tag type/chrome]]
Add a table of contents to a page:
- \[[toc ]]
+ \[[!toc ]]
The table of contents will be automatically generated based on the
headers of the page. By default only the largest headers present on the
page will be shown; to control how many levels of headers are shown, use
the `levels` parameter:
- \[[toc levels=2]]
+ \[[!toc levels=2]]
The toc plugin will take the level of the first header as the topmost
level, even if there are higher levels seen later in the file.
The table of contents will be created as an ordered list. If you want
an unordered list instead, you can change the list-style in your local
-style sheet.
\ No newline at end of file
+style sheet.
-[[template id=plugin name=toggle author="[[Joey]]"]]
-[[tag type/chrome]]
+[[!template id=plugin name=toggle author="[[Joey]]"]]
+[[!tag type/chrome]]
With this plugin you can create links on pages that, when clicked, toggle
display of other parts of the page.
Example use:
- \[[toggle id="ipsum" text="show"]]
+ \[[!toggle id="ipsum" text="show"]]
- \[[toggleable id="ipsum" text="""
+ \[[!toggleable id="ipsum" text="""
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim
ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut
aliquip ex ea commodo consequat.
- [[toggle id="ipsum" text="hide"]]
+ [[!toggle id="ipsum" text="hide"]]
"""]]
Note that you can include wiki markup in the toggleable text,
-[[template id=plugin name=txt author="[[Gabriel]]"]]
-[[tag type/format]]
+[[!template id=plugin name=txt author="[[Gabriel]]"]]
+[[!tag type/format]]
This plugin makes ikiwiki treat files with names ending in ".txt"
as wiki pages.
The only exceptions are that [[WikiLinks|WikiLink]] and
[[PreprocessorDirectives|PreprocessorDirective]] are still expanded by
-ikiwiki, and that, if the [[cpan URI::Find]] perl module is installed, URLs
+ikiwiki, and that, if the [[!cpan URI::Find]] perl module is installed, URLs
in the txt file are converted to hyperlinks.
-[[template id=plugin name=typography author="[[Roktas]]"]]
-[[tag type/format]]
+[[!template id=plugin name=typography author="[[Roktas]]"]]
+[[!tag type/format]]
This plugin, also known as
[SmartyPants](http://daringfireball.net/projects/smartypants/), translates
plain ASCII punctuation characters into ``smart'' typographic punctuation HTML
-entities. To use it, you need to have the [[cpan Text::Typography]] module
+entities. To use it, you need to have the [[!cpan Text::Typography]] module
installed.
This plugin has a configuration option. To change the attributes,
set `--typographyattributes=whatever`. See the documentation for
-[[cpan Text::Typography]] for available attributes.
+[[!cpan Text::Typography]] for available attributes.
-[[template id=plugin name=version author="[[Joey]]"]]
-[[tag type/useful]]
+[[!template id=plugin name=version author="[[Joey]]"]]
+[[!tag type/useful]]
This plugin allows inserting the version of ikiwiki onto a page.
Use is simple:
- \[[version ]]
+ \[[!version ]]
-[[template id=plugin name=wikitext author="[[Joey]]"]]
-[[tag type/format]]
+[[!template id=plugin name=wikitext author="[[Joey]]"]]
+[[!tag type/format]]
This plugin allows ikiwiki to process pages written in the original wiki
-text format. To use it, you need to have the [[cpan Text::WikiFormat]] perl
+text format. To use it, you need to have the [[!cpan Text::WikiFormat]] perl
module installed, enable the plugin, then files with the extention `.wiki`
will be processed as wiki text.
it's not really hard. This page is a complete reference to everything a
plugin might want to do. There is also a quick [[tutorial]].
-[[toc levels=2]]
+[[!toc levels=2]]
## Types of plugins
a cgi. This hook allows modifying the variables available on those
templates. The function is passed named parameters. The "page" and
"destpage" parameters are the same as for a preprocess hook. The "template"
-parameter is a [[cpan HTML::Template]] object that is the template that
+parameter is a [[!cpan HTML::Template]] object that is the template that
will be used to generate the page. The function can manipulate that
template object.
hook(type => "formbuilder_setup", id => "foo", call => \&formbuilder_setup);
hook(type => "formbuilder", id => "foo", call => \&formbuilder);
-These hooks allow tapping into the parts of ikiwiki that use [[cpan
+These hooks allow tapping into the parts of ikiwiki that use [[!cpan
CGI::FormBuilder]] to generate web forms. These hooks are passed named
parameters: `cgi`, `session`, `form`, and `buttons`. These are, respectively,
the `CGI` object, the user's `CGI::Session`, a `CGI::FormBuilder`, and a
#### `template($;@)`
-Creates and returns a [[cpan HTML::Template]] object. The first parameter
+Creates and returns a [[!cpan HTML::Template]] object. The first parameter
is the name of the file in the template directory. The optional remaining
parameters are passed to `HTML::Template->new`.
There's now a second external plugin, the [[rst]] plugin, written in
python. It uses a `proxy.py`, a helper library for ikiwiki python plugins.
-[[toc ]]
+[[!toc ]]
## How external plugins use XML RPC
XML RPC has a limitation that it does not have a way to pass
undef/NULL/None. There is an extension to the protocol that supports this,
-but it is not yet available in the [[cpan XML::RPC]] library used by
+but it is not yet available in the [[!cpan XML::RPC]] library used by
ikiwiki.
Until the extension is available, ikiwiki allows undef to be communicated
sequence. To output the next number in the sequence, all a user has to do
is write this on a wiki page:
- [[fib ]]
+ [[!fib ]]
When the page is built, the [[ikiwiki/PreProcessorDirective]] will be
replaced by the next number in the sequence.
name this time, but it generally will. This "fib" is telling ikiwiki what
kind of PreprocessorDirective to handle, namely one that looks like this:
- [[fib ]]
+ [[!fib ]]
Notice the `\&preprocess`? This is how you pass a reference to a function,
and the `preprocess` function is the one that ikiwiki will call to expand
Feel free to try it out with a simple page like this:
- [[fib ]], [[fib ]], [[fib ]], [[fib ]], [[fib ]]
+ [[!fib ]], [[!fib ]], [[!fib ]], [[!fib ]], [[!fib ]]
Looks like it works ok, doesn't it? That creates a page that lists:
It would be nice to be able to jump directly to a given point in the
sequence:
- \[[fib seed=20]], [[fib ]], [[fib ]]
+ \[[!fib seed=20]], [[!fib ]], [[!fib ]]
Just insert these lines of code inside `preprocess`, in the appropriate
spot:
-[[meta title="Revision Control Systems"]]
+[[!meta title="Revision Control Systems"]]
Ikiwiki supports using several revision control systems for storing page
histories.
[[git]] is another well-tested option.
These are all the supported revision control systems:
-[[inline pages="rcs/* and !*/Discussion and !rcs/details" archive=yes]]
+[[!inline pages="rcs/* and !*/Discussion and !rcs/details" archive=yes]]
There is a page with [[details]] about how the different systems work with
ikiwiki, for the curious.
A few bits about the RCS backends
-[[toc ]]
+[[!toc ]]
## Terminology
-[[meta title="Git"]]
+[[!meta title="Git"]]
[Git][git] is a distributed revison control system originally developed for
the Linux kernel. Ikiwiki supports storing a wiki in git.
commits edited pages to the Arch repostory, and uses the Arch
log to generate the [[RecentChanges]] page.
-Note that the tla support needs the [[cpan MailTools]] perl module.
+Note that the tla support needs the [[!cpan MailTools]] perl module.
----
-[[template id=note text="this is generated by the [[plugins/haiku]] plugin"]]
-[[haiku hint="sandbox play"]]
+[[!template id=note text="this is generated by the [[plugins/haiku]] plugin"]]
+[[!haiku hint="sandbox play"]]
----
This sandbox is also a [[ikiwiki/blog]]!
-[[inline pages="sandbox/* and !*/Discussion" rootpage="sandbox" show="4" archive="yes"]]
+[[!inline pages="sandbox/* and !*/Discussion" rootpage="sandbox" show="4" archive="yes"]]
Testing nested inlines:
-[[inline pages="sandbox/test_nested_inlines/* and !sandbox/test_nested_inlines/*/*" feeds="no"]]
+[[!inline pages="sandbox/test_nested_inlines/* and !sandbox/test_nested_inlines/*/*" feeds="no"]]
others edit pages in your wiki, then some possible security issues do need
to be kept in mind.
-[[toc levels=2]]
+[[!toc levels=2]]
----
The htmlscrubber did not block javascript in uris. This was fixed by adding
a whitelist of valid uri types, which does not include javascript.
-([[cve CVE-2008-0809]]) Some urls specifyable by the meta plugin could also
+([[!cve CVE-2008-0809]]) Some urls specifyable by the meta plugin could also
theoretically have been used to inject javascript; this was also blocked
-([[cve CVE-2008-0808]]).
+([[!cve CVE-2008-0808]]).
This hole was discovered on 10 February 2008 and fixed the same day
with the release of ikiwiki 2.31.1. (And a few subsequent versions..)
Cross Site Request Forging could be used to constuct a link that would
change a logged-in user's password or other preferences if they clicked on
the link. It could also be used to construct a link that would cause a wiki
-page to be modified by a logged-in user. ([[cve CVE-2008-0165]])
+page to be modified by a logged-in user. ([[!cve CVE-2008-0165]])
These holes were discovered on 10 April 2008 and fixed the same day with
the release of ikiwiki 2.42. A fix was also backported to Debian etch, as
hashes (using Eksblowfish).
If you use the [[plugins/passwordauth]] plugin, I recommend upgrading to
-ikiwiki 2.48, installing the [[cpan Authen::Passphrase]] perl module, and running
+ikiwiki 2.48, installing the [[!cpan Authen::Passphrase]] perl module, and running
`ikiwiki-transition hashpassword` to replace all existing cleartext passwords
with strong blowfish hashes.
This hole allowed ikiwiki to accept logins using empty passwords, to openid
accounts that didn't use a password. It was introduced in version 1.34, and
fixed in version 2.48. The [bug](http://bugs.debian.org/483770) was
-discovered on 30 May 2008 and fixed the same day. ([[cve CVE-2008-0169]])
+discovered on 30 May 2008 and fixed the same day. ([[!cve CVE-2008-0169]])
I recommend upgrading to 2.48 immediatly if your wiki allows both password
and openid logins.
This tutorial will walk you through setting up a wiki with ikiwiki.
-[[toc ]]
+[[!toc ]]
## [[Download]] and [[install]] ikiwiki.
$EDITOR index.mdwn
In the editor, you could start by entering a simple page like
-[[toggle id=page text="this one"]].
-[[toggleable id=page text="""
+[[!toggle id=page text="this one"]].
+[[!toggleable id=page text="""
Welcome to your new wiki.
All wikis are supposed to have a \[[SandBox]],
The new [[ikiwiki-makerepo]] command automates setting up a wiki in
revision control.
-[[toggle id=subversion text="Subversion"]]
-[[toggleable id=subversion text="""
+[[!toggle id=subversion text="Subversion"]]
+[[!toggleable id=subversion text="""
REPOSITORY=~/wikirepo
ikiwiki-makerepo svn $SRCDIR $REPOSITORY
"""]]
-[[toggle id=git text="Git"]]
-[[toggleable id=git text="""
+[[!toggle id=git text="Git"]]
+[[!toggleable id=git text="""
REPOSITORY=~/wiki.git
ikiwiki-makerepo git $SRCDIR $REPOSITORY
about using the git repositories.
"""]]
-[[toggle id=mercurial text="Mercurial"]]
-[[toggleable id=mercurial text="""
+[[!toggle id=mercurial text="Mercurial"]]
+[[!toggleable id=mercurial text="""
REPOSITORY=$SRCDIR
ikiwiki-makerepo mercurial $SRCDIR
"""]]
-[[toggle id=bazaar text="Bazaar"]]
-[[toggleable id=bazaar text="""
+[[!toggle id=bazaar text="Bazaar"]]
+[[!toggleable id=bazaar text="""
REPOSITORY=$SRCDIR
ikiwiki-makerepo bzr $SRCDIR
"""]]
-[[toggle id=tla text="TLA"]]
-[[toggleable id=tla text="""
+[[!toggle id=tla text="TLA"]]
+[[!toggleable id=tla text="""
REPOSITORY=~/wikirepo
tla make-archive me@localhost--wiki $REPOSITORY
tla my-id "<me@localhost>"
tla import
"""]]
-[[toggle id=monotone text="Monotone"]]
-[[toggleable id=monotone text="""
+[[!toggle id=monotone text="Monotone"]]
+[[!toggleable id=monotone text="""
# These instructions are standard instructions to import a directory into monotone
# and set it up so that you don't need any passwords to use it
REPOSITORY=~/.ikiwiki/mtn.db
This map excludes discussion pages, as well as subpages that are in feeds.
-[[map pages="* and !*/discussion and !recentchanges
+[[!map pages="* and !*/discussion and !recentchanges
and !bugs/* and !examples/*/* and !news/* and !tips/* and !plugins/*
and !sandbox/* and !todo/* and !users/*
and !*.css and !*.ico and !*.png and !*.svgz and !*.gif"]]
-[[meta title="Summer of Code"]]
+[[!meta title="Summer of Code"]]
This page includes information about ikiwiki's involvement in
[Google Summer of Code](http://code.google.com/soc/).
as a todo item, and ask us if it might work as a Summer of Code project,
but please don't add the `soc` tag yourself.
-[[inline pages="(todo/* or bugs/*) and link(soc) and !todo/done and
+[[!inline pages="(todo/* or bugs/*) and link(soc) and !todo/done and
!link(todo/done) and !bugs/done and !link(bugs/done) and
!*/Discussion" actions=yes show=0]]
Generally you will tag a page without putting a visible link on it.
The [[tag_plugin|plugins/tag]] allows you to do so, like this:
- \[[tag mytag othertag thirdtag]]
+ \[[!tag mytag othertag thirdtag]]
You can also tag a page with a visible link:
- \[[taglink mytag]]
+ \[[!taglink mytag]]
This tag will be displayed just like a regular [[ikiwiki/WikiLink]].
In another blog, I could tag a post with arbitrary words and not have to do
anything else for the software to recognize it as a tag. In Ikiwiki if you
-want to tag something \[[tag foo]] you also have to go to tags/ and create
+want to tag something \[[!tag foo]] you also have to go to tags/ and create
foo.mkdn (even if it's zero-length), because "tags are links", and links
don't actually *link* if they have no destination. This allows for
customization of how you present different tag feeds, but this (to me) is
<span class="infobox">
Plugin: <TMPL_VAR name><br />
Author: <TMPL_VAR author><br />
-Included in ikiwiki: [[if test="sourcepage(plugins/contrib/*)" then="""no""" else="""yes"""]]<br />
+Included in ikiwiki: [[!if test="sourcepage(plugins/contrib/*)" then="""no""" else="""yes"""]]<br />
Enabled by default: <TMPL_IF core>yes<TMPL_ELSE>no</TMPL_IF><br />
-Included in [[/plugins/goodstuff]]: [[if test="backlink(plugins/goodstuff)" all=no then="""yes""" else="""no"""]]<br />
-Currently enabled: [[if test="enabled(<TMPL_VAR name>)" then="yes" else="no"]]<br />
+Included in [[/plugins/goodstuff]]: [[!if test="backlink(plugins/goodstuff)" all=no then="""yes""" else="""no"""]]<br />
+Currently enabled: [[!if test="enabled(<TMPL_VAR name>)" then="yes" else="no"]]<br />
</span>
-[[if test="sourcepage(plugins/contrib/*)" then="""[[meta title="<TMPL_VAR name> (third party plugin)"]]"""]]
-<TMPL_IF core>[[tag plugins/type/core]]</TMPL_IF>
+[[!if test="sourcepage(plugins/contrib/*)" then="""[[!meta title="<TMPL_VAR name> (third party plugin)"]]"""]]
+<TMPL_IF core>[[!tag plugins/type/core]]</TMPL_IF>
<TMPL_UNLESS NAME="name">
This template is used to create an infobox for an ikiwiki plugin. It uses
these parameters:
This page is a place to document tips and techniques for using ikiwiki.
-[[inline pages="tips/* and !tips/*/*"
+[[!inline pages="tips/* and !tips/*/*"
feedpages="created_after(tips/howto_avoid_flooding_aggregators)" archive="yes"
rootpage="tips" postformtext="Add a new tip about:" show=0]]
-[[meta title="inside .ikiwiki"]]
+[[!meta title="inside .ikiwiki"]]
The `.ikiwiki` directory contains ikiwiki's internal state. Normally,
you don't need to look in it, but here's some tips for how to do so if
-[[meta title="Integrated issue tracking with Ikiwiki"]]
+[[!meta title="Integrated issue tracking with Ikiwiki"]]
-[[meta author="Joey Hess, LinuxWorld.com"]]
+[[!meta author="Joey Hess, LinuxWorld.com"]]
-[[meta copyright="""
+[[!meta copyright="""
Copyright 2007 Joey Hess <joeyh@ikiwiki.info>, LinuxWorld.com
[First published](http://www.linuxworld.com/news/2007/040607-integrated-issue-tracking-ikiwiki.html)
on [LinuxWorld.com](http://www.linuxworld.com/), a publication of Network
World Inc., 118 Turnpike Rd., Southboro, MA 01772.
"""]]
-[[meta license="[[GPL|freesoftware]]"]]
+[[!meta license="[[GPL|freesoftware]]"]]
Wikis are not just for encyclopedias and websites anymore. You can use
Ikiwiki in combination with your revision control system to handle issue
their lifecycle. A developer can take ownership of a
bug by tagging it with something like "owner/Joey".
-To tag a wiki page, edit it and add text such as "\[[tag done]]". Note that
+To tag a wiki page, edit it and add text such as "\[[!tag done]]". Note that
adding a wiki link to "\[[done]]" will have the same categorisation effect
as a tag, but the link will show up in the body of the page, which is a
nice effect if used in a sentence such as "This was \[[done]] in version
* A typical list of all open bugs, with their full text, and a form to post new
bugs.
- \[[inline pages="bugs/* and !link(done) and !*/Discussion" actions=yes postform=yes show=0]]
+ \[[!inline pages="bugs/* and !link(done) and !*/Discussion" actions=yes postform=yes show=0]]
* Index of the 30 most recently fixed bugs.
- \[[inline pages="bugs/* and link(done) and !*/Discussion" sort=mtime show=30 archive=yes]]
+ \[[!inline pages="bugs/* and link(done) and !*/Discussion" sort=mtime show=30 archive=yes]]
* Index of the 10 most recently active bugs.
- \[[inline pages="bugs/* and !link(done) and !*/Discussion" sort=mtime show=10]]
+ \[[!inline pages="bugs/* and !link(done) and !*/Discussion" sort=mtime show=10]]
* Open security issues.
- \[[inline pages="bugs/* and link(security) and !link(done) and !*/Discussion"]]
+ \[[!inline pages="bugs/* and link(security) and !link(done) and !*/Discussion"]]
* Full text of bugs assigned to Joey.
- \[[inline pages="bugs/* and link(owner/Joey) and !link(done) and !*/Discussion" show=0]]
+ \[[!inline pages="bugs/* and link(owner/Joey) and !link(done) and !*/Discussion" show=0]]
It may seem strange to consider using a wiki for issue tracking when there
are several dedicated bug tracking systems, like Bugzilla, that handle all
post it to [[bugs]] instead. Link items to [[todo/done]] when done.
<!-- currently commented out because I lost all my mtimes :-)
-[[if test="enabled(postsparkline)"
+[[!if test="enabled(postsparkline)"
then="""
How long will it take your todo item to be fixed? Well...
-[[postsparkline pages="todo/* and !todo/done and !link(todo/done) and !todo/*/*"
+[[!postsparkline pages="todo/* and !todo/done and !link(todo/done) and !todo/*/*"
max=12 ymin=10 formula=permonth style=bar barwidth=2 barspacing=1 height=13]]
this many are being added per month
-[[postsparkline pages="todo/* and !todo and link(todo/done)"
+[[!postsparkline pages="todo/* and !todo and link(todo/done)"
max=12 ymin=10 formula=permonth time=mtime style=bar barwidth=2 barspacing=1 height=13]]
while this many are being fixed.
"""]]
-->
-[[inline pages="todo/* and !todo/done and !link(todo/done) and
+[[!inline pages="todo/* and !todo/done and !link(todo/done) and
!link(patch) and !link(wishlist) and !todo/*/*"
feedpages="created_after(todo/supporting_comments_via_disussion_pages)"
actions=yes archive=yes rootpage="todo" postformtext="Add a new todo item titled:" show=0]]
>>>> Which would rule out openid, or other fun forms of auth. And routing all access
>>>> through the CGI sort of defeats the purpose of ikiwiki. --[[Ethan]]
-Also see [[debbug 443346]].
+Also see [[!debbug 443346]].
I am considering giving this a try, implementing it as a module.
Here is how I see it:
for a given (user, page, operation), as in:
<pre>
- \[[acl user=joe page=*.png allow=upload]]
- \[[acl user=bob page=/blog/bob/* allow=*]]
- \[[acl user=* page=/blog/bob/* deny=*]]
- \[[acl user=http://jeremie.koenig.myopenid.com/ page=/todo/* deny=create
+ \[[!acl user=joe page=*.png allow=upload]]
+ \[[!acl user=bob page=/blog/bob/* allow=*]]
+ \[[!acl user=* page=/blog/bob/* deny=*]]
+ \[[!acl user=http://jeremie.koenig.myopenid.com/ page=/todo/* deny=create
reason="spends his time writing todo items instead of source code"]]
</pre>
Possibly could refer to other ACL pages, as in:
<pre>
- \[[acl user=* page=/subsite/* acl=/subsite/acl.mdwn]]
+ \[[!acl user=* page=/subsite/* acl=/subsite/acl.mdwn]]
</pre>
any feed.
I found that the problem only occurs in the presence of a file that
-contains \[[inline pages="*"]].
+contains \[[!inline pages="*"]].
> How is this unexpected? By inlining _every_ page in the wiki, you're
> making that page depend on every other page; any change to any page in
> N+1th page that its PageSpec matches is a no-op.
> --[[Joey]]
-[[tag done]]
+[[!tag done]]
Here's a short script for replicating the bug. Just cut and paste this
to a shell, (it will only muck in a new /tmp/ikiwiki-test directory
cd /tmp
mkdir ikiwiki-test; cd ikiwiki-test; mkdir src
- echo '\[[inline pages="blog/*"]]' > src/myblog.mdwn
+ echo '\[[!inline pages="blog/*"]]' > src/myblog.mdwn
mkdir src/blog; echo "A blog entry" > src/blog/entry.mdwn
echo 'use IkiWiki::Setup::Standard {
srcdir => "src",
echo "not a blog entry" > src/not-a-blog.mdwn
ikiwiki --setup setup
ls -l --time-style=full-iso output/myblog/index.rss
- echo '\[[inline pages="*"]]' > src/archives.mdwn
+ echo '\[[!inline pages="*"]]' > src/archives.mdwn
ikiwiki --setup setup
ls -l --time-style=full-iso output/myblog/index.rss
echo "still not blogging" >> src/not-a-blog.mdwn
done
$ ls -l --time-style=full-iso output/myblog/index.rss
-rw-r--r-- 1 cworth cworth 459 2007-06-01 06:34:36.000000000 -0700 output/myblog/index.rss
- $ echo '\[[inline pages="*"]]' > src/archives.mdwn
+ $ echo '\[[!inline pages="*"]]' > src/archives.mdwn
$ ikiwiki --setup setup
refreshing wiki..
scanning archives.mdwn
--[[JoshTriplett]]
-[[tag soc]]
+[[!tag soc]]
[[wishlist]]
--
1.5.2.2
-[[tag patch]]
+[[!tag patch]]
> be a good idea to check out current git master before spending time on
> patches in the future. Thanks for the work anyway.. --[[Joey]]
-[[tag done]]
+[[!tag done]]
--- IkiWiki/Plugin/mdwn.pm.orig 2008-03-08 11:33:50.000000000 +0100
+++ IkiWiki/Plugin/mdwn.pm 2008-03-08 13:37:21.000000000 +0100
-- [[HenrikBrixAndersen]]
-[[tag patch]]
+[[!tag patch]]
-[[tag wishlist]]
-[[tag patch]]
+[[!tag wishlist]]
+[[!tag patch]]
-In our team internal wiki, we wish to impose a policy that all edits must have a comment. Patch in [[debbug 450620]].
+In our team internal wiki, we wish to impose a policy that all edits must have a comment. Patch in [[!debbug 450620]].
> Good idea! I also hate empty commit comments, but I know that it's also a matter
> of human mentality. Of course, you can forbid users to commit empty comments,
[scmbug](http://www.mkgnu.net/?q=scmbug) might help here. --[[JoshTriplett]]
-[[tag soc]]
+[[!tag soc]]
-[[tag wishlist]]
+[[!tag wishlist]]
----
-[[users/arpitjain]]
-[[tag patch]]
+[[!tag patch]]
--[[JasonBlevins]], March 23, 2008 21:41 EDT
-[[tag soc]] [[tag wishlist]]
+[[!tag soc]] [[!tag wishlist]]
In some situations, it makes sense to have the repository in use by ikiwiki reside on a different machine. In that case, one could juggle SSH keys for the `post-update` hook. A better way may be to provide a different `do` parameter handler for the CGI, which would pull new commits to the working clone and refresh the wiki. Then, the remote `post-update` hook could just `wget` that URL. To prevent simple DoS attacks, one might assign a simple password.
-[[tag wishlist]]
+[[!tag wishlist]]
> [[done]] via the pinger and pingee plugins --[[Joey]]
It would be nice to specify a minimum length for the change log for web edits, and if it's only required vs. non-required. I realise this is not going to solve the problem of crap log messages, but it helps guard against accidental submissions which one would have logged. Mediawiki/wikipedia has that option, and I find it a useful reminder. --[[madduck]]
-[[tag wishlist]]
+[[!tag wishlist]]
-[[tag wishlist]]
+[[!tag wishlist]]
A useful item, I think, would be for an option to disable certain pages from being indexed.
--[[Joey]]
-[[tag soc]]
+[[!tag soc]]
-[[tag wishlist]]
+[[!tag wishlist]]
----
Plugin can be downloaded from [here](http://myweb.unomaha.edu/~ajain/gallery.tar).
It can be used as : <br>
-\[[gallery imagedir="images" thumbnailsize="200x200" cols="3" alt="Can not be displayed" title="My Pictures"]]
+\[[!gallery imagedir="images" thumbnailsize="200x200" cols="3" alt="Can not be displayed" title="My Pictures"]]
where-<br>
* imagedir => Directory containing images. It will scan all the files with jpg|png|gif extension from the directory and will put it in the gallery.<br>
Additional details are available [here](http://myweb.unomaha.edu/~ajain/ikiwikigallery.html).
-[[tag patch]]
+[[!tag patch]]
> I'd love to merge this into ikiwiki.
>
-[[tag wishlist patch]]
+[[!tag wishlist patch]]
# Context
My current plan is :
-- thanks to the edittemplate plugin, `/view/dev/*` and `/view/howto/*` would contain respectively `\[[template id=dev_direction]]` and `\[[template id=howto_usage]]`
+- thanks to the edittemplate plugin, `/view/dev/*` and `/view/howto/*` would contain respectively `\[[!template id=dev_direction]]` and `\[[!template id=howto_usage]]`
- `/templates/dev_direction.mdwn` and `/templates/howto_usage.mdwn` would use `\[[!map ...]]` directives to build their views
# My issue
page inserting the template. But `BASENAME` does not exist. I found
that `<TMPL_VAR PAGE>` is replaced with the full path to the page, but
I did not found how to get the page's basename in a template included
-with a `\[[template id=...]]` directive.
+with a `\[[!template id=...]]` directive.
Any idea ?
most possible of these pages.
> The following patch adds a `basename` `TMPL_VAR` variable that can be
-> used in the templates inserted by \[[template plugin]] :
+> used in the templates inserted by \[[!template plugin]] :
> diff --git a/IkiWiki/Plugin/template.pm b/IkiWiki/Plugin/template.pm
> index a6e34fc..bb9dd8d 100644
See also: [[bugs/tags_base_dir_not_used_when_creating_new_tags]]
-[[tag wishlist]]
+[[!tag wishlist]]
>
> This could also be implemented using a combination of raw inline and meta
> to change the title (add a "redirected from etc." page. This could be done
-> with a plugin. A redirect page would be [[redirect page="newpage"]].
+> with a plugin. A redirect page would be [[!redirect page="newpage"]].
> But then if you click "edit" on this redirect page, you won't be able
> to edit the new page, only the call to redirect.
> --Ethan
-----
-[[tag patch]]
+[[!tag patch]]
This is my second cut at a feature like that requested here.
It can also be found [here](http://ikidev.betacantrips.com/patches/move.patch).
* The inability to use spaces in wikilinks or link text
* The requirement to use a trailing space on a preprocessor directive
- with no arguments, such as `\[[toc ]]`
+ with no arguments, such as `\[[!toc ]]`
--[[JoshTriplett]]
-[[done]] in version 2.21, using the '!'-prefixed syntax. --[[JoshTriplett]]
\ No newline at end of file
+[[done]] in version 2.21, using the '!'-prefixed syntax. --[[JoshTriplett]]
[[plugins/search]] could provide [OpenSearch](http://www.opensearch.org/)
metadata. Various software supports OpenSearch (see the Wikipedia article on
-[[wikipedia OpenSearch]]); in particular, browsers like Firefox and Iceweasel
+[[!wikipedia OpenSearch]]); in particular, browsers like Firefox and Iceweasel
will automatically discover an OpenSearch search and offer it in the search
box.
-Currently, the page title (either the name of the page or the title specified with `\[[meta title="..."]]`) shows up in a `<div class="header">`. I tend to follow the [w3c guideline recommending the use of h1 for the title](http://www.w3.org/QA/Tips/Use_h1_for_Title); for this purpose, how about an option to make the page title an `<h1 class="header">`, and shift the markdown headings down by one (making # an h2, ## an h3, etc; or alternatively making # equivalent to `\[[meta title="..."]]`)?
+Currently, the page title (either the name of the page or the title specified with `\[[!meta title="..."]]`) shows up in a `<div class="header">`. I tend to follow the [w3c guideline recommending the use of h1 for the title](http://www.w3.org/QA/Tips/Use_h1_for_Title); for this purpose, how about an option to make the page title an `<h1 class="header">`, and shift the markdown headings down by one (making # an h2, ## an h3, etc; or alternatively making # equivalent to `\[[!meta title="..."]]`)?
> The reason I don't use a h1 for the navbar is that while it incorporates
> the page title, it's not just a page title, it has the links to parent pages.
[[madduck]]: Update: I did try setting `templates` in `ikiwiki.setup` but could not get it to work. Then I found in the code that ikiwiki already checks that dir before the `/usr/share/ikiwiki` one, and tried it again, and now it works... sorry.
-Thus [[taglink done]].
\ No newline at end of file
+Thus [[!taglink done]].
\ No newline at end of file
> I would really like for some additional TMP variables to be present in the rss template as well. For the inline page template, the CTIME TMPL_VAR results in nice phrases like: <q>Posted late Tuesday morning, November 13th, 2007</q>, and it would be neat to let the planet Debian people see that as well :-) Manoj
-[[tag wishlist]]
+[[!tag wishlist]]
> Not that I'm opposed to the idea of a plugin that adds a Raw link
> --[[Joey]]
-[[tag wishlist]]
+[[!tag wishlist]]
-[[tag patch]]
+[[!tag patch]]
Here's my next version of the patch - still a work in progress.
* If you specify an event preprocessor in a post, such as:
- [[event time="2008-06-24"]]
+ [[!event time="2008-06-24"]]
That date will be used instead of the post creation time when displaying the calendar.
> I agree that a plugin would probably be more cumbersome, but it is very
> doable. It might look something like this:
- \[[link bar]]
+ \[[!link bar]]
- \[[link bar=VeryLongPageName]]
+ \[[!link bar=VeryLongPageName]]
>> This is, however, still missing specifying the link text, and adding that option would seem to me to complicate the plugin syntax a lot, unless support is added for the |-syntax for specifying a particular parameter to every plugin.
>> ... Returning to this, the syntax infact wouldn't be so bad with the |-syntax, given a short name for the plugin:
[[whatever|ref 1]]
- \[[ref 1=page_with_long_name]]
+ \[[!ref 1=page_with_long_name]]
>>> A way to do this that doesn't need hacking at the preprocessor syntax
>>> follows: --[[Joey]]
- \[[link bar=1]]
- \[[dest 1=page_with_long_name]]
+ \[[!link bar=1]]
+ \[[!dest 1=page_with_long_name]]
>>>> But this doesn't work so well for links that aren't valid keys. Such
>>>> as stuff with spaces in it. I'd like to be able to write any kind of
>>>>> You're right, and to fix that it could be turned around: --[[Joey]]
- \[[link 1=bar]]
- \[[dest 1=page_with_long_name]]
+ \[[!link 1=bar]]
+ \[[!dest 1=page_with_long_name]]
>> It also shouldn't be difficult to support non-wiki links in this same
>> way, so that you could still link everywhere in an uniform manner, as
>
> IMHO, what you really want is [[Moving_pages]]. :-) --[[Joey]]
-[[tag wishlist]]
+[[!tag wishlist]]
Perhaps ikiwiki should support XML-RPC-based blogging, using the [standard
MetaWeblog protocol](http://www.xmlrpc.com/metaWeblogApi). This would allow
-the use of applets like [[debpkg gnome-blog]] to post to an ikiwiki blog. The
+the use of applets like [[!debpkg gnome-blog]] to post to an ikiwiki blog. The
protocol supports multiple blog names, so one standard URL with page names as
blog names would work. --[[JoshTriplett]]
>> I'd love to see support for this and would be happy to contribute towards a bounty (say US$100) :-). [PmWiki](http://www.pmwiki.org/) has a plugin which [implements this](http://www.pmwiki.org/wiki/Cookbook/XMLRPC) in a way which seems fairly sensible as an end user. --[[AdamShand]]
-[[tag soc]]
+[[!tag soc]]
-[[tag wishlist]]
+[[!tag wishlist]]
-[[tag wishlist]]
+[[!tag wishlist]]
It'd be nice to be allowed to insert tabs into the textarea, as opposed to
having to insert 4-spaces for lists/etc. This would require JavaScript to
my blog to simply consist of all pages that have been tagged. That is,
I'd like to have my blog page look like this:
- \[[inline pages="link(tag/*)"]]
+ \[[!inline pages="link(tag/*)"]]
That doesn't work in ikiwiki 2.1, but I have it
[working](http://www.cworth.org/blog) with the following patch:
-Here is a patch [[tag patch]] to add a *forward*ing functionality
+Here is a patch [[!tag patch]] to add a *forward*ing functionality
to the [[`meta`_plugin|plugins/meta]].
> [[done]], with some changes --[[Joey]]
**OPT_DELAY** = delay=**D** | empty (*immediatelly*)
-\[[meta forward="**WHITHER**" **OPT_DELAY**]]
+\[[!meta forward="**WHITHER**" **OPT_DELAY**]]
# Extensions and Ideas
-[[tag wishlist]]
+[[!tag wishlist]]
An option to have absolute urls in wikilinks instead of relative ones would be useful,
for pages included into other pages out of the wiki rendering process (shtml for example)
-since these pages can be included from a subdir. Ditto, links from \[[ inline ..]] or \[[map ..]].
+since these pages can be included from a subdir. Ditto, links from \[[!inline ..]] or \[[!map ..]].
> You can make a wikilink absolute by prefixing it with a /, see
> [[ikiwiki/subpage/linkingrules/]]. Pagespecs match absolute by default. But what do
> change. --Ethan
>> I want the "last pages" in my sidebar. and some links to a few special pages.
->> \[[inline ]] or \\[[map ]] in the sidebar is a bad idea, (because each update rebuilds
+>> \[[!inline ]] or \\[[!map ]] in the sidebar is a bad idea, (because each update rebuilds
>> all the wiki), so I use server-side-include instead of the sidebar plugin;
>> this reduces the dependencies
>> my sidebar is generated as http://foo.org/menu/index.html, so all the links generated by
->> \[[inline ]] or \[[map ]] are relative to this position.
+>> \[[!inline ]] or \[[!map ]] are relative to this position.
>> Included from http://foo.org/section/sub/blah/index.shtml, the links are broken.
>>
>> — NicolasLimare
The aggregate plugin's handling of http 301 (moved permanently) could be
-improved. Per [[rfc 1945]]:
+improved. Per [[!rfc 1945]]:
> The requested resource has been assigned a new permanent URL
> and any future references to this resource should be done
> "ikiwiki-transition aggregateinternal $setupfile" moves the pages around,
> although it doesn't update the pagespecs (I wouldn't know how...) --[[smcv]]
-[[tag patch done]]
+[[!tag patch done]]
-[[tag wishlist]]
+[[!tag wishlist]]
It would be cool if the CGI could be used to render dynamic pages. For instance, I might want to create a page with a `\[[map]]` according to a [[pagespec]] to be passed in the query string, instead of creating/hardcoding all possible pagespecs I might want to call.
> I agree that having this as an option is reasonable. Although it would
> take a fair amount of work. --[[Joey]]
-[[tag wishlist]]
+[[!tag wishlist]]
srcdir. This would allow the admin to review them, and manually
add/delete them before they bloat history.
-[[tag wishlist]]
+[[!tag wishlist]]
Also see: <http://madduck.net/blog/2008.01.06:new-blog/> and <http://users.itk.ppke.hu/~cstamas/code/ikiwiki/autocreatetagpage/>
-[[tag wishlist]]
+[[!tag wishlist]]
I would love to see this as well. -- dato
Together with the ability to have
[[wiki-formatted_comments|wiki-formatted_comments_with_syntax_plugin]],
-this would allow the use of ikiwiki for [[wikipedia literate programming]].
+this would allow the use of ikiwiki for [[!wikipedia literate programming]].
* I have started something along these lines see [[plugins/contrib/sourcehighlight]]. For some reason I started with source-highlight [[DavidBremner]]
our $version='unknown'; # VERSION_AUTOREPLACE done by Makefile, DNE
</pre>
-[[tag patch]]
+[[!tag patch]]
I am serving notice that I am starting work on a calendar plugin inspired by Blosxom's calendar plugin. The current plan is to create a plugin that looks through all the source files matching a certain pagespec, and optionally spit out a month view for the specified month (default to current), or spit out a year view for a given year (defaulting to the current year), of a list of year with posts in them. The output would be a table, with the same CSS directives that the Blosxom plugin used to use (so that I can just reuse my css file). The links would be created to a $config{archivedir}/$year or $config{archivedir}/$year-$month file, which can just have
- \[[inline pages="blog/* and !*/Discussion and creation_year($year) and creation_month($month)" rss="no" atom="no" show="0"]]
+ \[[!inline pages="blog/* and !*/Discussion and creation_year($year) and creation_month($month)" rss="no" atom="no" show="0"]]
or some thing to generate a archive of postings.
This plugin is inspired by the calendar plugin for Blosxom, but derivesno code from it. This plugin is essentially a fancy front end to archives of previous pages, usually used for blogs. It can produce a calendar for a given month, or a list of months for a given year. To invoke the calendar, just use the preprocessor directive:
- \[[calendar ]]
+ \[[!calendar ]]
or
- \[[calendar type="month" pages="blog/* and !*/Discussion"]]
+ \[[!calendar type="month" pages="blog/* and !*/Discussion"]]
or
- \[[calendar type="year" year="2005" pages="blog/* and !*/Discussion"]]
+ \[[!calendar type="year" year="2005" pages="blog/* and !*/Discussion"]]
The year and month entities in the out put have links to archive index pages, which are supposed to exist already. The idea is to create an archives hierarchy, rooted in the subdirectory specified in the site-wide customization variable, archivebase. archivebase defaults to "archives". Links are created to pages "$archivebase/$year" and "$archivebase/$year/$month". The idea is to create annual and monthly indices, for example, by using something like this sample from my archives/2006/01.mdwn
- \[[meta title="Archives for 2006/01"]]
- \[[inline rootpage="blog" atom="no" rss="no" show="0" pages="blog/* and !*/Discussion and creation_year(2006) and creation_month(01)" ]]
+ \[[!meta title="Archives for 2006/01"]]
+ \[[!inline rootpage="blog" atom="no" rss="no" show="0" pages="blog/* and !*/Discussion and creation_year(2006) and creation_month(01)" ]]
I'll send in the patch via email.
> > I'm sending in an updated package, and have removed the older version you had here.--ManojSrivastava
-[[tag patch]]
+[[!tag patch]]
----
>> wouldn't embed the feed link into `<head>` so that browsers can automatically
>> find it.
-[[tag wishlist]]
+[[!tag wishlist]]
> recognise such commit messages when parsing the logs. Do that and extend
> to the other modules and I'll accept it. --[[Joey]]
-[[tag patch]]
+[[!tag patch]]
<pre>
--- IkiWiki/Rcs/svn.pm (revision 2650)
> `<span>`. A preprocessor directive is not really any less ugly than html
> tags, though at least it could play nicely with nested markdown: --[[Joey]]
>
-> \[[color red,green """
+> \[[!color red,green """
> Xmas-colored markdown here
> """]]
I'd like to see some way to conditionally include wiki text based on
whether the wiki enables or disables certain features. For example,
-[[ikiwiki/formatting]], could use `\[[if (enabled smiley) """Also, because
+[[ikiwiki/formatting]], could use `\[[!if (enabled smiley) """Also, because
this wiki has the smiley plugin enabled, you can insert \[[smileys]] and
some other useful symbols."""]]`, and a standard template for [[plugins]]
pages could check for the given plugin name to print "enabled" or
> As to the syntax, to fit it into standard preprocessor syntax, it would
> need to look something like this:
>
-> \[[if test="enabled(smiley)" """foo"""]]
+> \[[!if test="enabled(smiley)" """foo"""]]
>
> --[[Joey]]
>>
>> A few use cases for `included`, which I would really like to see:
>>
->> * On the sidebar page, you could say something like \[[if test="!included"
+>> * On the sidebar page, you could say something like \[[!if test="!included"
>> """This page, without this help message, appears as a sidebar on all
>> pages."""]]. The help text would then only appear on the sidebar page
>> itself, not the sidebar included on all pages.
Is there a way to test features other than plugins? For example,
to add to [[ikiwiki/Markdown]] something like
- \[[if test="enabled(multimarkdown)" then="You can also use..."]]
+ \[[!if test="enabled(multimarkdown)" then="You can also use..."]]
(I tried it like that just to see if it would work, but I wasn't that lucky.)
--ChapmanFlack
[[done]] --[[Joey]]
-[[tag patch]]
+[[!tag patch]]
-- [Thomas Schwinge](mailto:tschwinge@gnu.org)
-[[toggle text="show"]]
-[[toggleable text="""
+[[!toggle text="show"]]
+[[!toggleable text="""
# Support for the darcs rcs, <URL:http://darcs.net/>.
# Copyright (C) 2006 Thomas Schwinge <tschwinge@gnu.org>
#
`rcs_commit()` uses backticks instead of `system()`, to prevent darcs' output being sent to the browser and mucking with the HTTP headers (`darcs record` has no --quiet option). And `rcs_recentchanges()` uses regexes rather than parsing darcs' XML output.
-[[toggle text="show" id="bma"]]
-[[toggleable id="bma" text="""
+[[!toggle text="show" id="bma"]]
+[[!toggleable id="bma" text="""
#!/usr/bin/perl
Well, here's my version too. It only does getctime -- using a real XML parser, instead of regexp ugliness -- and maybe recentchanges, but that may be bitrotted, or maybe I never finished it, as I only need the getctime. As for actual commits, I have previously voiced my opinion, that this should be done by the plugin generating a patch bundle, and forwarding it to darcs in some way (`darcs apply` or even email to another host, possibly moderated), instead of the hacky direct modification of a working copy. It could also be faster to getctime in a batch. Just reading in all the changes the first time they're needed, might not be a big improvement in many cases, but if we got a batch request from ikiwiki, we could keep reaing the changes until all the files in this batch request have been met. --[[tuomov]]
-[[toggle text="show" id="tuomov"]]
-[[toggleable id="tuomov" text="""
+[[!toggle text="show" id="tuomov"]]
+[[!toggleable id="tuomov" text="""
<pre>
#!/usr/bin/perl
# Stubs for no revision control.
It's got couple of FIXMEs, and a very site-specific filter for recentchanges. Not sure how to do that better though. I will eventually add web commits, probably of my own (and mention it here).
-[[tag patch]]
+[[!tag patch]]
>>> might move it to the contributed plugins directory as it's a bit
>>> specialised to be included in ikiwiki though. --[[Joey]]
-[[tag patch]]
+[[!tag patch]]
Would each page be its own individual blog? Or its own blog post? To me it seems like an entire wiki can be viewed as a blog, with threaded or unthreaded comments underneath.
-[[tag soc]]
+[[!tag soc]]
-[[inline pages="sandbox/castle/discussion/* and !sandbox/castle/discussion/*/*" rootpage="sandbox/castle/discussion"]]
\ No newline at end of file
+[[!inline pages="sandbox/castle/discussion/* and !sandbox/castle/discussion/*/*" rootpage="sandbox/castle/discussion"]]
\ No newline at end of file
I don't like foo. Have you tried living without foo?
-[[inline pages="sandbox/castle/discussion/Don__39__t_like_foo/*" rootpage="sandbox/castle/discussion/Don__39__t_like_foo"]]
\ No newline at end of file
+[[!inline pages="sandbox/castle/discussion/Don__39__t_like_foo/*" rootpage="sandbox/castle/discussion/Don__39__t_like_foo"]]
\ No newline at end of file
recently fixed [[TODO]] items
-[[inline pages="link(todo/done) and !todo and !*/Discussion" sort=mtime show=10]]
+[[!inline pages="link(todo/done) and !todo and !*/Discussion" sort=mtime show=10]]
-[[tag wishlist]]
+[[!tag wishlist]]
Given that ikiwiki has a suggested use as a tool for developers, I was thinking it might be cool if ikiwiki had [Doxygen](http://www.doxygen.org/) support. I'm not exactly sure how the integration would work. Something along the lines of a plugin to support .dox files would be my first thought. I'd leave generating the documentation from any source files for a separate run of Doxygen - it'd be easier and you probably don't want the source being edited over the web.
>> Hmmm, what do you mean? Adding a syntax such as the one below?
>> Or something else?
- \[[if test="map(" then="..." else="..."]]
+ \[[!if test="map(" then="..." else="..."]]
>> What would you write in the `then` clause?
>> I'm not opposed at all to rewrite my two-liner, but I don't understand.
>> --[[intrigeri]]
- \[[if test="foo/*" then="""
- [[map pages="foo/*"]]
+ \[[!if test="foo/*" then="""
+ [[!map pages="foo/*"]]
""" else="no pages"]]
--[[Joey]]
qr/(^|\/).svn\//, qr/.arch-ids\//, qr/{arch}\//],
wiki_link_regexp => qr/\[\[(?:([^\]\|]+)\|)?([^\s\]#]+)(?:#([^\s\]]+))?\]\]/,
-[[tag patch]]
+[[!tag patch]]
This lets the site administrator have a `.htaccess` file in their underlay
directory, say, then get it copied over when the wiki is built. Without
That way I have revision control on that file too. That may be a security concern, but I trust everybody that has svn commit
access and such .htaccess files should not be accessible through wiki cgi. Of course, it could default to 'off'.
-> See [[debbug 447267]] for a patch for this.
+> See [[!debbug 447267]] for a patch for this.
---
and htaccess is for limiting access to some areas of wiki.
It should be off by default of course. --Max
-[[tag patch]]
+[[!tag patch]]
ikiwiki could display a reasonable message to the user, indicating what
they've done wrong.)
-[[tag soc done]]
+[[!tag soc done]]
height, compression, etc. which could be initially created by 'ikiwiki --generate-meta-stuff'.
Then PageSpec should be
teached to use these. Galleries could then be generated by means of
-\[[inline pages="type(image/*) and year(2007)" template="gallery"]]. It
+\[[!inline pages="type(image/*) and year(2007)" template="gallery"]]. It
should of course be possible to edit this information via ikiwiki.cgi and with any
text editor (Name: value). This should also allow for creations of default .html pages with
the image/video/file/... and a discussion page. Probably named image.mdwn and image/discussion.
--Ryan Koppenhaver
## Original patch
-[[tag patch]]
+[[!tag patch]]
<pre>
Index: debian/changelog
and search/sort pages by distance to a given location, as well as
showing page locations on a map (Google Map, OpenStreetMap, etc). -- [[users/vibrog]]
-[[tag wishlist]]
+[[!tag wishlist]]
--[[Joey]]
-[[tag patch done]]
+[[!tag patch done]]
the user or by the script?), it could also set `GIT_COMMITTER_NAME` and
`GIT_COMMITTER_EMAIL` to the same values. --[[JoshTriplett]]
-> See [[debbug 451023]] for a [[patch]] --[[Joey]]
+> See [[!debbug 451023]] for a [[patch]] --[[Joey]]
[[done]]
How about a plugin providing a
[[preprocessor_directive|ikiwiki/preprocessordirective]] to render a
-[[debpkg graphviz]] file as an image via one of the graphviz programs
+[[!debpkg graphviz]] file as an image via one of the graphviz programs
("dot" by default) and include the resulting image on the page, using the
"cmapx" image map format? graphviz files themselves could also render the
same way into an HTML file with the same basename as the graphviz file;
> INSTALLMAN1DIR (though MakeMaker lacks one for man8). I'd prefer not
> adding new variables where MakeMaker already has them. --[[Joey]]
-[[tag patch]]
+[[!tag patch]]
<pre>
below, concerns wanting to use foo/index.mdwn source files and get an
output page name of foo, rather than foo/index. --[[Joey]]
-[[tag patch]]
+[[!tag patch]]
---
Here is a patch for the [[plugins/meta]] plugin. It adds the possibility to define the language
-used for a page, with \[[meta lang="ja"]]
+used for a page, with \[[!meta lang="ja"]]
It doesn't insert the langage information in the xhtml meta elements, but defines a LANG
variable to use in the templates, for example with
> Please resolve lang somewhere reusable rather than within meta plugin: It is certainly usable outside
> the scope of the meta plugin as well. --[[JonasSmedegaard]]
-[[tag wishlist patch plugins/meta translation]]
+[[!tag wishlist patch plugins/meta translation]]
How about a plugin adding a
[[preprocessor_directive|ikiwiki/preprocessordirective]] to render some given LaTeX
and include it in the page? This could either render the LaTeX as a PNG via
-[[debpkg dvipng]] and include the resulting image in the page, or perhaps
+[[!debpkg dvipng]] and include the resulting image in the page, or perhaps
render via [HeVeA](http://pauillac.inria.fr/~maranget/hevea/index.html),
[TeX2page](http://www.ccs.neu.edu/~dorai/tex2page/tex2page-doc.html), or
similar. Useful for mathematics, as well as for stuff like the LaTeX version
> I'm thinking about renameing the preprocessor directive to teximg.
-> \[[teximg code="" alt="foo"]] makes sense.. Would it make sense to rename
+> \[[!teximg code="" alt="foo"]] makes sense.. Would it make sense to rename
> the whole plugin, or do you think that other tex stuff should go in this
> same plugin?
>
> --[[Joey]]
-[[tag soc]]
-[[tag wishlist]]
+[[!tag soc]]
+[[!tag wishlist]]
--[[madduck]]
-[[tag wishlist]]
+[[!tag wishlist]]
--[[madduck]]
-[[tag wishlist]]
+[[!tag wishlist]]
> So the idea is you'd write something like:
>
-> \[[meta rcsid="$Id$"]]
+> \[[!meta rcsid="$Id$"]]
>
> And this would be put at the bottom of the page or somewhere like that by
> the template?
There should be a way to add metadata to a page. Probably a plugin could do
this, for example:
- \[[meta foo="bar"]]
+ \[[!meta foo="bar"]]
Uses for this include:
except it doesn't have to show up in the page text.
* Recording page licenses.
-[[meta link=done]]
-[[meta title="supporting metadata..."]]
-[[meta author="Joey Hess"]]
-[[meta link="foo.css" rel="stylesheet" type="text/css"]]
+[[!meta link=done]]
+[[!meta title="supporting metadata..."]]
+[[!meta author="Joey Hess"]]
+[[!meta link="foo.css" rel="stylesheet" type="text/css"]]
[[todo/done]]
# Allow generating feeds even if not generated by default?
#allowrss => 1,
-[[tag patch]]
+[[!tag patch]]
> Hmm, recentchanges is just a blog. Of course the word "blog" is perhaps
> being used in too broad a sense here, since it tends to imply personal
something like this:
<pre>
-[[missingparents pages="posts/* and !posts/*/*" generate="""[[template id=year text="$page"]]"""]]
-[[missingparents pages="posts/*/* and !posts/*/*/*" generate="""[[template id=month text="$page"]]"""]]
-[[missingparents pages="posts/*/*/* and !posts/*/*/*/*" generate="""[[template id=day text="$page"]]"""]]
+[[!missingparents pages="posts/* and !posts/*/*" generate="""[[!template id=year text="$page"]]"""]]
+[[!missingparents pages="posts/*/* and !posts/*/*/*" generate="""[[!template id=month text="$page"]]"""]]
+[[!missingparents pages="posts/*/*/* and !posts/*/*/*/*" generate="""[[!template id=day text="$page"]]"""]]
</pre>
And it scans the whole wiki for pages that match the pagespecs but are missing
+ my %params=@_;
+
+ if (! defined $params{pages} || ! defined $params{generate}) {
-+ return "[[missingparents ".gettext("missing pages or generate parameter")."]]";
++ return "[[!missingparents ".gettext("missing pages or generate parameter")."]]";
+ }
+
+ push @pagespecs, \%params;
my $page=shift;
</pre>
-[[tag patch]]
+[[!tag patch]]
+
+</div>
-[[tag patch]]
+[[!tag patch]]
> Unfortunately, the inlinepage content passes through markdown, and markdown
> gets confused by these nested div's and puts p's around one of them, generating
>> alternatives is always a good thing and perhaps, the fact that pandoc can make markdown->LaTeX
>> conversion may lead to new possibilities. --[[Roktas]]
->>> I confirm that this ([[debbug 405058]]) has just been fixed in markdown
+>>> I confirm that this ([[!debbug 405058]]) has just been fixed in markdown
>>> [`1.0.2b7`](http://packages.debian.org/experimental/web/markdown) (BTW, thanks to your bug
>>> report Joey). FYI, I've observed some performance drop with `1.0.2b7` compared to `1.0.1`,
>>> especially noticable with big files. This was also confirmed by someone else, for example,
--[[bma]]
-[[tag wishlist]]
+[[!tag wishlist]]
--[[Joey]]
-[[tag wishlist]]
+[[!tag wishlist]]
>
> For example, I *think* you can unambiguously parse the following:
>
-> \[[if test="enabled(template) and templates/foo" then="""
-> [[template id=foo content="""Flying Purple People Eater"""]]
+> \[[!if test="enabled(template) and templates/foo" then="""
+> [[!template id=foo content="""Flying Purple People Eater"""]]
> """]]
>
> --[[JoshTriplett]]
+1
</pre>
-[[tag patch]]
+[[!tag patch]]
> This looks really interesting. It reminds me of XPath and its conditionals.
> Those might actually work well adapted to pagespecs. For instance, to write
>>> Sure, a plugin is just a perl library so can easily be packaged
>>> separately.
-[[tag wishlist]]
+[[!tag wishlist]]
-[[tag wishlist]]
+[[!tag wishlist]]
For sending out password reminder emails, the [[plugins/passwordauth]] plugin currently uses
the *[Mail::Sendmail](http://search.cpan.org/perldoc?Mail::Sendmail)* module.
--[[tschwinge]]
-> One that is in Debian is [[cpan Email::Send]], which can do SMTP and
+> One that is in Debian is [[!cpan Email::Send]], which can do SMTP and
> sendmail and some other methods and falls back through methods until one
> succeeds. I haven't tried to use it but it looks like a feasable
> candidate.
OK, so I'll have a look at replacing all email handling with *Email::Send*.
-[[tag patch]]
+[[!tag patch]]
*<http://www.thomas.schwinge.homeip.net/tmp/ikiwiki-sendmail.patch>*
Remaining TODOs:
* Resolve TODOs as denoted inside the patch.
- * Is it worthwhile to use and depend on [[cpan Return::Value]]
+ * Is it worthwhile to use and depend on [[!cpan Return::Value]]
just for this bit of functionality?
* Debian news file.
* ikiwiki news file.
> (master language + translations) support. Expect news from me on
> this front in the next weeks. --[[intrigeri]]
-[[tag patch done]]
+[[!tag patch done]]
Maybe this can be enhanced with a [[ikiwiki/PreprocessorDirective]]:
<pre>
-\[[suggest op=merge dstfile=trunk srcfile=branches/jk oldrev=1234 newrev=1342]]
+\[[!suggest op=merge dstfile=trunk srcfile=branches/jk oldrev=1234 newrev=1342]]
-\[[suggest op=move srcpage=/blog dstpage=/blog_support]]
+\[[!suggest op=move srcpage=/blog dstpage=/blog_support]]
-\[[suggest patch="""
+\[[!suggest patch="""
Index: IkiWiki/CGI.pm
===================================================================
--- IkiWiki/CGI.pm (révision 4119)
>> can use that as an alternative. I'm happy to chat about this, ping me..
>> --[sm](http://joyful.com)
-[[tag wishlist]]
+[[!tag wishlist]]
It would rock if I could view diffs from the web without going via feeds. I envision toggle-style buttons on the recentchanges page, or just links to the CGI, which then displays the diff... --[[madduck]]
-[[tag wishlist]]
+[[!tag wishlist]]
>
-[[tag patch]]
+[[!tag patch]]
> [[done]], although I left off the escapeHTML thing which seems to be in
> your patch by accident.
<http://www.reedmedia.net/~reed/tmp-sfhkcjkfrfh/rcs.pm>
-[[tag patch]]
+[[!tag patch]]
> Clearly needs some cleanup and perhaps some of the missing stubs
> implemented, before it can be included into ikiwiki.
Here's a full design for redoing recentchanges, based on Ethan's ideas:
* Add a recentchanges plugin that has a preprocessor directive:
- \[[recentchanges num=100 pages=* template=recentchanges.tmpl]]
+ \[[!recentchanges num=100 pages=* template=recentchanges.tmpl]]
If put on the [[recentchanges]] page, this would result in up to 100
recentchanges/change_$id.mdwn files being created.
* Which means the plugin has to store state and use a checkconfig hook
— NicolasLimare
-[[tag wishlist]]
+[[!tag wishlist]]
-[[tag wishlist]]
+[[!tag wishlist]]
HTML::Template is an okay templating kit, but it lacks a lot of powerful
features and thus makes it rather hard to give an ikiwiki site a consistent
>
> -- [[JoshTriplett]]
-[[tag wishlist]]
+[[!tag wishlist]]
[[plugins/shortcut]] creates link shortcut [[ikiwiki/PreprocessorDirective]]s,
which substitute their argument into the specified shortcut URL to generate
the link target, and use the argument as the link text. For example, given
-the example [[shortcuts]], `\[[wikipedia ikiwiki]]` generates a link to
+the example [[shortcuts]], `\[[!wikipedia ikiwiki]]` generates a link to
<http://en.wikipedia.org/wiki/ikiwiki>, with the link text "ikiwiki". This
works well in many cases; however, for things like the `debbug` example, it
simply uses the number as the link text, which does not always provide
enough context to understand the link at first glance. For example,
-`\[[debbug 397501]]` generates a link to <http://bugs.debian.org/397501>,
+`\[[!debbug 397501]]` generates a link to <http://bugs.debian.org/397501>,
with just "397501" as the link text. While [[plugins/template]] provides a
general solution for arbitrary cases, it would help to have a simple option
via the shortcut plugin to set the link text, with a `%s` substitution.
-Thus, something like `\[[shortcut name=debbug
+Thus, something like `\[[!shortcut name=debbug
url="http://bugs.debian.org/%s" desc="bug #%s"]]` might suffice on a
Debian-specific wiki to indicate a bug number, while a more general wiki
-might use something like `\[[shortcut name=debbug
+might use something like `\[[!shortcut name=debbug
url="http://bugs.debian.org/%s" desc="Debian bug #%s"]]`.
> [[todo/done]] --[[Joey]]
To create a "debfiles" [[shortcut|shortcuts]] that takes a package name, you
could just hardcode the architecture and distribution:
- \[[shortcut name=debfiles url="http://packages.debian.org/cgi-bin/search_contents.pl?word=%s&searchmode=filelist&case=insensitive&version=unstable&arch=i386"]]
- \[[debfiles ikiwiki]]
+ \[[!shortcut name=debfiles url="http://packages.debian.org/cgi-bin/search_contents.pl?word=%s&searchmode=filelist&case=insensitive&version=unstable&arch=i386"]]
+ \[[!debfiles ikiwiki]]
But what if you could have them as optional parameters instead? The syntax
for the invocation should look like this:
- \[[debfiles ikiwiki dist=testing]]
+ \[[!debfiles ikiwiki dist=testing]]
Some possible syntax choices for the shortcut definition:
- \[[shortcut name=debfiles url="http://packages.debian.org/cgi-bin/search_contents.pl?word=%s&searchmode=filelist&case=insensitive&version=%(dist)s&arch=%(arch)s" dist="unstable" arch="i386"]]
- \[[shortcut name=debfiles url="http://packages.debian.org/cgi-bin/search_contents.pl?word=%s&searchmode=filelist&case=insensitive&version=%(dist=unstable)s&arch=%(arch=i386)s"]]
- \[[shortcut name=debfiles url="http://packages.debian.org/cgi-bin/search_contents.pl?word=%s&searchmode=filelist&case=insensitive&version=%{dist=unstable}&arch=%{arch=i386}"]]
- \[[shortcut name=debfiles url="http://packages.debian.org/cgi-bin/search_contents.pl?word=$*&searchmode=filelist&case=insensitive&version=${dist=unstable}&arch=${arch=i386}"]]
+ \[[!shortcut name=debfiles url="http://packages.debian.org/cgi-bin/search_contents.pl?word=%s&searchmode=filelist&case=insensitive&version=%(dist)s&arch=%(arch)s" dist="unstable" arch="i386"]]
+ \[[!shortcut name=debfiles url="http://packages.debian.org/cgi-bin/search_contents.pl?word=%s&searchmode=filelist&case=insensitive&version=%(dist=unstable)s&arch=%(arch=i386)s"]]
+ \[[!shortcut name=debfiles url="http://packages.debian.org/cgi-bin/search_contents.pl?word=%s&searchmode=filelist&case=insensitive&version=%{dist=unstable}&arch=%{arch=i386}"]]
+ \[[!shortcut name=debfiles url="http://packages.debian.org/cgi-bin/search_contents.pl?word=$*&searchmode=filelist&case=insensitive&version=${dist=unstable}&arch=${arch=i386}"]]
--[[JoshTriplett]]
Well, you can already do this kind of thing with templates. Invocation does
look different:
- \[[template id=debfiles package=ikiwiki dist=testing]]
+ \[[!template id=debfiles package=ikiwiki dist=testing]]
--[[Joey]]
> I think I would find templates sufficient, if:
>
> 1. I could use the name of the template as a preprocessor directive
-> (`\[[templatename ...]]`), rather than using the `template` directive
-> with an `id` argument (`\[[template id=templatename]]`).
+> (`\[[!templatename ...]]`), rather than using the `template` directive
+> with an `id` argument (`\[[!template id=templatename]]`).
> 2. Template invocation allowed bare values in addition to `key=value`
> arguments, and template definition supported some means to access the
-> value. This would allow `\[[debfiles ikiwiki]]` rather than
-> `\[[debfiles package=ikiwiki]]`.
+> value. This would allow `\[[!debfiles ikiwiki]]` rather than
+> `\[[!debfiles package=ikiwiki]]`.
> 3. I could use ikiwiki syntax in the template, not just HTML and
> HTML::Template. (If I can already do that, then [[/plugins/template]]
> should make that more clear.)
> If I don't understand this, can you give an HTML example? --[[JeremyReed]]
>> The problem is like that in [[bugs/shortcuts_don't_escape_from_Markdown]]. We would like to use
->> the shortcuts plugin but add a descriptive text -- in this case \[[xcbgit src/xcb.xsd|XML Schema...]]
+>> the shortcuts plugin but add a descriptive text -- in this case \[[!xcbgit src/xcb.xsd|XML Schema...]]
>> The file src/xcb.xsd could be any url, and the point of shortcuts is that you get to shorten it.
>> --Ethan
>>> However, I want to define a [[plugins/shortcut]] to save the typing. If I
>>> define something like `protogit` pointing to
>>> `http://gitweb.freedesktop.org/?p=xcb/proto.git;a=blob;hb=HEAD;f=%s`, then
->>> I can write `\[[protogit src/xcb.xsd]]`; however, I then can't change the
+>>> I can write `\[[!protogit src/xcb.xsd]]`; however, I then can't change the
>>> link text to anything other than what the shortcut defines as the link
>>> text. I want to write something like
>>> `\[[XML Schema for the X Window System Protocol|protogit src/xcb.xsd]]`,
---
-One possible alternative, would be a general `\[[url ]]` scheme for all kinds of links. As mentioned in [[Short_wikilinks]], I have wanted a way to enter links to the wiki with markdown-style references,
+One possible alternative, would be a general `\[[!url ]]` scheme for all kinds of links. As mentioned in [[Short_wikilinks]], I have wanted a way to enter links to the wiki with markdown-style references,
specifying the actual target elsewhere from the text, with just a short reference in the text. To facilitate automatic conversion from earlier (already markdownised) "blog", I finally ended up writing a custom plugin that simply gets the location of wikipage, and use markdown mechanisms:
Here [is][1] a link.
- [1]: [[l a_page_in_the_wiki]]
+ [1]: [[!l a_page_in_the_wiki]]
- Obviously [this]([[l another_page]]) also works, although the syntax is quite cumbersome.
+ Obviously [this]([[!l another_page]]) also works, although the syntax is quite cumbersome.
So that the 'l' plugin inserts the location the page there, and markdown does the rest. My plugin currently fails if it can't find the page, as that is sufficient for my needs. Differing colouring for non-existing pages is not doable in a straightforward manner with this approach.
-For external links, that is no concern, however. So you could define for each shortcut an alternative directive, that inserts the URL. Perhaps `\[[url shortcutname params]]` or `\[[@shortcutname params]]` (if the preprocessor supported the @), and this could be extended to local links in an obvious manner: `\[[url page]]` or `\[[@page]]`. Now, if you could just get rid off the parantheses for markdown, for the short inline links --[[tuomov]] (who'd really rather not have two separate linking mechanisms: ikiwiki's heavy syntax and markdown's lighter one).
+For external links, that is no concern, however. So you could define for each shortcut an alternative directive, that inserts the URL. Perhaps `\[[!url shortcutname params]]` or `\[[@shortcutname params]]` (if the preprocessor supported the @), and this could be extended to local links in an obvious manner: `\[[!url page]]` or `\[[@page]]`. Now, if you could just get rid off the parantheses for markdown, for the short inline links --[[tuomov]] (who'd really rather not have two separate linking mechanisms: ikiwiki's heavy syntax and markdown's lighter one).
---
-I've added code to make the \[[foo 123]] syntax accept a _desc_
+I've added code to make the \[[!foo 123]] syntax accept a _desc_
parameter. I've named it like this to signal that it overrides the
_desc_ provided at description time. `%s` is expanded here as well.
> `url` still seems reasonable, and simple. You could also use such shortcuts
> without markup at all, as an abbreviation mechanism:
>
-> \[[shortcut name=spi desc="Software in the Public Interest, Inc."]]].
-> \[[shortcut name=sosp desc="Symposium on Operating System Principles"]]].
-> \[[shortcut name=cacm desc="Communications of the ACM"]]].
+> \[[!shortcut name=spi desc="Software in the Public Interest, Inc."]]].
+> \[[!shortcut name=sosp desc="Symposium on Operating System Principles"]]].
+> \[[!shortcut name=cacm desc="Communications of the ACM"]]].
>
> --[[JoshTriplett]]
Other special things in my templates and site:
-* a sidebar with \[[include pages="notes/\*" template=foo]] while notes.mdwn has
- a \[[include pages="notes/*"]] and uses the sidebar; removed it, doesn't change
+* a sidebar with \[[!include pages="notes/\*" template=foo]] while notes.mdwn has
+ a \[[!include pages="notes/*"]] and uses the sidebar; removed it, doesn't change
* a template (biblio.tmpl) calling the "img" plugin with a template parameter as the
image filename; removed it, doesn't change
* some strange games with tags whose page calls a "map" directive to show other tags
>
> --[[Joey]]
-[[tag wishlist]]
+[[!tag wishlist]]
of very simple text parsing or regex application, to make it possible to write
shortcuts like these:
- [[mmlist listname@lists.example.org]] -> <listname@example.org> ([mailman page] (http://lists.example.org/mailman/listinfo/listname)
- [[debcl packagename]] -> [packagename changelog](http://packages.debian.org/changelogs/pool/main/p/packagename/current/changelog)
+ [[!mmlist listname@lists.example.org]] -> <listname@example.org> ([mailman page] (http://lists.example.org/mailman/listinfo/listname)
+ [[!debcl packagename]] -> [packagename changelog](http://packages.debian.org/changelogs/pool/main/p/packagename/current/changelog)
For shortcut definitions, a `match` parameter could supply a regex, and then the `url` and `desc` parameters could make use of the named or numbered groups from the match.
How about a skip option for [[plugins/inline]]? This would allow things like the following:
- \[[inline pages="news/*" show="5"]]
- \[[inline pages="news/*" skip="5" show="5" archive="yes"]]
+ \[[!inline pages="news/*" show="5"]]
+ \[[!inline pages="news/*" skip="5" show="5" archive="yes"]]
> I just wrote a patch. --Ethan
see in action in the preformatted patch below. So I don't see why the
default style sheet should do this. --[[Joey]]
-[[tag patch]]
+[[!tag patch]]
<pre>
diff --git a/basewiki/style.css b/basewiki/style.css
-I think it would be useful for ikiwiki to support [[debpkg sdf]] input,
+I think it would be useful for ikiwiki to support [[!debpkg sdf]] input,
which can be converted and rendered to many formats.
I should add, however, that SDF allows executing arbitrary perl code
from its documents; which means some sanitization would need to occur
before the document is fed to sdf.
--[[JeremieKoenig]]
-[[tag wishlist]]
+[[!tag wishlist]]
What I ended up doing is write something like this to the page:
- [[blogcomment from="""Username""" timestamp="""12345""" subject="""Some text""" text="""the text of the comment"""]]
+ [[!blogcomment from="""Username""" timestamp="""12345""" subject="""Some text""" text="""the text of the comment"""]]
Each comment is processed to something like this:
$cgi->param('comments') : '';
my $comment=$cgi->param('blogcomment');
- $content.=qq{[[blogcomment from="""$name""" timestamp="""$timestamp""" subject="""$subject""" text="""$comment"""]]\n\n};
+ $content.=qq{[[!blogcomment from="""$name""" timestamp="""$timestamp""" subject="""$subject""" text="""$comment"""]]\n\n};
$content=~s/\n/\r\n/g;
$form->field(name => "editcontent", value => $content, force => 1);
} # }}}
return $ctime;
} #}}}
-[[tag patch done]]
+[[!tag patch done]]
* Need to get post commit hook code working.
* Need some example urls for web based diffs.
-[[tag rcs/tla]]
+[[!tag rcs/tla]]
A simple plugin to allow per-page customization of a template by passing paramaters to HTML::Template. For those times when a whole pagetemplate is too much work. --Ethan
-[[tags patch]]
+[[!tags patch]]
#!/usr/bin/perl
package IkiWiki::Plugin::tmplvars;
It would be great if I could to this:
- \[[toc levels=3 skip=1]]
+ \[[!toc levels=3 skip=1]]
I use h1 for big title on each page, and don't want it in my toc on that page.
> another option is added, I wonder why you're using a h1 for a title on
> each page when the page name already appears at the top of each page. And
> if the page name isn't right for the title, you can use
-> \[[meta title="foo"]] to override it. And this purposefully doesn't show
+> \[[!meta title="foo"]] to override it. And this purposefully doesn't show
> up in the toc. --[[Joey]]
>> aaaahhh, I made a mistake. U used some other page.tmpl and title was hidden,
It would be nice if one could set the initial state of the toggleable area.
--[[[rdennis]]
-[[tag plugins/toggle]]
+[[!tag plugins/toggle]]
[[done]]
--[[madduck]]
-[[tags wishlist patch]]
+[[!tags wishlist patch]]
The [[typography_plugin|plugins/typography]] could support configuration of
-which translations to make. [[cpan Text::Typography]] supports fine-grained
+which translations to make. [[!cpan Text::Typography]] supports fine-grained
control of which translations to make, so [[plugins/typography]] just needs to
expose this somehow. --[[JoshTriplett]]
[[cstamas]]
-[[tag wishlist patch]]
+[[!tag wishlist patch]]
> I think you could now implement "toplvl" using [[conditionals|/plugins/conditional]]:
>
-> \[[if test="destpage(/index)" then="""...""" else="""..."""]]
+> \[[!if test="destpage(/index)" then="""...""" else="""..."""]]
>
> --[[JoshTriplett]]
+
</pre>
-[[tag patch]]
+[[!tag patch]]
--[[AdamShand]]
-[[tag wishlist]]
+[[!tag wishlist]]
problem. According to the developers, it is possible to do that, and start
off in WikiText mode.
-[[tag soc]]
+[[!tag soc]]
-[[tag wishlist]]
+[[!tag wishlist]]
-[[tag patch]]
+[[!tag patch]]
Project IkiWiki::WIKIWYG v1.6 - <http://ikiwiki.xbaud.com/>
===========================================================
List of users
=============
-[[inline pages="users/* and !users/*/* and !*/Discussion"
+[[!inline pages="users/* and !users/*/* and !*/Discussion"
feeds=no archive=yes sort=title template=titlepage
rootpage="users" postformtext="Add yourself as an ikiwiki user:"]]
My watchlist:
-[[inline pages="todo/allow_wiki_syntax_in_commit_messages todo/shortcut_with_different_link_text" archive="yes" sort="mtime" atom="yes"]]
+[[!inline pages="todo/allow_wiki_syntax_in_commit_messages todo/shortcut_with_different_link_text" archive="yes" sort="mtime" atom="yes"]]
-[[meta title="Karl Mowatt-Wilson"]]
+[[!meta title="Karl Mowatt-Wilson"]]
Working on an [asciidoc](http://www.methods.co.nz/asciidoc/) plugin for ikiwiki so I can use it for my [website](http://mowson.org/karl), where I'm documenting how to run linux on the HP/Compaq Evo T20 'thin client'.
\ No newline at end of file
-[[meta title="Taylor Killian"]]
+[[!meta title="Taylor Killian"]]
Hi,
-[[meta title="Adam Shand"]]
+[[!meta title="Adam Shand"]]
New IkiWiki user, long time wiki user. :-)
-[[meta title="Arpit Jain"]]
+[[!meta title="Arpit Jain"]]
Hi,
I am Arpit Jain. I am final year B.Tech/M.Tech(Dual Degree) student at Department of Computer Science and Engineering, Indian Institute of Technology, Kharagpur.
-[[meta title="Bruno Beaufils"]]
+[[!meta title="Bruno Beaufils"]]
Bruno Beaufils is **<bruno@boulgour.com>**.
-[[meta title="Chris Green"]]
+[[!meta title="Chris Green"]]
Chris is Chris Green, an ancient C/C++/Java programmer, I started around 1982 or 1983.
-[[meta title="Adeodato Simó"]]
+[[!meta title="Adeodato Simó"]]
<http://chistera.yi.org/~adeodato>
-[[meta title="Thomas Harning Jr"]]
+[[!meta title="Thomas Harning Jr"]]
I began using ikiwiki since it ties into git... and so far it's working great!
-[[meta title="Hugues Bernard"]]
+[[!meta title="Hugues Bernard"]]
For now I'm using ikiwiki just for my personal needs :
-[[meta title="Jeremy Reed"]]
+[[!meta title="Jeremy Reed"]]
I am testing ikiwiki. I made a RCS plugin.
\ No newline at end of file
-[[meta title="Joey Hess"]]
+[[!meta title="Joey Hess"]]
Joey Hess is <a href="mailto:joey@kitenet.net">joey@kitenet.net</a>.
His web page is [here](http://kitenet.net/~joey/).
-[[meta title="Jonas Smedegaard"]]
+[[!meta title="Jonas Smedegaard"]]
Jonas Smedegaard is a Debian developer, like joey. A big fan of this novel approach to wiki: serving as pages static!
-[[meta title="Josh Triplett"]]
+[[!meta title="Josh Triplett"]]
Josh Triplett; `josh@{freedesktop.org,kernel.org,psas.pdx.edu}`.
-[[meta title="Kyle MacLea"]]
+[[!meta title="Kyle MacLea"]]
[Kyle MacLea](http://kitenet.net/~kyle) was an early adopter of **ikiwiki**. He really likes it, especially for his [FamilyWiki](http://kitenet.net/~kyle/family/wiki) and [Emigration Registry](http://kitenet.net/~kyle/family/registry).
\ No newline at end of file
I track this site with the following feed:
-[[inline pages="internal(recentchanges/change_*) and !author(http://madduck.net/)"
+[[!inline pages="internal(recentchanges/change_*) and !author(http://madduck.net/)"
feedonly=yes atom=no]]
-[[meta title="Marcelo E. Magallon"]]
+[[!meta title="Marcelo E. Magallon"]]
Marcelo E. Magallon <marcelo dot magallon in Google Mail>
\ No newline at end of file
-[[meta title="Per Olofsson"]]
+[[!meta title="Per Olofsson"]]
Per Olofsson
-[[meta title="Paweł Tęcza"]]
+[[!meta title="Paweł Tęcza"]]
My name is Paweł Tęcza. Currently I work as mail system administrator,
C/Perl programmer and computer projects designer at Warsaw University, Poland.
-[[toc ]]
+[[!toc ]]
### My name
Thanks to [[madduck]], I track this site with the following feed:
-[[inline pages="internal(recentchanges/change_*) and !author(http://sabr.myopenid.com/)"
+[[!inline pages="internal(recentchanges/change_*) and !author(http://sabr.myopenid.com/)"
feedonly=yes rss=no atom=yes]]
### Tests
-[[meta title="Thomas Schwinge"]]
+[[!meta title="Thomas Schwinge"]]
# Thomas Schwinge
<tschwinge@gnu.org>
-[[meta title="Victor Moral"]]
+[[!meta title="Victor Moral"]]
I'm a spanish perl programmer and linux system administrator.
improvements people would like to see in ikiwiki. Good patches for any of
these will likely be accepted.
-[[inline pages="todo/* and !todo/done and !link(todo/done) and
+[[!inline pages="todo/* and !todo/done and !link(todo/done) and
link(wishlist) and !link(patch) and !todo/*/*" archive=yes show=0]]