├── .gitignore
├── Makefile
├── README.md
├── basewiki
├── favicon.ico
├── ikiwiki.mdwn
├── ikiwiki
│ ├── directive.mdwn
│ ├── formatting.mdwn
│ ├── markdown.mdwn
│ ├── openid.mdwn
│ ├── pagespec.mdwn
│ ├── pagespec
│ │ ├── attachment.mdwn
│ │ ├── po.mdwn
│ │ └── sorting.mdwn
│ ├── searching.mdwn
│ ├── subpage.mdwn
│ ├── subpage
│ │ └── linkingrules.mdwn
│ └── wikilink.mdwn
├── index.mdwn
├── local.css
├── recentchanges.mdwn
├── sandbox.mdwn
├── shortcuts.mdwn
├── style.css
├── templates.mdwn
├── templates
│ ├── note.mdwn
│ └── popup.mdwn
└── wikiicons
│ ├── diff.png
│ ├── email.png
│ ├── openidlogin-bg.gif
│ ├── revert.png
│ └── search-bg.gif
├── example.setup
├── example
├── Anemones.jpg
├── Bootstrap_features.mdwn
├── Calendars.mdwn
├── Comments.mdwn
├── Comments
│ ├── comment_1._comment
│ └── comment_2._comment
├── Inline_pages.mdwn
├── Lemonshark.jpg
├── Sea_Star.jpg
├── index.mdwn
├── inlinetest.mdwn
├── sample_text
│ ├── Donec_dapibus.mdwn
│ ├── Donec_semper.mdwn
│ ├── Lorem_ipsum.mdwn
│ ├── Nulla_facilisi.mdwn
│ └── Sed_eget.mdwn
└── sidebar.mdwn
├── ikistrap.svg
├── lib
└── IkiWiki
│ └── Plugin
│ ├── ikistrap.pm
│ └── recentchanges.pm
├── templates
├── aggregatepost.tmpl
├── archivepage.tmpl
├── atomitem.tmpl
├── atompage.tmpl
├── autoindex.tmpl
├── autotag.tmpl
├── blogpost.tmpl
├── calendarmonth.tmpl
├── calendaryear.tmpl
├── carouselimage.tmpl
├── carouselpage.tmpl
├── change.tmpl
├── comment.tmpl
├── commentmoderation.tmpl
├── editcomment.tmpl
├── editconflict.tmpl
├── editcreationconflict.tmpl
├── editfailedsave.tmpl
├── editpage.tmpl
├── editpagegone.tmpl
├── emailauth.tmpl
├── feedlink.tmpl
├── googleform.tmpl
├── gridcard.tmpl
├── inlinepage.tmpl
├── login-selector.tmpl
├── microblog.tmpl
├── notifyemail.tmpl
├── page.tmpl
├── passwordmail.tmpl
├── pocreatepage.tmpl
├── recentchanges.tmpl
├── renamesummary.tmpl
├── revert.tmpl
├── rssitem.tmpl
├── rsspage.tmpl
├── searchform.tmpl
├── searchquery.tmpl
├── simplecard.tmpl
├── titlepage.tmpl
└── trails.tmpl
└── tidy.config
/.gitignore:
--------------------------------------------------------------------------------
1 | /example.html
2 | /example/.ikiwiki
3 | /example/cgi_wrapper
4 | /example/tag
5 | *.swp
6 |
--------------------------------------------------------------------------------
/Makefile:
--------------------------------------------------------------------------------
1 | all:
2 | HTML_TIDY=./tidy.config ikiwiki --setup example.setup --refresh
3 |
4 | rebuild:
5 | HTML_TIDY=./tidy.config ikiwiki --setup example.setup --rebuild
6 |
7 | tidy:
8 | HTML_TIDY=./tidy.config tidy -m `find example.html/ -type f -name '*.html'`
9 |
10 |
11 | .PHONY: all rebuild
12 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Ikistrap, a Bootstrap 5 theme for ikiwiki
2 |
3 | [Ikiwiki](https://ikiwiki.info/) is a very powerful [wiki](https://en.wikipedia.org/wiki/Wiki) compiler.
4 | However, its default theme is very minimalistic.
5 | Ikistrap is a theme that uses [Bootstrap](http://getbootstrap.com/) 5 to ensure you have a wiki that looks professional,
6 | whether you are viewing it on your desktop computer or on your mobile phone.
7 |
8 | To use ikistrap in your own wiki, just add the following to your setup file:
9 |
10 | templatedir: /path/to/ikistrap/templates
11 | underlaydir: /path/to/ikistrap/basewiki
12 |
13 | Ikistrap comes with an example wiki that shows off its features,
14 | and shows you how to integrate some Bootstrap 5 features into your `.mdwn` files.
15 | Use the `Makefile` to compile the example wiki. The example wiki relies on the
16 | multimarkdown and imagemagick libraries for Perl. On Debian, these are available
17 | in the libtext-multimarkdown-perl and perlmagick packages.
18 |
--------------------------------------------------------------------------------
/basewiki/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gsliepen/ikistrap/dba7cf02f08173bac178ab4a7b281a367fe21344/basewiki/favicon.ico
--------------------------------------------------------------------------------
/basewiki/ikiwiki.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta robots="noindex, follow"]]
2 | This wiki is powered by [ikiwiki](http://ikiwiki.info/).
3 | [[!if test="enabled(version)"
4 | then="(Currently running version [[!version ]].)"
5 | ]]
6 |
7 | Some documentation on using ikiwiki:
8 |
9 | * [[ikiwiki/formatting]]
10 | * [[ikiwiki/wikilink]]
11 | * [[ikiwiki/subpage]]
12 | * [[ikiwiki/pagespec]]
13 | * [[ikiwiki/directive]]
14 | * [[ikiwiki/markdown]]
15 | * [[ikiwiki/openid]]
16 | * [[ikiwiki/searching]]
17 | * [[templates]]
18 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/directive.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta robots="noindex, follow"]]
2 | Directives are similar to a [[ikiwiki/WikiLink]] in form, except they
3 | begin with `!` and may contain parameters. The general form is:
4 |
5 | \[[!directive param="value" param="value"]]
6 |
7 | This gets expanded before the rest of the page is processed, and can be used
8 | to transform the page in various ways.
9 |
10 | The quotes around values can be omitted if the value is a simple word.
11 | Also, some directives may use parameters without values, for example:
12 |
13 | \[[!tag foo]]
14 |
15 | A directive does not need to all be on one line, it can be
16 | wrapped to multiple lines if you like:
17 |
18 | \[[!directive foo="baldersnatch"
19 | bar="supercalifragilisticexpialidocious" baz=11]]
20 |
21 | Also, multiple lines of *quoted* text can be used for a value.
22 | To allow quote marks inside the quoted text, delimit the block
23 | of text with triple-double-quotes or triple-single-quotes:
24 |
25 | \[[!directive text="""
26 | 1. "foo"
27 | 2. "bar"
28 | 3. "baz"
29 | """ othertext='''
30 | 1. 'quux'
31 | 2. "foo"
32 | ''']]
33 |
34 | If you want to put text with triple quotes into a parameter value, you can
35 | use perl-style here-doc syntax, even nesting it like this:
36 |
37 | \[[!directive text=<":
42 |
43 | > To be or not to be,
44 | > that is the question.
45 |
46 | To write a code block, indent each line with a tab or 4 spaces:
47 |
48 | 10 PRINT "Hello, world!"
49 | 20 GOTO 10
50 |
51 | To link to an url or email address, you can just put the
52 | url in angle brackets: <>, or you can use the
53 | form \[link text\]\(url\)
54 |
55 | ----
56 |
57 | In addition to basic html formatting using [[MarkDown]], this wiki lets
58 | you use the following additional features:
59 |
60 | * To link to another page on the wiki, place the page's name inside double
61 | square brackets. So you would use `\[[WikiLink]]` to link to [[WikiLink]].
62 |
63 | [[!if test="enabled(smiley) and smileys" then="""
64 | * Insert [[smileys]] and some other useful symbols. :-)
65 | """]]
66 |
67 | [[!if test="enabled(shortcut) and shortcuts" then="""
68 | * Use [[shortcuts]] to link to common resources.
69 |
70 | \[[!wikipedia War\_of\_1812]]
71 | """]]
72 |
73 | [[!if test="enabled(template) and templates" then="""
74 | * Create and fill out [[templates]] for repeated chunks of
75 | parameterized wiki text.
76 | """]]
77 |
78 | * Insert various [[directives|directive]] onto a page to perform useful
79 | actions.
80 | [[!if test="enabled(toc) or enabled(meta) or enabled(inline)" then="""
81 | For example, you can:
82 | """]]
83 |
84 | [[!if test="enabled(toc)" then="""
85 | * Add a table of contents to a page:
86 |
87 | \[[!toc]]
88 | """]]
89 |
90 |
91 | [[!if test="enabled(meta)" then="""
92 | * Change the title of a page:
93 |
94 | \[[!meta title="full page title"]]
95 | """]]
96 |
97 | [[!if test="enabled(inline)" then="""
98 | * Create a blog by inlining a set of pages:
99 |
100 | \[[!inline pages="blog/*"]]
101 | """]]
102 |
103 | [[!if test="enabled(listdirectives)" then="""
104 | Full list of [[directives|directive]] enabled for this wiki:
105 | [[!listdirectives ]]
106 | """]]
107 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/markdown.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta robots="noindex, follow"]]
2 | [Markdown](http://daringfireball.net/projects/markdown/)
3 | is a minimal markup language that resembles plain text as used in
4 | email messages. It is the markup language used by this wiki by default.
5 |
6 | For documentation about the markdown syntax, see [[formatting]] and
7 | [Markdown: syntax](http://daringfireball.net/projects/markdown/syntax).
8 |
9 | Note that [[WikiLinks|WikiLink]] and [[directives|directive]] are not part
10 | of the markdown syntax, and are the only bit of markup that this wiki
11 | handles internally.
12 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/openid.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta title="OpenID"]]
2 | [[!meta robots="noindex, follow"]]
3 |
4 | [[!if test="enabled(openid)"
5 | then="This wiki has OpenID **enabled**."
6 | else="This wiki has OpenID **disabled**."]]
7 |
8 | [OpenID](http://openid.net) is a decentralized authentication mechanism
9 | that allows you to have one login that you can use on a growing number of
10 | websites.
11 |
12 | If you have an account with some of the larger web service providers,
13 | you might already have an OpenID.
14 | [Directory of OpenID providers](http://openiddirectory.com/openid-providers-c-1.html)
15 |
16 | [[!if test="enabled(openid)" then="""
17 | To sign in to this wiki using OpenID, just enter it in the OpenID field in the
18 | signin form. You do not need to give this wiki a password or go through any
19 | registration process when using OpenID.
20 | """]]
21 |
22 | ---
23 |
24 | It's also possible to make a page in the wiki usable as an OpenID url,
25 | by delegating it to an openid server. Here's an example of how to do that:
26 |
27 | \[[!meta openid="http://yourid.myopenid.com/"
28 | server="http://www.myopenid.com/server"]]
29 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/pagespec.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta robots="noindex, follow"]]
2 | To select a set of pages, such as pages that are locked, pages
3 | whose commit emails you want subscribe to, or pages to combine into a
4 | blog, the wiki uses a PageSpec. This is an expression that matches
5 | a set of pages.
6 |
7 | The simplest PageSpec is a simple list of pages. For example, this matches
8 | any of the three listed pages:
9 |
10 | foo or bar or baz
11 |
12 | More often you will want to match any pages that have a particular thing in
13 | their name. You can do this using a glob pattern. "`*`" stands for any part
14 | of a page name, and "`?`" for any single letter of a page name. So this
15 | matches all pages about music, and any [[SubPage]]s of the SandBox, but does
16 | not match the SandBox itself:
17 |
18 | *music* or SandBox/*
19 |
20 | You can also prefix an item with "`!`" to skip pages that match it. So to
21 | match all pages except for Discussion pages and the SandBox:
22 |
23 | * and !SandBox and !*/Discussion
24 |
25 | Some more elaborate limits can be added to what matches using these functions:
26 |
27 | * "`glob(someglob)`" - matches pages and other files that match the given glob.
28 | Just writing the glob by itself is actually a shorthand for this function.
29 | * "`page(glob)`" - like `glob()`, but only matches pages, not other files
30 | * "`link(page)`" - matches only pages that link to a given page (or glob)
31 | * "`tagged(tag)`" - matches pages that are tagged or link to the given tag (or
32 | tags matched by a glob)
33 | * "`backlink(page)`" - matches only pages that a given page links to
34 | * "`creation_month(month)`" - matches only files created on the given month
35 | number
36 | * "`creation_day(mday)`" - or day of the month
37 | * "`creation_year(year)`" - or year
38 | * "`created_after(page)`" - matches only files created after the given page
39 | was created
40 | * "`created_before(page)`" - matches only files created before the given page
41 | was created
42 | * "`internal(glob)`" - like `glob()`, but matches even internal-use
43 | pages that globs do not usually match.
44 | * "`title(glob)`", "`author(glob)`", "`authorurl(glob)`",
45 | "`license(glob)`", "`copyright(glob)`", "`guid(glob)`"
46 | - match pages that have the given metadata, matching the specified glob.
47 | * "`user(username)`" - tests whether a modification is being made by a
48 | user with the specified username. If openid is enabled, an openid can also
49 | be put here. Glob patterns can be used in the username. For example,
50 | to match all openid users, use `user(*://*)`
51 | * "`admin()`" - tests whether a modification is being made by one of the
52 | wiki admins.
53 | * "`ip(address)`" - tests whether a modification is being made from the
54 | specified IP address. Glob patterns can be used in the address. For
55 | example, `ip(127.0.0.*)`
56 | * "`comment(glob)`" - matches comments to a page matching the glob.
57 | * "`comment_pending(glob)`" - matches unmoderated, pending comments.
58 | * "`postcomment(glob)`" - matches only when comments are being
59 | posted to a page matching the specified glob
60 |
61 | For example, to match all pages in a blog that link to the page about music
62 | and were written in 2005:
63 |
64 | blog/* and link(music) and creation_year(2005)
65 |
66 | Note the use of "and" in the above example, that means that only pages that
67 | match each of the three expressions match the whole. Use "and" when you
68 | want to combine expression like that; "or" when it's enough for a page to
69 | match one expression. Note that it doesn't make sense to say "index and
70 | SandBox", since no page can match both expressions.
71 |
72 | If you want to include only one level of subpages, you can use
73 |
74 | blog/* and !blog/*/*
75 |
76 | More complex expressions can also be created, by using parentheses for
77 | grouping. For example, to match pages in a blog that are tagged with either
78 | of two tags, use:
79 |
80 | blog/* and (tagged(foo) or tagged(bar))
81 |
82 | Note that page names in PageSpecs are matched against the absolute
83 | filenames of the pages in the wiki, so a pagespec "foo" used on page
84 | "a/b" will not match a page named "a/foo" or "a/b/foo". To match
85 | relative to the directory of the page containing the pagespec, you can
86 | use "./". For example, "./foo" on page "a/b" matches page "a/foo".
87 |
88 | To indicate the name of the page the PageSpec is used in, you can
89 | use a single dot. For example, `link(.)` matches all the pages
90 | linking to the page containing the PageSpec.
91 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/pagespec/attachment.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta robots="noindex, follow"]]
2 | [[!if test="enabled(attachment)"
3 | then="This wiki has attachments **enabled**."
4 | else="This wiki has attachments **disabled**."]]
5 |
6 | If attachments are enabled, the wiki admin can control what types of
7 | attachments will be accepted, via the `allowed_attachments`
8 | configuration setting.
9 |
10 | For example, to limit most users to uploading small images, and nothing else,
11 | while allowing larger mp3 files to be uploaded by joey into a specific
12 | directory, and check all attachments for viruses, something like this could be
13 | used:
14 |
15 | virusfree() and ((user(joey) and podcast/*.mp3 and mimetype(audio/mpeg) and maxsize(15mb)) or ((mimetype(image/jpeg) or mimetype(image/png)) and maxsize(50kb)))
16 |
17 | The regular [[ikiwiki/PageSpec]] syntax is expanded with the following
18 | additional tests:
19 |
20 | * "`maxsize(size)`" - tests whether the attachment is no larger than the
21 | specified size. The size defaults to being in bytes, but "kb", "mb", "gb"
22 | etc can be used to specify the units.
23 |
24 | * "`minsize(size)`" - tests whether the attachment is no smaller than the
25 | specified size.
26 |
27 | * "`ispage()`" - tests whether the attachment will be treated by ikiwiki as a
28 | wiki page. (Ie, if it has an extension of ".mdwn", or of any other enabled
29 | page format).
30 |
31 | So, if you don't want to allow wiki pages to be uploaded as attachments,
32 | use `!ispage()` ; if you only want to allow wiki pages to be uploaded
33 | as attachments, use `ispage()`.
34 |
35 | * "`mimetype(foo/bar)`" - checks the MIME type of the attachment. You can
36 | include a glob in the type, for example `mimetype(image/*)`.
37 |
38 | * "`virusfree()`" - checks the attachment with an antiviral program.
39 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/pagespec/po.mdwn:
--------------------------------------------------------------------------------
1 | [[!if test="enabled(po)"
2 | then="This wiki has po support **enabled**."
3 | else="This wiki has po support **disabled**."]]
4 |
5 | If the [[!iki plugins/po desc=po]] plugin is enabled, the regular
6 | [[ikiwiki/PageSpec]] syntax is expanded with the following additional
7 | tests that can be used to improve user navigation in a multi-lingual
8 | wiki:
9 |
10 | * "`lang(LL)`" - tests whether a page is written in the language
11 | specified as a ISO639-1 (two-letter) language code.
12 | * "`currentlang()`" - tests whether a page is written in the same
13 | language as the current page.
14 | * "`needstranslation()`" - tests whether a page needs translation
15 | work. Only slave pages match this PageSpec. A minimum target
16 | translation percentage can optionally be passed as an integer
17 | parameter: "`needstranslation(50)`" matches only pages less than 50%
18 | translated.
19 |
20 | Note that every non-po page is considered to be written in
21 | `po_master_language`, as specified in `ikiwiki.setup`.
22 |
23 | [[!meta robots="noindex, follow"]]
24 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/pagespec/sorting.mdwn:
--------------------------------------------------------------------------------
1 | Some [[directives|ikiwiki/directive]] that use
2 | [[PageSpecs|ikiwiki/pagespec]] allow
3 | specifying the order that matching pages are shown in. The following sort
4 | orders can be specified using the `sort` parameter:
5 |
6 | * `age` - List pages from the most recently created to the oldest.
7 |
8 | * `mtime` - List pages with the most recently modified first.
9 |
10 | * `title` - Order by title (page name), e.g. "z/a a/b a/c"
11 |
12 | * `path` - Order by page name including parents, e.g. "a/b a/c z/a"
13 | [[!if test="enabled(sortnaturally)" then="""
14 | * `title_natural` - Orders by title, but numbers in the title are treated
15 | as such, ("1 2 9 10 20" instead of "1 10 2 20 9")
16 |
17 | * `path_natural` - Like `path`, but numbers in the title are treated as such
18 | """]]
19 | [[!if test="enabled(meta)" then="""
20 | * `meta(title)` - Order according to the `\[[!meta title="foo" sortas="bar"]]`
21 | or `\[[!meta title="foo"]]` [[ikiwiki/directive]], or the page name if no
22 | full title was set. `meta(author)`, `meta(date)`, `meta(updated)`, etc.
23 | also work.
24 | """]]
25 |
26 | In addition, you can combine several sort orders and/or reverse the order of
27 | sorting, with a string like `age -title` (which would sort by age, then by
28 | title in reverse order if two pages have the same age).
29 |
30 | [[!meta robots="noindex, follow"]]
31 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/searching.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta robots="noindex, follow"]]
2 |
3 | [[!if test="enabled(search)"
4 | then="This wiki has searching **enabled**."
5 | else="This wiki has searching **disabled**."]]
6 |
7 | If searching is enabled, you can enter search terms in the search field,
8 | as you'd expect. There are a few special things you can do to construct
9 | more powerful searches.
10 |
11 | * To match a phrase, enclose it in double quotes.
12 | * `AND` can be used to search for documents containing two expressions.
13 | * `OR` can be used to search for documents containing either one of
14 | two expressions.
15 | * Parentheses can be used to build up complicated search expressions. For
16 | example, "(foo AND bar) OR (me AND you)"
17 | * Prefix a search term with "-" to avoid it from appearing in the results.
18 | For example, "-discussion" will omit "discussion".
19 | * To search for a page with a given title, use "title:foo".
20 | * To search for pages that contain a "bar" link, use "link:bar".
21 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/subpage.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta robots="noindex, follow"]]
2 | ikiwiki supports placing pages in a directory hierarchy. For example,
3 | this page, [[SubPage]] has some related pages placed under it, like
4 | [[SubPage/LinkingRules]]. This is a useful way to add some order to your
5 | wiki rather than just having a great big directory full of pages.
6 |
7 | To add a SubPage, just make a subdirectory and put pages in it. For
8 | example, this page is subpage.mdwn in this wiki's source, and there is also
9 | a subpage subdirectory, which contains subpage/linkingrules.mdwn. Subpages
10 | can be nested as deeply as you'd like.
11 |
12 | Linking to and from a SubPage is explained in [[LinkingRules]].
13 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/subpage/linkingrules.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta robots="noindex, follow"]]
2 | To link to or from a [[SubPage]], you can normally use a regular
3 | [[WikiLink]] that does not contain the name of the parent directory of
4 | the [[SubPage]]. Ikiwiki descends the directory hierarchy looking for a
5 | page that matches your link.
6 |
7 | For example, if FooBar/SubPage links to "OtherPage", ikiwiki will first
8 | prefer pointing the link to FooBar/SubPage/OtherPage if it exists, next
9 | to FooBar/OtherPage and finally to OtherPage in the root of the wiki.
10 |
11 | Note that this means that if a link on FooBar/SomePage to "OtherPage"
12 | currently links to OtherPage, in the root of the wiki, and FooBar/OtherPage
13 | is created, the link will _change_ to point to FooBar/OtherPage. On the
14 | other hand, a link from BazBar to "OtherPage" would be unchanged by this
15 | creation of a [[SubPage]] of FooBar.
16 |
17 | You can also specify a link that contains a directory name, like
18 | "FooBar/OtherPage" to more exactly specify what page to link to. This is
19 | the only way to link to an unrelated [[SubPage]].
20 |
21 | You can use this to, for example, to link from BazBar to "FooBar/SubPage",
22 | or from BazBar/SubPage to "FooBar/SubPage".
23 |
24 | You can also use "/" at the start of a link, to specify exactly which page
25 | to link to, when there are multiple pages with similar names and the link
26 | goes to the wrong page by default. For example, linking from
27 | "FooBar/SubPage" to "/OtherPage" will link to the "OtherPage" in the root
28 | of the wiki, even if there is a "FooBar/OtherPage".
29 |
30 | Also, if the wiki is configured with a userdir, you can link to pages
31 | within the userdir without specifying a path to them. This is to allow for
32 | easy linking to a user's page in the userdir, to sign a comment. These
33 | links are checked for last of all.
34 |
--------------------------------------------------------------------------------
/basewiki/ikiwiki/wikilink.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta robots="noindex, follow"]]
2 | WikiLinks provide easy linking between pages of the wiki. To create a
3 | [[WikiLink]], just put the name of the page to link to in double brackets.
4 | For example `\[[WikiLink]]`.
5 |
6 | If you ever need to write something like `\[[WikiLink]]` without creating a
7 | wikilink, just prefix it with a `\`, like `\\[[WikiLink]]`.
8 |
9 | There are some special [[SubPage/LinkingRules]] that come into play when
10 | linking between [[SubPages|SubPage]].
11 |
12 | WikiLinks are matched with page names in a case-insensitive manner, so you
13 | don't need to worry about getting the case the same, and can capitalise
14 | links at the start of a sentence, and so on.
15 |
16 | It's also possible to write a WikiLink that uses something other than the page
17 | name as the link text. For example `\[[foo_bar|SandBox]]` links to the SandBox
18 | page, but the link will appear like this: [[foo_bar|SandBox]].
19 |
20 | To link to an anchor inside a page, you can use something like
21 | `\[[WikiLink#foo]]` .
22 |
23 | If the file linked to by a WikiLink looks like an image, it will
24 | be displayed inline on the page.
25 |
26 | ---
27 |
28 | You can also put an url in a WikiLink, to link to an external page.
29 | Email addresses can also be used to generate a mailto link.
30 |
--------------------------------------------------------------------------------
/basewiki/index.mdwn:
--------------------------------------------------------------------------------
1 | Welcome to your new wiki.
2 |
3 | All wikis are supposed to have a [[SandBox]], so this one does too.
4 |
5 | ----
6 |
7 | This wiki is powered by [[ikiwiki]].
8 |
--------------------------------------------------------------------------------
/basewiki/local.css:
--------------------------------------------------------------------------------
1 | /* ikiwiki local style sheet */
2 |
3 | /* Add local styling here, instead of modifying style.css. */
4 |
--------------------------------------------------------------------------------
/basewiki/recentchanges.mdwn:
--------------------------------------------------------------------------------
1 | [[!if test="enabled(meta)" then="""
2 | [[!meta title="RecentChanges"]]
3 | """]]
4 | Recent changes to this wiki:
5 |
6 | [[!inline pages="internal(recentchanges/change_*) and !*/Discussion"
7 | template=recentchanges show=0]]
8 |
--------------------------------------------------------------------------------
/basewiki/sandbox.mdwn:
--------------------------------------------------------------------------------
1 | This is the SandBox, a page anyone can edit to learn how to use the wiki.
2 |
3 | ----
4 |
5 | Here's a paragraph.
6 |
7 | Here's another one with *emphasised* text.
8 |
9 | # Header
10 |
11 | ## Subheader
12 |
13 | > This is a blockquote.
14 | >
15 | > This is the first level of quoting.
16 | >
17 | > > This is nested blockquote.
18 | >
19 | > Back to the first level.
20 |
21 | Numbered list
22 |
23 | 1. First item.
24 | 1. Another.
25 | 1. And another..
26 |
27 | Bulleted list
28 |
29 | * *item*
30 | * item
31 |
32 | [[ikiwiki/WikiLink]]
33 |
--------------------------------------------------------------------------------
/basewiki/shortcuts.mdwn:
--------------------------------------------------------------------------------
1 | [[!if test="enabled(shortcut)"
2 | then="This wiki has shortcuts **enabled**."
3 | else="This wiki has shortcuts **disabled**."]]
4 |
5 | Some examples of using shortcuts include:
6 |
7 | \[[!google foo]]
8 | \[[!wikipedia War_of_1812]]
9 | \[[!debbug 12345]]
10 | Check the \[[!google ikiwiki desc="google search for %s"]].
11 |
12 | This page controls what shortcut links the wiki supports.
13 |
14 | * [[!shortcut name=google url="https://encrypted.google.com/search?q=%s"]]
15 | * [[!shortcut name=archive url="http://web.archive.org/*/%S"]]
16 | * [[!shortcut name=gmap url="https://maps.google.com/maps?q=%s"]]
17 | * [[!shortcut name=gmsg url="https://groups.google.com/groups?selm=%s"]]
18 | * [[!shortcut name=wikipedia url="https://en.wikipedia.org/wiki/%W"]]
19 | * [[!shortcut name=wikitravel url="https://wikitravel.org/en/%s"]]
20 | * [[!shortcut name=wiktionary url="https://en.wiktionary.org/wiki/%s"]]
21 | * [[!shortcut name=debbug url="http://bugs.debian.org/%S" desc="Debian bug #%s"]]
22 | * [[!shortcut name=deblist url="https://lists.debian.org/debian-%s" desc="debian-%s@lists.debian.org"]]
23 | * [[!shortcut name=debpkg url="http://packages.debian.org/%s"]]
24 | * [[!shortcut name=debpkgsid url="http://packages.debian.org/sid/%s"]]
25 | * [[!shortcut name=debpts url="http://packages.qa.debian.org/%s"]]
26 | * [[!shortcut name=debmsg url="https://lists.debian.org/msgid-search/%s"]]
27 | * [[!shortcut name=debrt url="https://rt.debian.org/Ticket/Display.html?id=%s"]]
28 | * [[!shortcut name=debss url="http://snapshot.debian.org/package/%s/"]]
29 | * Usage: `\[[!debss package]]` or `\[[!debss package/version]]`. See for details.
30 | * [[!shortcut name=debwiki url="https://wiki.debian.org/%S"]]
31 | * [[!shortcut name=debcve url="https://security-tracker.debian.org/tracker/%S"]]
32 | * also supports Debian bug numbers, packages and whatever the [security tracker](https://security-tracker.debian.org/tracker/) supports.
33 | * [[!shortcut name=fdobug url="https://bugs.freedesktop.org/show_bug.cgi?id=%s" desc="freedesktop.org bug #%s"]]
34 | * [[!shortcut name=fdolist url="http://lists.freedesktop.org/mailman/listinfo/%s" desc="%s@lists.freedesktop.org"]]
35 | * [[!shortcut name=gnomebug url="https://bugzilla.gnome.org/show_bug.cgi?id=%s" desc="GNOME bug #%s"]]
36 | * [[!shortcut name=linuxbug url="https://bugzilla.kernel.org/show_bug.cgi?id=%s" desc="Linux bug #%s"]]
37 | * [[!shortcut name=mozbug url="https://bugzilla.mozilla.org/show_bug.cgi?id=%s" desc="Mozilla bug #%s"]]
38 | * [[!shortcut name=gnulist url="https://lists.gnu.org/mailman/listinfo/%s" desc="%s@gnu.org"]]
39 | * [[!shortcut name=marcmsg url="http://marc.info/?i=%s"]]
40 | * [[!shortcut name=marclist url="http://marc.info/?l=%s"]]
41 | * [[!shortcut name=gmane url="http://dir.gmane.org/gmane.%s" desc="gmane.%s"]]
42 | * [[!shortcut name=gmanemsg url="http://mid.gmane.org/%s"]]
43 | * [[!shortcut name=cpan url="http://search.cpan.org/search?mode=dist&query=%s"]]
44 | * [[!shortcut name=ctan url="http://tug.ctan.org/cgi-bin/ctanPackageInformation.py?id=%s"]]
45 | * [[!shortcut name=hoogle url="http://haskell.org/hoogle/?q=%s"]]
46 | * [[!shortcut name=iki url="http://ikiwiki.info/%S/"]]
47 | * [[!shortcut name=ljuser url="http://%s.livejournal.com/"]]
48 | * [[!shortcut name=rfc url="https://www.ietf.org/rfc/rfc%s.txt" desc="RFC %s"]]
49 | * [[!shortcut name=c2 url="http://wiki.c2.com/?%s"]]
50 | * [[!shortcut name=meatballwiki url="http://www.usemod.com/cgi-bin/mb.pl?%s"]]
51 | * [[!shortcut name=emacswiki url="http://www.emacswiki.org/cgi-bin/wiki/%s"]]
52 | * [[!shortcut name=haskellwiki url="http://haskell.org/haskellwiki/%s"]]
53 | * [[!shortcut name=dict url="http://www.dict.org/bin/Dict?Form=Dict1&Strategy=*&Database=*&Query=%s"]]
54 | * [[!shortcut name=imdb url="http://imdb.com/find?q=%s"]]
55 | * [[!shortcut name=gpg url="http://pgpkeys.mit.edu:11371/pks/lookup?op=vindex&exact=on&search=0x%s"]]
56 | * [[!shortcut name=perldoc url="http://perldoc.perl.org/search.html?q=%s"]]
57 | * [[!shortcut name=whois url="http://reports.internic.net/cgi/whois?whois_nic=%s&type=domain"]]
58 | * [[!shortcut name=cve url="https://cve.mitre.org/cgi-bin/cvename.cgi?name=%s"]]
59 | * [[!shortcut name=flickr url="https://secure.flickr.com/photos/%s"]]
60 | * [[!shortcut name=man url="http://manpages.debian.org/%s"]]
61 | * [[!shortcut name=ohloh url="https://www.ohloh.net/p/%s"]]
62 | * [[!shortcut name=cpanrt url="https://rt.cpan.org/Ticket/Display.html?id=%s" desc="CPAN RT#%s"]]
63 | * [[!shortcut name=novellbug url="https://bugzilla.novell.com/show_bug.cgi?id=%s" desc="bug %s"]]
64 | * [[!shortcut name=ubupkg url="http://packages.ubuntu.com/%s"]]
65 | * [[!shortcut name=mozillazinekb url="http://kb.mozillazine.org/%s"]]
66 | * [[!shortcut name=freebsdwiki url="http://wiki.freebsd.org/%s"]]
67 | * [[!shortcut name=hackage url="http://hackage.haskell.org/package/%s"]]
68 | * [[!shortcut name=pkgsrc url="http://pkgsrc.se/%S"]]
69 | * [[!shortcut name=doi url="http://dx.doi.org/%s" desc="doi:%s"]]
70 | * [[!shortcut name=arxiv url="http://arxiv.org/abs/%s" desc="arXiv:%s"]]
71 |
72 | To add a new shortcut, use the `shortcut`
73 | [[ikiwiki/directive]]. In the url, "%s" is replaced with the
74 | text passed to the named shortcut, after [[!wikipedia url_encoding]]
75 | it, and '%S' is replaced with the raw, non-encoded text.
76 | Additionally, `%W` is replaced with the text encoded just right for
77 | Wikipedia. The optional `desc` parameter controls the description of
78 | the link.
79 |
80 | Remember that the `name` you give the shortcut will become a new
81 | [[ikiwiki/directive]]. Avoid using a `name` that conflicts
82 | with an existing directive. These directives also accept a `desc`
83 | parameter that will override the one provided at definition time.
84 |
85 | If you come up with a shortcut that you think others might find useful,
86 | consider contributing it to the [shortcuts page on the ikiwiki
87 | wiki](http://ikiwiki.info/shortcuts/), so that future versions of
88 | ikiwiki will include your shortcut in the standard underlay.
89 |
--------------------------------------------------------------------------------
/basewiki/style.css:
--------------------------------------------------------------------------------
1 | /* There isn't much space between the Bootstrap navbar and the page content */
2 | #header {
3 | margin-bottom: 1em;
4 | }
5 |
6 | #header {
7 | border-bottom: 1px solid lightgrey;
8 | }
9 |
10 | #footer {
11 | border-top: 1px solid lightgrey;
12 | }
13 |
14 | #pagedate {
15 | float: right;
16 | }
17 |
18 | /* Bootstrap's navbar packs everything without margins or padding.
19 | * Ensure the search form has some space. */
20 |
21 | #searchform {
22 | margin-left: 1em;
23 | }
24 |
25 | .parentlinks {
26 | margin-right: 1em;
27 | }
28 |
29 | /* Alignment of header and footer items of the default inline pages.
30 | * Using flexbox layout here, since it can wrap when things get too crowded.
31 | * It's a bit better than floats. */
32 | .inlineheader {
33 | display: flex;
34 | }
35 |
36 | .inlineheader header {
37 | flex: 1 1 auto;
38 | }
39 |
40 | .inlineheader {
41 | flex: 0 1 auto;
42 | }
43 |
44 | .inlinefooter {
45 | display: flex;
46 | flex-wrap: wrap;
47 | }
48 |
49 | .inlinefooter .pageinfo {
50 | flex: 1 1 auto;
51 | }
52 |
53 | .inlinefooter .tags {
54 | flex: 0 1 auto;
55 | }
56 |
57 | .inline-actions {
58 | display: inline;
59 | }
60 |
61 | .inline-actions ul, .inline-actions li {
62 | list-style-type: none;
63 | display: inline;
64 | }
65 |
66 | /* Popups */
67 | /* popup template and backlinks hiding */
68 | .popup .balloon,
69 | .popup .paren,
70 | .popup .expand {
71 | position: absolute;
72 | z-index: 1000;
73 | display: none;
74 | color: #373a3c;
75 | text-align: left;
76 | list-style: none;
77 | background-color: #fff;
78 | background-clip: padding-box;
79 | border: 1px solid rgba(0, 0, 0, .15);
80 | border-radius: .25rem;
81 | }
82 |
83 | .balloon ul {
84 | list-style: none;
85 | margin: 0;
86 | padding: 0.5em;
87 | }
88 |
89 | .popup:hover .balloon,
90 | .popup:focus .balloon {
91 | display: inline;
92 | }
93 |
94 | /* Table style, similar to Bootstrap .table-border and with .table-inverse headers */
95 | table {
96 | margin-bottom: 1em;
97 | background-color: white;
98 | display: block;
99 | overflow: auto;
100 | }
101 |
102 | table td, table th {
103 | border: 1px solid #eceeef;
104 | padding: 0.5em;
105 | }
106 |
107 | table th {
108 | color: #eceeef;
109 | background-color: #373a3c;
110 | border-color: #55595c;
111 | }
112 |
113 | table tr:hover {
114 | background-color: #f5f5f5;
115 | }
116 |
117 | /* Rounded corners on tables */
118 | table {
119 | border-collapse: separate;
120 | border-spacing: 0;
121 | }
122 |
123 | table tr:first-child td:first-child, table tr:first-child th:first-child {
124 | border-top-left-radius: 0.25rem;
125 | }
126 | table tr:first-child td:last-child, table tr:first-child th:last-child {
127 | border-top-right-radius: 0.25rem;
128 | }
129 | table tr:last-child td:first-child {
130 | border-bottom-left-radius: 0.25rem;
131 | }
132 | table tr:last-child td:last-child {
133 | border-bottom-right-radius: 0.25rem;
134 | }
135 |
136 | /* Improve look of calendars */
137 | .month-calendar td,
138 | .month-calendar th,
139 | .year-calendar td,
140 | .year-calendar th {
141 | min-width: 2.5em;
142 | text-align: center;
143 | }
144 |
145 | .month-calendar-day-link, .year-calendar-month-link {
146 | background-color: #d9edf7;
147 | }
148 |
149 | /* Give RSS and Atom buttons an orange color */
150 | .feedbutton {
151 | background: #ff8000;
152 | border-color: #e07000;
153 | color: white;
154 | font-weight: bold;
155 | }
156 |
157 | .feedbutton:hover {
158 | background: #ffc080;
159 | }
160 |
161 | /* Carousel alignment */
162 | .carousel-page {
163 | margin: 1em;
164 | }
165 |
166 | .carousel-image {
167 | margin: auto;
168 | }
169 |
170 | /* Improve the Bootstrap blockquote style */
171 | blockquote {
172 | border-left: 4px solid rgba(0,0,0,.1);
173 | padding-left: 0.5em;
174 | }
175 |
176 | /* Fix image width in cards. */
177 | .card-img-top, .card-img-bottom {
178 | width: 100%;
179 | height: auto;
180 | }
181 |
182 | /* Dark mode */
183 | @media only screen and (prefers-color-scheme: dark) {
184 | body {
185 | background-color: #000;
186 | color: #aaa;
187 | }
188 |
189 | .bg-light, #header {
190 | background-color: #333 !important;
191 | border-color: #666;
192 | }
193 |
194 | .card {
195 | background-color: #000 !important;
196 | border-color: #666;
197 | }
198 |
199 | table, tbody {
200 | background-color: inherit;
201 | }
202 |
203 | table td, table th, #footer {
204 | border-color: #666;
205 | }
206 |
207 | blockquote {
208 | border-color: #444;
209 | }
210 |
211 | .card-header, #searchbox {
212 | background-color: #222;
213 | border-color: #666;
214 | }
215 |
216 | #searchform button {
217 | background-color: #666;
218 | border-color: #666;
219 | }
220 |
221 | #searchbox {
222 | color: #aaa;
223 | }
224 |
225 | .text-body {
226 | color: #aaa !important;
227 | }
228 |
229 | a {
230 | color: #5ae;
231 | }
232 |
233 | a:hover {
234 | color: #48d;
235 | }
236 |
237 | table tr:hover {
238 | background-color: #111;
239 | }
240 |
241 | thead th {
242 | background-color: #222;
243 | color: #ccc;
244 | }
245 |
246 | .navbar-toggler img {
247 | filter: invert(1);
248 | }
249 |
--------------------------------------------------------------------------------
/basewiki/templates.mdwn:
--------------------------------------------------------------------------------
1 | [[Ikiwiki]] uses many templates for many purposes. By editing its templates,
2 | you can fully customise its appearance, and avoid duplicate content.
3 |
4 | Ikiwiki uses the HTML::Template module as its template engine. This
5 | supports things like conditionals and loops in templates and is pretty
6 | easy to learn. All you really need to know to modify templates is this:
7 |
8 | * To insert the value of a template variable, use ``.
9 | * To make a block of text conditional on a variable being set use
10 | `text`.
11 | * To use one block of text if a variable is set and a second if it's not,
12 | use `textother text`
13 |
14 | [[!if test="enabled(template) or enabled(edittemplate)" then="""
15 | ## template pages
16 |
17 | Template pages are regular wiki pages containing a
18 | [[!iki ikiwiki/directive/templatebody desc="templatebody directive"]],
19 | used as templates for other pages. The parts of the template
20 | page outside the directive can be used to document it.
21 | """]]
22 |
23 | [[!if test="enabled(template)" then="""
24 | The [[!iki ikiwiki/directive/template desc="template directive"]] allows
25 | template pages to be filled out and inserted into other pages in the wiki.
26 | """]]
27 |
28 | [[!if test="enabled(edittemplate)" then="""
29 | The [[!iki ikiwiki/directive/edittemplate desc="edittemplate directive"]] can
30 | be used to make new pages default to containing text from a template
31 | page, which can be filled out as the page is edited.
32 | """]]
33 |
34 | [[!if test="(enabled(template) or enabled(edittemplate))
35 | and enabled(inline)" then="""
36 | These template pages are currently available:
37 |
38 | [[!inline pages="templates/* and !*.tmpl and !templates/*/* and !*/discussion"
39 | feeds=no archive=yes sort=title template=titlepage
40 | rootpage=templates postformtext="Add a new template page named:"]]
41 | """]]
42 |
43 | If the template does not contain a `templatebody` directive, the entire
44 | source of the page is used for the template. This is deprecated.
45 |
46 | ## template files
47 |
48 | Template files are unlike template pages in that they have the extension
49 | `.tmpl`. Template files are used extensively by Ikiwiki to generate html.
50 | They can contain html that would not normally be allowed on a wiki page.
51 |
52 | Template files are located in `/usr/share/ikiwiki/templates` by default;
53 | the `templatedir` setting can be used to make another directory be
54 | searched first. Customised template files can also be placed inside the
55 | "templates/" directory in your wiki's source -- files placed there override
56 | ones in the `templatedir`.
57 |
58 | Here is a full list of the template files used:
59 |
60 | * `page.tmpl` - Used for displaying all regular wiki pages. This is the
61 | key template to customise to change the look and feel of Ikiwiki.
62 | [[!if test="enabled(pagetemplate)" then="""
63 | (The [[!iki ikiwiki/directive/pagetemplate desc="pagetemplate directive"]]
64 | can be used to make a page use a different template than `page.tmpl`.)"""]]
65 | * `rsspage.tmpl` - Used for generating rss feeds for blogs.
66 | * `rssitem.tmpl` - Used for generating individual items on rss feeds.
67 | * `atompage.tmpl` - Used for generating atom feeds for blogs.
68 | * `atomitem.tmpl` - Used for generating individual items on atom feeds.
69 | * `inlinepage.tmpl` - Used for displaying a post in a blog.
70 | * `archivepage.tmpl` - Used for listing a page in a blog archive page.
71 | * `titlepage.tmpl` - Used for listing a page by title in a blog archive page.
72 | * `microblog.tmpl` - Used for showing a microblogging post inline.
73 | * `blogpost.tmpl` - Used for a form to add a post to a blog (and rss/atom links)
74 | * `feedlink.tmpl` - Used to add rss/atom links if `blogpost.tmpl` is not used.
75 | * `aggregatepost.tmpl` - Used by the aggregate plugin to create
76 | a page for a post.
77 | * `searchform.tmpl`, `googleform.tmpl` - Used by the search plugin
78 | and google plugin to add search forms to wiki pages.
79 | * `searchquery.tmpl` - This is a Omega template, used by the
80 | search plugin.
81 | * `comment.tmpl` - Used by the comments plugin to display a comment.
82 | * `change.tmpl` - Used to create a page describing a change made to the wiki.
83 | * `recentchanges.tmpl` - Used for listing a change on the RecentChanges page.
84 | * `autoindex.tmpl` - Filled in by the autoindex plugin to make index pages.
85 | * `autotag.tmpl` - Filled in by the tag plugin to make tag pages.
86 | * `calendarmonth.tmpl`, `calendaryear.tmpl` - Used by ikiwiki-calendar to
87 | make calendar archive pages.
88 | * `trails.tmpl` - Used by the trail plugin to generate links on each page
89 | that is a member of a trail.
90 | * `notifyemail.tmpl` - Used by the notifymail plugin to generate mails about
91 | changed pages.
92 | * `editpage.tmpl`, `editconflict.tmpl`, `editcreationconflict.tmpl`,
93 | `editfailedsave.tmpl`, `editpagegone.tmpl`, `pocreatepage.tmpl`,
94 | `editcomment.tmpl` `commentmoderation.tmpl`, `renamesummary.tmpl`,
95 | `passwordmail.tmpl`, `emailauth.tmpl`, `login-selector.tmpl`,
96 | `revert.tmpl` - Parts of ikiwiki's user interface; do not normally need
97 | to be customised.
98 |
99 |
100 | [[!meta robots="noindex, follow"]]
101 |
--------------------------------------------------------------------------------
/basewiki/templates/note.mdwn:
--------------------------------------------------------------------------------
1 | [[!templatebody <
3 |
4 |
5 | ENDBODY]]
6 |
7 | Use this template to insert a note into a page. The note will be styled to
8 | float to the right of other text on the page. This template has one
9 | parameter:
10 |
11 |
`text` - the text to display in the note
12 |
13 |
--------------------------------------------------------------------------------
/basewiki/templates/popup.mdwn:
--------------------------------------------------------------------------------
1 | Use this template to create a popup window that is displayed when the mouse
2 | is over part of the page. This template has two parameters:
3 |
4 |
`mouseover` - This is the text or other content that triggers the
5 | popup.
6 |
`popup` - This should be the content of the popup window. It can be
7 | anything, even images or a whole little wiki page, but should not be too
8 | large for good usability.
9 |
10 | Note that browsers that do not support the CSS will display the popup
11 | inline in the page, inside square brackets.
12 |
13 | [[!templatebody <
15 | []
16 |
17 | ENDBODY]]
18 |
--------------------------------------------------------------------------------
/basewiki/wikiicons/diff.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gsliepen/ikistrap/dba7cf02f08173bac178ab4a7b281a367fe21344/basewiki/wikiicons/diff.png
--------------------------------------------------------------------------------
/basewiki/wikiicons/email.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gsliepen/ikistrap/dba7cf02f08173bac178ab4a7b281a367fe21344/basewiki/wikiicons/email.png
--------------------------------------------------------------------------------
/basewiki/wikiicons/openidlogin-bg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gsliepen/ikistrap/dba7cf02f08173bac178ab4a7b281a367fe21344/basewiki/wikiicons/openidlogin-bg.gif
--------------------------------------------------------------------------------
/basewiki/wikiicons/revert.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gsliepen/ikistrap/dba7cf02f08173bac178ab4a7b281a367fe21344/basewiki/wikiicons/revert.png
--------------------------------------------------------------------------------
/basewiki/wikiicons/search-bg.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gsliepen/ikistrap/dba7cf02f08173bac178ab4a7b281a367fe21344/basewiki/wikiicons/search-bg.gif
--------------------------------------------------------------------------------
/example.setup:
--------------------------------------------------------------------------------
1 | # IkiWiki::Setup::Yaml - YAML formatted setup file
2 | #
3 | # Setup file for ikiwiki.
4 | #
5 | # Passing this to ikiwiki --setup will make ikiwiki generate
6 | # wrappers and build the wiki.
7 | #
8 | # Remember to re-run ikiwiki --setup any time you edit this file.
9 | #
10 | # name of the wiki
11 | wikiname: Ikistrap example
12 | # contact email for wiki
13 | adminemail: me@example.com
14 | # users who are wiki admins
15 | adminuser: []
16 | # users who are banned from the wiki
17 | banned_users: []
18 | # where the source of the wiki is located
19 | srcdir: example
20 | # where to build the wiki
21 | destdir: example.html
22 | # base url to the wiki
23 | url: file://example.html/
24 | # url to the ikiwiki.cgi
25 | cgiurl: cgi
26 | # do not adjust cgiurl if CGI is accessed via different URL
27 | reverse_proxy: 0
28 | # filename of cgi wrapper to generate
29 | cgi_wrapper: example/cgi_wrapper
30 | # mode for cgi_wrapper (can safely be made suid)
31 | cgi_wrappermode: 06755
32 | # number of seconds to delay CGI requests when overloaded
33 | cgi_overload_delay: ''
34 | # message to display when overloaded (may contain html)
35 | cgi_overload_message: ''
36 | # enable optimization of only refreshing committed changes?
37 | only_committed_changes: 0
38 | # rcs backend to use
39 | rcs: ''
40 | # plugins to add to the default configuration
41 | add_plugins:
42 | - 404
43 | - goodstuff
44 | - favicon
45 | - poll
46 | - google
47 | - sidebar
48 | - highlight
49 | - typography
50 | - comments
51 | - calendar
52 | - ikistrap
53 | # plugins to disable
54 | disable_plugins:
55 | - htmlscrubber
56 | # additional directory to search for template files
57 | templatedir: templates
58 | # base wiki source location
59 | underlaydir: basewiki
60 | # display verbose messages?
61 | verbose: 1
62 | # log to syslog?
63 | #syslog: 1
64 | # create output files named page/index.html?
65 | usedirs: 1
66 | # use '!'-prefixed preprocessor directives?
67 | prefix_directives: 1
68 | # use page/index.mdwn source files
69 | indexpages: 1
70 | # enable Discussion pages?
71 | discussion: 1
72 | # name of Discussion pages
73 | discussionpage: Discussion
74 | # use elements new in HTML5 like ?
75 | html5: 0
76 | # only send cookies over SSL connections?
77 | sslcookie: 0
78 | # extension to use for new pages
79 | default_pageext: mdwn
80 | # extension to use for html files
81 | htmlext: html
82 | # strftime format string to display date
83 | timeformat: '%c'
84 | # UTF-8 locale to use
85 | #locale: en_US.UTF-8
86 | # put user pages below specified page
87 | userdir: ''
88 | # how many backlinks to show before hiding excess (0 to show all)
89 | numbacklinks: 10
90 | # attempt to hardlink source files? (optimisation for large files)
91 | hardlink: 0
92 | # force ikiwiki to use a particular umask (keywords public, group or private, or a number)
93 | umask: 18
94 | # group for wrappers to run in
95 | #wrappergroup: ikiwiki
96 | # extra library and plugin directories
97 | libdirs: []
98 | # extra library and plugin directory (searched after libdirs)
99 | libdir: lib
100 | # environment variables
101 | ENV: {}
102 | # time zone name
103 | timezone: :/etc/localtime
104 | # regexp of normally excluded files to include
105 | #include: ^\.htaccess$
106 | # regexp of files that should be skipped
107 | #exclude: ^(*\.private|Makefile)$
108 | # specifies the characters that are allowed in source filenames
109 | wiki_file_chars: -[:alnum:]+/.:_
110 | # allow symlinks in the path leading to the srcdir (potentially insecure)
111 | allow_symlinks_before_srcdir: 0
112 | # cookie control
113 | cookiejar:
114 | file: /home/users/guus/.ikiwiki/cookies
115 | # set custom user agent string for outbound HTTP requests e.g. when fetching aggregated RSS feeds
116 | useragent: ikiwiki/3.20160121
117 | # theme has a responsive layout? (mobile-optimized)
118 | responsive_layout: 1
119 | # try harder to produce deterministic output
120 | deterministic: 0
121 |
122 | ######################################################################
123 | # core plugins
124 | # (editpage, htmlscrubber, inline, link, meta, parentlinks, templatebody)
125 | ######################################################################
126 |
127 | # htmlscrubber plugin
128 | # PageSpec specifying pages not to scrub
129 | #htmlscrubber_skip: '!*/Discussion'
130 |
131 | # inline plugin
132 | # enable rss feeds by default?
133 | rss: 1
134 | # enable atom feeds by default?
135 | atom: 1
136 | # allow rss feeds to be used?
137 | #allowrss: 0
138 | # allow atom feeds to be used?
139 | #allowatom: 0
140 | # urls to ping (using XML-RPC) on feed update
141 | pingurl: []
142 |
143 | ######################################################################
144 | # auth plugins
145 | # (anonok, blogspam, emailauth, httpauth, lockedit, moderatedcomments,
146 | # opendiscussion, openid, passwordauth, signinedit)
147 | ######################################################################
148 |
149 | # anonok plugin
150 | # PageSpec to limit which pages anonymous users can edit
151 | #anonok_pagespec: '*/discussion'
152 |
153 | # blogspam plugin
154 | # PageSpec of pages to check for spam
155 | #blogspam_pagespec: postcomment(*)
156 | # options to send to blogspam server
157 | #blogspam_options: blacklist=1.2.3.4,blacklist=8.7.6.5,max-links=10
158 | # blogspam server JSON url
159 | #blogspam_server: ''
160 |
161 | # emailauth plugin
162 | # email address to send emailauth mails as (default: adminemail)
163 | #emailauth_sender: ''
164 |
165 | # httpauth plugin
166 | # url to redirect to when authentication is needed
167 | #cgiauthurl: http://example.com/wiki/auth/ikiwiki.cgi
168 | # PageSpec of pages where only httpauth will be used for authentication
169 | #httpauth_pagespec: '!*/Discussion'
170 |
171 | # lockedit plugin
172 | # PageSpec controlling which pages are locked
173 | #locked_pages: '!*/Discussion'
174 |
175 | # moderatedcomments plugin
176 | # PageSpec matching users or comment locations to moderate
177 | #moderate_pagespec: '*'
178 |
179 | # openid plugin
180 | # url pattern of openid realm (default is cgiurl)
181 | #openid_realm: ''
182 | # url to ikiwiki cgi to use for openid authentication (default is cgiurl)
183 | #openid_cgiurl: ''
184 |
185 | # passwordauth plugin
186 | # a password that must be entered when signing up for an account
187 | #account_creation_password: s3cr1t
188 | # cost of generating a password using Authen::Passphrase::BlowfishCrypt
189 | #password_cost: 8
190 |
191 | ######################################################################
192 | # format plugins
193 | # (creole, highlight, hnb, html, mdwn, otl, rawhtml, rst, textile, txt)
194 | ######################################################################
195 |
196 | # highlight plugin
197 | # types of source files to syntax highlight
198 | #tohighlight: .c .h .cpp .pl .py Makefile:make
199 | # location of highlight's filetypes.conf
200 | filetypes_conf: /etc/highlight/filetypes.conf
201 | # location of highlight's langDefs directory
202 | langdefdir: /usr/share/highlight/langDefs
203 |
204 | # mdwn plugin
205 | # enable multimarkdown features?
206 | multimarkdown: 1
207 | # disable use of markdown discount?
208 | #nodiscount: 0
209 |
210 | ######################################################################
211 | # special-purpose plugins
212 | # (osm, underlay)
213 | ######################################################################
214 |
215 | # osm plugin
216 | # the default zoom when you click on the map link
217 | #osm_default_zoom: 15
218 | # the icon shown on links and on the main map
219 | #osm_default_icon: ikiwiki/images/osm.png
220 | # the alt tag of links, defaults to empty
221 | #osm_alt: ''
222 | # the output format for waypoints, can be KML, GeoJSON or CSV (one or many, comma-separated)
223 | #osm_format: KML
224 | # the icon attached to a tag, displayed on the map for tagged pages
225 | #osm_tag_default_icon: icon.png
226 | # Url for the OpenLayers.js file
227 | #osm_openlayers_url: http://www.openlayers.org/api/OpenLayers.js
228 | # Layers to use in the map. Can be either the 'OSM' string or a type option for Google maps (GoogleNormal, GoogleSatellite, GoogleHybrid or GooglePhysical). It can also be an arbitrary URL in a syntax acceptable for OpenLayers.Layer.OSM.url parameter.
229 | #osm_layers:
230 | # OSM: GoogleSatellite
231 | # Google maps API key, Google layer not used if missing, see https://code.google.com/apis/console/ to get an API key
232 | #osm_google_apikey: ''
233 |
234 | # underlay plugin
235 | # extra underlay directories to add
236 | #add_underlays:
237 | #- /home/guus/wiki.underlay
238 |
239 | ######################################################################
240 | # web plugins
241 | # (404, attachment, comments, editdiff, edittemplate, google, goto,
242 | # ikistrap, mirrorlist, remove, rename, repolist, search, theme,
243 | # userlist, websetup, wmd)
244 | ######################################################################
245 |
246 | # attachment plugin
247 | # enhanced PageSpec specifying what attachments are allowed
248 | #allowed_attachments: virusfree() and mimetype(image/*) and maxsize(50kb)
249 | # virus checker program (reads STDIN, returns nonzero if virus found)
250 | #virus_checker: clamdscan -
251 |
252 | # comments plugin
253 | # PageSpec of pages where comments are allowed
254 | comments_pagespec: comments and !*/Discussion
255 | # PageSpec of pages where posting new comments is not allowed
256 | comments_closed_pagespec: ''
257 | # Base name for comments, e.g. "comment_" for pages like "sandbox/comment_12"
258 | comments_pagename: comment_
259 | # Interpret directives in comments?
260 | #comments_allowdirectives: 0
261 | # Allow anonymous commenters to set an author name?
262 | #comments_allowauthor: 0
263 | # commit comments to the VCS
264 | comments_commit: 1
265 | # Restrict formats for comments to (no restriction if empty)
266 | comments_allowformats: ''
267 |
268 | # ikistrap plugin
269 | # Install Bootstrap css and js files locally instead of using jsDelivr?
270 | #bootstrap_local: 0
271 | # Load Bootstrap's Javascript helpers?
272 | #bootstrap_js: 1
273 |
274 | # mirrorlist plugin
275 | # list of mirrors
276 | #mirrorlist: {}
277 | # generate links that point to the mirrors' ikiwiki CGI
278 | #mirrorlist_use_cgi: 1
279 |
280 | # repolist plugin
281 | # URIs of repositories containing the wiki's source
282 | #repositories:
283 | #- svn://svn.example.org/wiki/trunk
284 |
285 | # search plugin
286 | # path to the omega cgi program
287 | #omega_cgi: /usr/lib/cgi-bin/omega/omega
288 | # use google site search rather than internal xapian index?
289 | #google_search: 1
290 |
291 | # theme plugin
292 | # name of theme to enable
293 | #theme: actiontabs
294 |
295 | # websetup plugin
296 | # list of plugins that cannot be enabled/disabled via the web interface
297 | #websetup_force_plugins: []
298 | # list of additional setup field keys to treat as unsafe
299 | #websetup_unsafe: []
300 | # show unsafe settings, read-only, in web interface?
301 | #websetup_show_unsafe: 1
302 |
303 | ######################################################################
304 | # widget plugins
305 | # (calendar, color, conditional, cutpaste, date, format, fortune,
306 | # graphviz, haiku, headinganchors, img, linkmap, listdirectives, map,
307 | # more, orphans, pagecount, pagestats, poll, polygen, postsparkline,
308 | # progress, shortcut, sparkline, table, template, teximg, toc, toggle,
309 | # version)
310 | ######################################################################
311 |
312 | # calendar plugin
313 | # base of the archives hierarchy
314 | archivebase: archives
315 | # PageSpec of pages to include in the archives, if option `calendar_autocreate` is true.
316 | archive_pagespec: '*'
317 | # autocreate new calendar pages?
318 | calendar_autocreate: 1
319 | # if set, when building calendar pages, also build pages of year and month when no pages were published (building empty calendars).
320 | calendar_fill_gaps: 0
321 |
322 | # listdirectives plugin
323 | # directory in srcdir that contains directive descriptions
324 | #directive_description_dir: ikiwiki/directive
325 |
326 | # teximg plugin
327 | # Should teximg use dvipng to render, or dvips and convert?
328 | #teximg_dvipng: ''
329 | # LaTeX prefix for teximg plugin
330 | #teximg_prefix: '\documentclass{article}
331 | #
332 | # \usepackage[utf8]{inputenc}
333 | #
334 | # \usepackage{amsmath}
335 | #
336 | # \usepackage{amsfonts}
337 | #
338 | # \usepackage{amssymb}
339 | #
340 | # \pagestyle{empty}
341 | #
342 | # \begin{document}
343 | #
344 | #'
345 | # LaTeX postfix for teximg plugin
346 | #teximg_postfix: \end{document}
347 |
348 | ######################################################################
349 | # other plugins
350 | # (aggregate, autoindex, brokenlinks, camelcase, ddate, embed, favicon,
351 | # filecheck, flattr, goodstuff, htmlbalance, localstyle, loginselector,
352 | # notifyemail, pagetemplate, pingee, pinger, prettydate, recentchanges,
353 | # recentchangesdiff, relativedate, rsync, sidebar, smiley,
354 | # sortnaturally, tag, testpagespec, trail, transient)
355 | ######################################################################
356 |
357 | # aggregate plugin
358 | # enable aggregation to internal pages?
359 | aggregateinternal: 1
360 | # allow aggregation to be triggered via the web?
361 | #aggregate_webtrigger: 0
362 |
363 | # autoindex plugin
364 | # commit autocreated index pages
365 | #autoindex_commit: 1
366 |
367 | # camelcase plugin
368 | # list of words to not turn into links
369 | #camelcase_ignore: []
370 |
371 | # flattr plugin
372 | # userid or user name to use by default for Flattr buttons
373 | #flattr_userid: joeyh
374 |
375 | # pinger plugin
376 | # how many seconds to try pinging before timing out
377 | #pinger_timeout: 15
378 |
379 | # prettydate plugin
380 | # format to use to display date
381 | prettydateformat: '%B %o %Y'
382 |
383 | # recentchanges plugin
384 | # name of the recentchanges page
385 | recentchangespage: recentchanges
386 | # number of changes to track
387 | recentchangesnum: 25
388 |
389 | # rsync plugin
390 | # command to run to sync updated pages
391 | #rsync_command: rsync -qa --delete . user@host:/path/to/docroot/
392 |
393 | # sidebar plugin
394 | # show sidebar page on all pages?
395 | #global_sidebars: 1
396 |
397 | # tag plugin
398 | # parent page tags are located under
399 | tagbase: tag
400 | # autocreate new tag pages?
401 | #tag_autocreate: 1
402 | # commit autocreated tag pages
403 | tag_autocreate_commit: 1
404 |
--------------------------------------------------------------------------------
/example/Anemones.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gsliepen/ikistrap/dba7cf02f08173bac178ab4a7b281a367fe21344/example/Anemones.jpg
--------------------------------------------------------------------------------
/example/Bootstrap_features.mdwn:
--------------------------------------------------------------------------------
1 | # Bootstrap features
2 |
3 | This page will contain a display of various features from Bootstrap.
4 | They require some manual HTML tags.
5 | Note that not all Markdown parsers allow Markdown markup inside all HTML tags.
6 | In the case of MultiMarkdown, adding `markdown="1"` to outer `div` elements usually allows markup to be used inside them.
7 | For a full list of features provided by Bootstrap 5, go to .
8 |
9 |
10 | ## Badges Hi!
11 |
12 | Span elements work inside Markdown headings.
13 |
14 |
15 |
16 | ## Cards
17 |
18 | Put a border with soft round corners around your content.
19 |
20 |
21 |
22 |
23 |
24 | ## Cards groups
25 |
26 |
27 | These require some more work.
28 | You can use the `\[[!img]]` directive, but make sure to add `class="card-img-top"` or `class="card-img-bottom"` where appropriate.
29 | For images in cards to work properly, they need to have their width forced to 100% of their container.
30 | This is done in the `style.css` file that comes with ikistrap.
31 |
32 | Another issue is that due to all the nested HTML tags, even with `markdown="1"`, Markdown markup does not get parsed anymore.
33 |
34 |
57 | Sea stars are also less dangerous than lemon sharks, but they are slightly more dangerous than
58 | anemones, especially when stepped on.
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 | ## Grid cards
68 |
69 | Use the grid system to lay out cards in ordered grids.
70 | These can be created by writing the outer `div` elements yourself,
71 | and using `\[[!inline]]` with `template="gridcard"` to generate the cards.
72 |
73 |
74 | [[!inline pages="sample_text/* and !*/Discussion" template="gridcard" feeds="no"]]
75 |
76 |
77 |
78 | ## Carousel
79 |
80 | These can be created by writing the outer two carousel `div` elements yourself,
81 | and using `\[[!inline]]` with `template="carouselpage"` to generate the carousel items.
82 | However, care must be taken to properly style the contents of the carousel.
83 | You might want to copy the carouselpage template and edit it to ensure the contents of the carousel have big enough margins.
84 | You also need to ensure all pages have the same height, or enforce a fixed height for the whole carousel.
85 | Here is an example with bare text:
86 |
87 |
88 |
89 |
90 | [[!inline pages="sample_text/* and !*/Discussion" template="carouselpage" feeds="no"]]
91 |
92 |
96 |
100 |
101 |
102 |
103 | If you only want to show images, use `template="carouselimage"`, and select your images directly with the `pages` parameter.
104 |
105 |
119 |
120 |
121 | ## Progress bars
122 |
123 | Ikistrap also provides a progress directive which works in the same way as the progress plugin,
124 | but it also allows an extra class to be specified to change the style per bar.
125 |
126 | [[!progress totalpages="* and !*/Discussion" donepages="*/Discussion"]]
127 | [[!progress percent="33%" class="bg-info" height="2em"]]
128 | [[!progress percent="66%" class="bg-success progress-bar-striped progress-bar-animated" height="3em"]]
129 |
130 | ## Other stuff
131 |
132 | Goes here.
133 |
134 |
--------------------------------------------------------------------------------
/example/Calendars.mdwn:
--------------------------------------------------------------------------------
1 | # Calendar
2 |
3 | This is an example of the ikiwiki calendar function.
4 | Here is a monthly calendar:
5 |
6 | [[!calendar type="month"]]
7 |
8 | And this is a yearly calendar:
9 |
10 | [[!calendar type="year"]]
11 |
--------------------------------------------------------------------------------
/example/Comments.mdwn:
--------------------------------------------------------------------------------
1 | # Comments
2 |
3 | This is an example of a page where comments are allowed.
4 |
--------------------------------------------------------------------------------
/example/Comments/comment_1._comment:
--------------------------------------------------------------------------------
1 | [[!comment format=mdwn
2 | username="Anonymous Coward"
3 | subject="Indeed"
4 | date="2009-06-02T19:05:00Z"
5 | content="""
6 | Hi, I just want to say that I totally agree with you.
7 | Have a nice day!
8 | """
9 | ]]
10 |
--------------------------------------------------------------------------------
/example/Comments/comment_2._comment:
--------------------------------------------------------------------------------
1 | [[!comment format=mdwn
2 | username="Pseudonymous Person"
3 | subject="I am disagree"
4 | date="2009-06-02T19:05:01Z"
5 | content="""
6 | I don't think so. Eggs should neither be capped at the top or at the bottom.
7 | Symmetry is only attained by slicing it in half in a plane spanned by the line between the top and bottom.
8 | """
9 | ]]
10 |
--------------------------------------------------------------------------------
/example/Inline_pages.mdwn:
--------------------------------------------------------------------------------
1 | # Inline pages
2 |
3 | Here is an example of inline pages using the default inlining theme:
4 |
5 | [[!inline pages="sample_text/* and !*/Discussion" reverse="yes" limit="3"]]
6 |
7 | Here is an example of inlining with actions enabled:
8 |
9 | [[!inline pages="sample_text/* and !*/Discussion" reverse="yes" skip="3" limit="2" actions="1"]]
10 |
--------------------------------------------------------------------------------
/example/Lemonshark.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gsliepen/ikistrap/dba7cf02f08173bac178ab4a7b281a367fe21344/example/Lemonshark.jpg
--------------------------------------------------------------------------------
/example/Sea_Star.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gsliepen/ikistrap/dba7cf02f08173bac178ab4a7b281a367fe21344/example/Sea_Star.jpg
--------------------------------------------------------------------------------
/example/index.mdwn:
--------------------------------------------------------------------------------
1 | # Welcome
2 |
3 | This is an example wiki to show off the ikistrap theme.
4 | Ikistrap tries to provide a fully-featured, modern looking HTML5 theme for ikiwiki.
5 | It uses Bootstrap 5 and Bootstrap Icons.
6 |
7 | ## Features
8 |
9 | Ikistrap has the following features:
10 |
11 | * Good use of HTML5 semantic elements.
12 | * Responsive layout.
13 | * Standards-compliant.
14 | * Compatible with text-only browsers.
15 | * Header supporting parentlinks, wiki actions, search form, language selection and trails.
16 | * Sidebar styled as a Boostrap 5 card, using the Bootstrap 5 grid system.
17 | * Footer that is pushed down to the bottom of the screen with tags, backlinks, copyright, license and modification date.
18 | * [[Inline pages]] that are by default styled as Bootstrap 5 cards.
19 | * [[Comments]]
20 | * [[Calendars]]
21 |
22 | Note that ikistrap doesn't add any special support for Bootstrap to the Markdown language.
23 | If you want to make use of [[Bootstrap features]] inside your text, you will have to manually add the appropriate HTML tags.
24 |
25 |
--------------------------------------------------------------------------------
/example/inlinetest.mdwn:
--------------------------------------------------------------------------------
1 | [[!inline pages="sample_text/*"]]
2 |
--------------------------------------------------------------------------------
/example/sample_text/Donec_dapibus.mdwn:
--------------------------------------------------------------------------------
1 | Donec dapibus orci sit amet elit. Maecenas rutrum ultrices lectus. Aliquam suscipit, lacus a iaculis adipiscing, eros orci pellentesque nisl, non pharetra dolor urna nec dolor. Integer cursus dolor vel magna. Integer ultrices feugiat sem. Proin nec nibh. Duis eu dui quis nunc sagittis lobortis. Fusce pharetra, enim ut sodales luctus, lectus arcu rhoncus purus, in fringilla augue elit vel lacus. In hac habitasse platea dictumst. Aliquam erat volutpat. Fusce iaculis elit id tellus. Ut accumsan malesuada turpis. Suspendisse potenti. Vestibulum lacus augue, lobortis mattis, laoreet in, varius at, nisi. Nunc gravida. Phasellus faucibus. In hac habitasse platea dictumst. Integer tempor lacus eget lectus. Praesent fringilla augue fringilla dui.
2 |
--------------------------------------------------------------------------------
/example/sample_text/Donec_semper.mdwn:
--------------------------------------------------------------------------------
1 | Donec semper, sem nec tristique tempus, justo neque commodo nisl, ut gravida sem tellus suscipit nunc. Aliquam erat volutpat. Ut tincidunt pretium elit. Aliquam pulvinar. Nulla cursus. Suspendisse potenti. Etiam condimentum hendrerit felis. Duis iaculis aliquam enim. Donec dignissim augue vitae orci. Curabitur luctus felis a metus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In varius neque at enim. Suspendisse massa nulla, viverra in, bibendum vitae, tempor quis, lorem.
2 |
--------------------------------------------------------------------------------
/example/sample_text/Lorem_ipsum.mdwn:
--------------------------------------------------------------------------------
1 | [[!meta author="Cicero"]]
2 |
3 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed at ante. Mauris eleifend, quam a vulputate dictum, massa quam dapibus leo, eget vulputate orci purus ut lorem. In fringilla mi in ligula. Pellentesque aliquam quam vel dolor. Nunc adipiscing. Sed quam odio, tempus ac, aliquam molestie, varius ac, tellus. Vestibulum ut nulla aliquam risus rutrum interdum. Pellentesque lorem. Curabitur sit amet erat quis risus feugiat viverra. Pellentesque augue justo, sagittis et, lacinia at, venenatis non, arcu. Nunc nec libero. In cursus dictum risus. Etiam tristique nisl a nulla. Ut a orci. Curabitur dolor nunc, egestas at, accumsan at, malesuada nec, magna.
4 |
--------------------------------------------------------------------------------
/example/sample_text/Nulla_facilisi.mdwn:
--------------------------------------------------------------------------------
1 | [[!tag Cicero Latin typesetting]]
2 | Nulla facilisi. Nunc volutpat. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut sit amet orci vel mauris blandit vehicula. Nullam quis enim. Integer dignissim viverra velit. Curabitur in odio. In hac habitasse platea dictumst. Ut consequat, tellus eu volutpat varius, justo orci elementum dolor, sed imperdiet nulla tellus ut diam. Vestibulum ipsum ante, malesuada quis, tempus ac, placerat sit amet, elit.
3 |
--------------------------------------------------------------------------------
/example/sample_text/Sed_eget.mdwn:
--------------------------------------------------------------------------------
1 | Sed eget turpis a pede tempor malesuada. Vivamus quis mi at leo pulvinar hendrerit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Pellentesque aliquet lacus vitae pede. Nullam mollis dolor ac nisi. Phasellus sit amet urna. Praesent pellentesque sapien sed lacus. Donec lacinia odio in odio. In sit amet elit. Maecenas gravida interdum urna. Integer pretium, arcu vitae imperdiet facilisis, elit tellus tempor nisi, vel feugiat ante velit sit amet mauris. Vivamus arcu. Integer pharetra magna ac lacus. Aliquam vitae sapien in nibh vehicula auctor. Suspendisse leo mauris, pulvinar sed, tempor et, consequat ac, lacus. Proin velit. Nulla semper lobortis mauris. Duis urna erat, ornare et, imperdiet eu, suscipit sit amet, massa. Nulla nulla nisi, pellentesque at, egestas quis, fringilla eu, diam.
2 |
--------------------------------------------------------------------------------
/example/sidebar.mdwn:
--------------------------------------------------------------------------------
1 | This is the sidebar.
2 |
3 | * [[/index]]
4 | * [[ikiwiki]]
5 | * [[sandbox]]
6 | * [[shortcuts]]
7 | * [[templates]]
8 |
9 | ``Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam tortor augue, lacinia eget libero eget, imperdiet scelerisque neque. Nam pretium dui sit amet rhoncus commodo. Sed eget faucibus purus, vel vulputate nulla. Sed accumsan odio ac dui vulputate, non venenatis velit iaculis. Quisque efficitur orci in tellus tincidunt, non maximus nisi finibus. Vestibulum tristique id eros ut dictum. Integer congue euismod metus, at feugiat nunc sagittis quis. Curabitur iaculis mi eget volutpat sodales. Ut nec dui et mi cursus tempor ac et sem. Nulla felis neque, congue tristique ultricies a, vehicula a ante.''
10 |
--------------------------------------------------------------------------------
/ikistrap.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
181 |
--------------------------------------------------------------------------------
/lib/IkiWiki/Plugin/ikistrap.pm:
--------------------------------------------------------------------------------
1 | #!/usr/bin/perl
2 | package IkiWiki::Plugin::ikistrap;
3 |
4 | use warnings;
5 | use strict;
6 | use IkiWiki 3.00;
7 |
8 | sub import {
9 | hook(type => "checkconfig", id => "ikistrap", call => \&checkconfig);
10 | hook(type => "getsetup", id => "ikistrap", call => \&getsetup);
11 | hook(type => "refresh", id => "ikistrap", call => \&refresh);
12 | hook(type => "pagetemplate", id => "ikistrap", call => \&pagetemplate);
13 | hook(type => "preprocess", id => "progress", call => \&progress);
14 | }
15 |
16 | sub checkconfig() {
17 | if (! defined $config{bootstrap_js}) {
18 | $config{bootstrap_js} = 1;
19 | }
20 | }
21 |
22 | sub getsetup() {
23 | return
24 | plugin => {
25 | description => "Bootstrap 5 theme support",
26 | section => "web",
27 | safe => 1,
28 | },
29 | bootstrap_local => {
30 | description => "Install Bootstrap css and js files locally instead of using jsDelivr?",
31 | example => 0,
32 | type => "boolean",
33 | default => 0,
34 | rebuild => 1,
35 | },
36 | bootstrap_js => {
37 | description => "Load Bootstrap's Javascript helpers?",
38 | example => 0,
39 | type => "boolean",
40 | default => 1,
41 | rebuild => 1,
42 | }
43 | }
44 |
45 | sub check($$) {
46 | my($basename, $href) = @_;
47 | my $filename = "$config{destdir}/$basename";
48 | return if(-e $filename);
49 | debug("Fetching missing $basename...");
50 | system("/usr/bin/curl -# \"$href\" -o \"$filename\"");
51 | }
52 |
53 | sub refresh() {
54 | return 0 unless($config{bootstrap_local});
55 | mkdir("$config{destdir}");
56 |
57 | # CSS
58 | mkdir("$config{destdir}/css");
59 | check("css/bootstrap.min.css", "https://cdn.jsdelivr.net/npm/bootstrap\@5.0.0/dist/css/bootstrap.min.css");
60 | check("css/bootstrap-icons.css", "https://cdn.jsdelivr.net/npm/bootstrap-icons\@1.4.1/font/bootstrap-icons.css");
61 |
62 | # Fonts
63 | mkdir("$config{destdir}/css/fonts");
64 | check("css/fonts/bootstrap-icons.woff2", "https://cdn.jsdelivr.net/npm/bootstrap-icons\@1.4.1/font/fonts/bootstrap-icons.woff2");
65 |
66 | # JavaScript (if enabled)
67 | return 0 unless($config{bootstrap_js});
68 | mkdir("$config{destdir}/js");
69 | check("js/bootstrap.bundle.min.js", "https://cdn.jsdelivr.net/npm/bootstrap\@5.0.0/dist/js/bootstrap.bundle.min.js");
70 | }
71 |
72 | sub pagetemplate(@) {
73 | my %params = @_;
74 | my $template = $params{template};
75 |
76 | $template->param(bootstrap_js => $config{bootstrap_js});
77 | $template->param(bootstrap_local => $config{bootstrap_local});
78 | }
79 |
80 | # Emulate the progress plugin, but do it the HTML5 + Bootstrap way.
81 | # Also allow setting an extra class attribute.
82 | sub progress(@) {
83 | my %params = @_;
84 | my $percentage_pattern = qr/[0-9]+\%?/; # pattern to validate percentages
85 | my ($fill, $value, $max);
86 |
87 | if (defined $params{percent}) {
88 | $fill = $params{percent};
89 | ($fill) = $fill =~ m/($percentage_pattern)/; # fill is untainted now
90 | $fill =~ s/%$//;
91 | if (! defined $fill || ! length $fill || $fill > 100 || $fill < 0) {
92 | error(sprintf(gettext("illegal percent value %s"), $params{percent}));
93 | }
94 | $value = $fill;
95 | $max = "100";
96 | $fill .= "%";
97 | } elsif (defined $params{totalpages} and defined $params{donepages}) {
98 | $max = pagespec_match_list($params{page}, $params{totalpages}, deptype => deptype("presence"));
99 | $value = pagespec_match_list($params{page}, $params{donepages}, deptype => deptype("presence"));
100 |
101 | if ($max == 0) {
102 | $fill = "100%";
103 | } else {
104 | $fill = sprintf("%u%%", $value / $max * 100);
105 | }
106 | } else {
107 | error(gettext("need either `percent` or `totalpages` and `donepages` parameters"));
108 | }
109 |
110 | my $class = "progress-bar";
111 | if (defined $params{class}) {
112 | $class .= " $params{class}";
113 | }
114 |
115 | return <
2 | While you were creating this page, someone else independently created a page
3 | with the same name.
4 |
5 |
6 | The edit box below contains the page's current content, followed by the
7 | content you entered previously, to allow you to merge the two
8 | together before saving.
9 |
2 | The page you were editing has disappeared.
3 |
4 |
5 | Perhaps someone else has deleted it or moved it. If you want to recreate
6 | this page with your text, click "Save Page" again.
7 |
8 |
--------------------------------------------------------------------------------
/templates/emailauth.tmpl:
--------------------------------------------------------------------------------
1 | To log into , just open the following link:
2 |
3 |
4 |
5 | This link can only be used once to log in, and will expire in one day.
6 |
7 | (Please disregard this email if you were not trying to log in.)
8 |
9 | --
10 | ikiwiki
11 |
--------------------------------------------------------------------------------
/templates/feedlink.tmpl:
--------------------------------------------------------------------------------
1 |