diff options
author | Joey Hess <joey@gnu.kitenet.net> | 2009-04-04 17:27:48 -0400 |
---|---|---|
committer | Joey Hess <joey@gnu.kitenet.net> | 2009-04-04 17:27:48 -0400 |
commit | 8e92468eae9ac0ab8161a0c71ff6c6a0a8aef07a (patch) | |
tree | 9e26465e0ca98a5f3cbc6c72a0cace4bf83b93db /doc/users | |
parent | 78a69e5bd632eb86ef8135e9c1d05d2c48b43362 (diff) | |
parent | 08fda4c9d374de1d3de3172a192d4d915d3dc0c1 (diff) |
Merge branch 'master'
Conflicts:
doc/ikiwiki-makerepo.mdwn
Diffstat (limited to 'doc/users')
-rw-r--r-- | doc/users/Edward_Betts.mdwn | 4 | ||||
-rw-r--r-- | doc/users/StevenBlack.mdwn | 5 | ||||
-rw-r--r-- | doc/users/ajt.mdwn | 20 | ||||
-rw-r--r-- | doc/users/alexander.mdwn | 1 | ||||
-rw-r--r-- | doc/users/cfm.mdwn | 1 | ||||
-rw-r--r-- | doc/users/hb/discussion.mdwn | 3 | ||||
-rw-r--r-- | doc/users/intrigeri.mdwn | 2 | ||||
-rw-r--r-- | doc/users/jasonblevins.mdwn | 106 | ||||
-rw-r--r-- | doc/users/jelmer.mdwn | 1 | ||||
-rw-r--r-- | doc/users/jon.mdwn | 20 | ||||
-rw-r--r-- | doc/users/jondowland.mdwn | 5 | ||||
-rw-r--r-- | doc/users/joshtriplett.mdwn | 13 | ||||
-rw-r--r-- | doc/users/jrblevin.mdwn | 1 | ||||
-rw-r--r-- | doc/users/jwalzer.mdwn | 3 | ||||
-rw-r--r-- | doc/users/neale.mdwn | 10 | ||||
-rw-r--r-- | doc/users/nolan.mdwn | 1 | ||||
-rw-r--r-- | doc/users/seanh.mdwn | 1 | ||||
-rw-r--r-- | doc/users/simonraven.mdwn | 3 | ||||
-rw-r--r-- | doc/users/smcv.mdwn | 11 | ||||
-rw-r--r-- | doc/users/smcv/gallery.mdwn | 342 | ||||
-rw-r--r-- | doc/users/svend.mdwn | 4 | ||||
-rw-r--r-- | doc/users/weakish.mdwn | 1 | ||||
-rw-r--r-- | doc/users/weakishjiang.mdwn | 4 | ||||
-rw-r--r-- | doc/users/xma.mdwn | 28 | ||||
-rw-r--r-- | doc/users/xma/discussion.mdwn | 18 |
25 files changed, 591 insertions, 17 deletions
diff --git a/doc/users/Edward_Betts.mdwn b/doc/users/Edward_Betts.mdwn index 0d4483fa8..b32927a1c 100644 --- a/doc/users/Edward_Betts.mdwn +++ b/doc/users/Edward_Betts.mdwn @@ -3,5 +3,7 @@ My watchlist: [[!inline archive="yes" sort="mtime" atom="yes" pages=" todo/allow_wiki_syntax_in_commit_messages* todo/shortcut_with_different_link_text* -todo/structured_page_data* "]] +todo/structured_page_data* +tips/convert_mediawiki_to_ikiwiki* +"]] diff --git a/doc/users/StevenBlack.mdwn b/doc/users/StevenBlack.mdwn new file mode 100644 index 000000000..ea7a6a97a --- /dev/null +++ b/doc/users/StevenBlack.mdwn @@ -0,0 +1,5 @@ +It feels like there are a lot of people named Steven Black. While I'm just one of many with my name, sometimes it is actually just me and I've forgotten that I had an account somewhere. + +I'm not a doctor, though I would certainly trust any doctor, dentist, or philosopher named Steven Black. (There are several.) + +I *am* a huge Ikiwiki fan. I've had my eye on it for many years for personal projects (though I never quite got around to installing it). Recently, however, I managed to convince my coworkers that it would be a good idea for an internal wiki. Boy was I right. The thing is practically designed to be the perfect developer-centered wiki. diff --git a/doc/users/ajt.mdwn b/doc/users/ajt.mdwn new file mode 100644 index 000000000..bc47040b6 --- /dev/null +++ b/doc/users/ajt.mdwn @@ -0,0 +1,20 @@ +[[!meta title="Adam Trickett"]] + +# Adam Trickett + +## "ajt" + +I'm a long time hacker of sorts, I like to program in Perl on Debian systems but work pays me to program in ABAP (COBOL) on SAP. + +I like wikis and I'm currently in love with ikiwiki, having moved my home intranet from a home made template solution to ikiwiki over a weekend. I'm using ikiwiki more like a web content management system (e.g. RedDot) rather than a traditional wiki. + +### My Links + +* [iredale dot net](http://www.iredale.net/) my web server and main blog +* [ajt](http://www.perlmonks.org/index.pl?node_id=113686) my Perkmonks home node +* [ajt](http://use.perl.org/~ajt) my use Perl home +* [ATRICKETT](http://search.cpan.org/~atrickett/) my CPAN folder +* [ajt](http://www.debian-administration.org/users/ajt) my Debian-Administration home (good site btw) +* [drajt](http://www.linkedin.com/in/drajt) my LinkedIn profile +* [drajt](http://www.slideshare.net/drajt) my "Slidespace" on SlideShare +* [AdamTrickett](http://www.hants.lug.org.uk/cgi-bin/wiki.pl?AdamTrickett) my wiki page on my LUG's site diff --git a/doc/users/alexander.mdwn b/doc/users/alexander.mdwn new file mode 100644 index 000000000..b2894a90c --- /dev/null +++ b/doc/users/alexander.mdwn @@ -0,0 +1 @@ +I use ikiwiki to organize information - projects, reading notes, outlines, todo lists, etc. diff --git a/doc/users/cfm.mdwn b/doc/users/cfm.mdwn new file mode 100644 index 000000000..4feab9601 --- /dev/null +++ b/doc/users/cfm.mdwn @@ -0,0 +1 @@ +I maintain a [home page](http://www.panix.com/~cfm/ "Cory Myers"). diff --git a/doc/users/hb/discussion.mdwn b/doc/users/hb/discussion.mdwn index 6dfa6a23b..15c065e45 100644 --- a/doc/users/hb/discussion.mdwn +++ b/doc/users/hb/discussion.mdwn @@ -1,4 +1,5 @@ I'd love to see any notes you have on using ikiwiki for GTD. Would you consider documenting them? Perhaps we could turn the result into a [[tip|tips]]. -[[JoshTriplett]] -> Well, certainly. Basically it's just inline + tag feature. I'm going to have more time in May for ikiwiki, I hope.
\ No newline at end of file +> Well, certainly. Basically it's just inline + tag feature. I'm going to have more time in May for ikiwiki, I hope. +> > Any news about that ? diff --git a/doc/users/intrigeri.mdwn b/doc/users/intrigeri.mdwn index f9a216e18..8fa9965a5 100644 --- a/doc/users/intrigeri.mdwn +++ b/doc/users/intrigeri.mdwn @@ -1,4 +1,4 @@ intrigeri AT boum.org, already loving ikiwiki. * [gnupg key](http://gaffer.ptitcanardnoir.org/intrigeri/intrigeri.asc) -* Git repository ([gitweb](http://repo.or.cz/w/ikiwiki/intrigeri.git)) with various ikiwiki {feature, bugfix}-branches : `git://repo.or.cz/ikiwiki/intrigeri.git` +* Git repository with various ikiwiki {feature, bugfix}-branches : `git://gaffer.ptitcanardnoir.org/ikiwiki.git` diff --git a/doc/users/jasonblevins.mdwn b/doc/users/jasonblevins.mdwn index 52420f7c9..61c381d96 100644 --- a/doc/users/jasonblevins.mdwn +++ b/doc/users/jasonblevins.mdwn @@ -1,11 +1,109 @@ +[[!meta title="Jason Blevins"]] + I'm currently hosting a private ikiwiki for keeping research notes -which, with some patches and a (currently unreleased) plugin, will +which, with some patches and a plugin (below), will convert inline LaTeX expressions to MathML. I'm working towards a patchset and instructions for others to do the same. -There is one thing that needs to be decided first: whether or not to -include [[sanitization|todo/svg]] of MathML in htmlscrubber (and while -we're at it, why not SVG). +I've setup a test ikiwiki [here](http://xbeta.org/colab/) where I've +started keeping a few notes on my progress. There is an example of +inline SVG on the homepage (note that the logo scales along with the +font size). There are a few example mathematical expressions in the +[sandbox](http://xbeta.org/colab/sandbox/). The MathML is generated +automatically from inline LaTeX expressions using an experimental +plugin I'm working on. My (also MathML-enabled) homepage: <http://jblevins.org/> (still using Blosxom...maybe one day I'll convert it to ikiwiki...) + +Current ikiwki issues of interest: + + * [[bugs/recentchanges_feed_links]] + * [[bugs/HTML_inlined_into_Atom_not_necessarily_well-formed]] + * [[plugins/toc/discussion]] + * [[todo/BibTeX]] + * [[todo/svg]] + * [[todo/Option_to_make_title_an_h1?]] + * [[bugs/SVG_files_not_recognized_as_images]] + +## Plugins + +These plugins are experimental. Use them at your own risk. Read the +perldoc documentation for more details. Patches and suggestions are +welcome. + + * [mdwn_itex][] - Works with the `mdwn` plugin to convert inline LaTeX + expressions to MathML using `itex2MML`. + + * [h1title][] - If present, use the leading level 1 Markdown header to + set the page title and remove it from the page body. + + * [code][] - Whole file and inline code snippet syntax highlighting + via GNU Source-highlight. The list of supported file extensions is + configurable. There is also some preliminary [documentation][code-doc]. + See the [FortranWiki](http://fortranwiki.org) for examples. + + * [metamail][] - a plugin for loading metadata from email-style + headers at top of a file (e.g., `title: Page Title` or + `date: November 2, 2008 11:14 EST`). + + * [pandoc][] - Markdown page processing via Pandoc. LaTeX and + reStructuredText are optional. + + * [path][] - Provides path-specific template conditionals such as + `IS_HOMEPAGE` and `IN_DIR_SUBDIR`. + + [mdwn_itex]: http://code.jblevins.org/ikiwiki/plugins.git/plain/mdwn_itex.pm + [h1title]: http://code.jblevins.org/ikiwiki/plugins.git/plain/h1title.pm + [code]: http://code.jblevins.org/ikiwiki/plugins.git/plain/code.pm + [code-doc]: http://code.jblevins.org/ikiwiki/plugins.git/plain/code.text + [metamail]: http://code.jblevins.org/ikiwiki/plugins.git/plain/metamail.pm + [pandoc]: http://code.jblevins.org/ikiwiki/plugins.git/plain/pandoc.pm + [path]: http://code.jblevins.org/ikiwiki/plugins.git/plain/path.pm + + +## MathML and SVG support + +So far, I've made some notes on sanitizing MathML and SVG via +htmlscrubber on the [[todo/svg]] todo item. + +I've also worked out some content-negotiation issues. First of all, +one needs to modify the default templates to use the +XHTML+MathML+SVG doctype (see e.g., this [patch][template-patch]). +For most browsers, the content type of the pages should be +`application/xhtml+xml`. The solution is easy if you want to +just send `application/xhtml+xml` to everybody: +just change the content type of `.html` files across the board. + +However, if you want to support browsers that don't accept +`application/xhtml+xml` (and those that will but say they +don't, such as IE with the MathPlayer plugin), then one +needs a `mod_rewrite` rule like the following: + + RewriteCond %{HTTP_ACCEPT} application\/xhtml\+xml [OR] + RewriteCond %{HTTP_USER_AGENT} (W3C.*Validator|MathPlayer) + RewriteRule \.html$ - [T=application/xhtml+xml] + +This solves the problem of MathML and inline SVG in static pages +but some additional work is required for dynamically generated +pages, like page previews, that are generated by `ikiwiki.cgi`. +We need to allow `ikiwiki.cgi` to set the content type dynamically +based on the `HTTP_CONTENT_TYPE` environment variable +(e.g., with the following [patch][cgi-patch]). Then, the following +rewrite rules can pass the correct content type to ikiwiki: + + RewriteCond %{HTTP_ACCEPT} application\/xhtml\+xml [OR] + RewriteCond %{HTTP_USER_AGENT} (W3C.*Validator|MathPlayer) + RewriteRule ikiwiki.cgi$ - [T=application/xhtml+xml] + +One final critical issue is that a production-ready setup needs to +implement some sort of on-the-fly error handling. If a user submits +an invalid LaTeX expression or SVG code (not malicious, just invalid) +and saves the page, then browsers like Firefox will halt processing of +the page, preventing any further viewing or editing. A less than +optimal solution is to force users to preview the page before saving. +That way if someone introduces invalid XHTML then they can't save the +page in the first place (unless they post directly to the right URL). + + [template-patch]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=blobdiff;f=templates/page.tmpl;h=380ef699fa72223744eb5c1ee655fb79aa6bce5b;hp=9084ba7e11e92a10528b2ab12c9b73cf7b0f40a7;hb=416d5d1b15b94e604442e4e209a30dee4b77b684;hpb=ececf4fb8766a4ff7eff943b3ef600be81a0df49 + [cgi-patch]: http://xbeta.org/gitweb/?p=xbeta/ikiwiki.git;a=commitdiff;h=fa538c375250ab08f396634135f7d79fce2a9d36 diff --git a/doc/users/jelmer.mdwn b/doc/users/jelmer.mdwn new file mode 100644 index 000000000..1f2f71aad --- /dev/null +++ b/doc/users/jelmer.mdwn @@ -0,0 +1 @@ +[Jelmer Vernooij](http://samba.org/~jelmer/) diff --git a/doc/users/jon.mdwn b/doc/users/jon.mdwn new file mode 100644 index 000000000..1cda23999 --- /dev/null +++ b/doc/users/jon.mdwn @@ -0,0 +1,20 @@ +[[!meta title="Jon Dowland"]] +I'm looking at ikiwiki both for my personal site but also as a +team-documentation management system for a small-sized group of UNIX +sysadmins. + +* my edits should appear either as 'Jon' (if I've used + [[tips/untrusted_git_push]]) or 'jmtd.net' (or once upon a time + 'alcopop.org/me/openid/' or 'jondowland'). +* My [homepage](http://jmtd.net/) is powered by ikiwiki + +I gave a talk at the [UK UNIX User's Group](http://www.ukuug.org/) annual +[Linux conference](http://www.ukuug.org/events/linux2008/) about organising +system administrator documentation. Roughly a third of this talk was +discussing IkiWiki in some technical detail and suggesting it as a good piece +of software for this task. + + * slides at <http://www.staff.ncl.ac.uk/jon.dowland/unix/docs/>. + +I am also working on some ikiwiki hacks: an alternative approach to +[[plugins/comments]]; a system for [[forum/managing_todo_lists]]. diff --git a/doc/users/jondowland.mdwn b/doc/users/jondowland.mdwn deleted file mode 100644 index c6302616f..000000000 --- a/doc/users/jondowland.mdwn +++ /dev/null @@ -1,5 +0,0 @@ -A new ikiwiki user, looking at ikiwiki both for his personal site but also as a team-documentation management system for a small-sized group of UNIX sysadmins. - -* My [homepage](http://jmtd.net/) is powered by ikiwiki (replacing my [older homepage](http://alcopop.org/), which was a mess of scripts) - -I am giving a talk at the [UK UNIX User's Group](http://www.ukuug.org/) annual [Linux conference](http://www.ukuug.org/events/linux2008/) about organising system administrator documentation which will feature IkiWiki. diff --git a/doc/users/joshtriplett.mdwn b/doc/users/joshtriplett.mdwn index f32d23bb7..f85c068c3 100644 --- a/doc/users/joshtriplett.mdwn +++ b/doc/users/joshtriplett.mdwn @@ -1,10 +1,15 @@ [[!meta title="Josh Triplett"]] -Josh Triplett; `josh@{freedesktop.org,kernel.org,psas.pdx.edu}`. +Email: `josh@{joshtriplett.org,freedesktop.org,kernel.org,psas.pdx.edu}`. + +[Josh Triplett's homepage](http://joshtriplett.org) Proud user of ikiwiki. -Currently working on scripts to convert MoinMoin and TWiki wikis to ikiwikis -backed by a git repository, including full history. +Currently working on scripts to convert MoinMoin and TWiki wikis to +ikiwikis backed by a git repository, including full history. +Available from the following repositories, though not well-documented: -> I've written about how I converted from Mediawiki here: <http://iki.u32.net/Mediawiki_Conversion/> Are you ever going to release your scripts? --[[sabr]] + git clone git://svcs.cs.pdx.edu/git/wiki2iki/moin2iki + git clone git://svcs.cs.pdx.edu/git/wiki2iki/html-wikiconverter + git clone git://svcs.cs.pdx.edu/git/wiki2iki/twiki diff --git a/doc/users/jrblevin.mdwn b/doc/users/jrblevin.mdwn new file mode 100644 index 000000000..4eb250bfa --- /dev/null +++ b/doc/users/jrblevin.mdwn @@ -0,0 +1 @@ +[[!meta redir=users/jasonblevins]] diff --git a/doc/users/jwalzer.mdwn b/doc/users/jwalzer.mdwn new file mode 100644 index 000000000..e66ad1a52 --- /dev/null +++ b/doc/users/jwalzer.mdwn @@ -0,0 +1,3 @@ +Jan Walzer started to look on ikiwiki just recently. + +Read [here](http://wa.lzer.net/wiki/ikiwiki/whyikiwiki/) why he uses ikiwiki. diff --git a/doc/users/neale.mdwn b/doc/users/neale.mdwn new file mode 100644 index 000000000..5245c2c99 --- /dev/null +++ b/doc/users/neale.mdwn @@ -0,0 +1,10 @@ +I used IkiWiki to supplant some custom journal software. I like that it uses +the filesystem, my intent is to make journal entries as future-proof as +possible. I'll probably start using it for generation of entire sites, soon. + +Things generated by IkiWiki with some fancypants stylesheets: + +* [woozle.org](http://woozle.org/) +* [My page](http://woozle.org/~neale/) +* [Amy's blog](http://woozle.org/~aim/blog/) +* [Heidi's blog](http://woozle.org/~heidi/blog/) diff --git a/doc/users/nolan.mdwn b/doc/users/nolan.mdwn new file mode 100644 index 000000000..64b405e60 --- /dev/null +++ b/doc/users/nolan.mdwn @@ -0,0 +1 @@ +Hi, I'm Nolan. I'll add more later. diff --git a/doc/users/seanh.mdwn b/doc/users/seanh.mdwn new file mode 100644 index 000000000..d093c2f32 --- /dev/null +++ b/doc/users/seanh.mdwn @@ -0,0 +1 @@ +seanh is an ikiwiki user. diff --git a/doc/users/simonraven.mdwn b/doc/users/simonraven.mdwn new file mode 100644 index 000000000..0706859aa --- /dev/null +++ b/doc/users/simonraven.mdwn @@ -0,0 +1,3 @@ +New ikiwiki site at my personal site under /ikiwiki/ . This might move to /wiki/ or be on wiki.k.o depending on if I can import my MediaWiki stuff to it. + +Thought I'd try it out again and it grew on me. diff --git a/doc/users/smcv.mdwn b/doc/users/smcv.mdwn index 33ae450b2..59d1affba 100644 --- a/doc/users/smcv.mdwn +++ b/doc/users/smcv.mdwn @@ -1 +1,10 @@ -I'm trying to add enough features/fix enough bugs to convert [smcv.pseudorandom.co.uk](http://smcv.pseudorandom.co.uk/) from Django + Python + misc hacks to ikiwiki. +Website: [pseudorandom.co.uk](http://www.pseudorandom.co.uk/) + +Blog: [smcv.pseudorandom.co.uk](http://smcv.pseudorandom.co.uk/) + +My repository containing ikiwiki branches: + +* gitweb: http://git.pseudorandom.co.uk/smcv/ikiwiki.git +* anongit: git://git.pseudorandom.co.uk/git/smcv/ikiwiki.git + +Currently thinking about a [[users/smcv/gallery]] plugin. diff --git a/doc/users/smcv/gallery.mdwn b/doc/users/smcv/gallery.mdwn new file mode 100644 index 000000000..b6b8de79f --- /dev/null +++ b/doc/users/smcv/gallery.mdwn @@ -0,0 +1,342 @@ +[[!template id=plugin name=smcvgallery author="[[Simon_McVittie|smcv]]"]] +[[!tag type/chrome]] + +This plugin has not yet been written; this page is an experiment in +design-by-documentation :-) + +## Requirements + +This plugin formats a collection of images into a photo gallery, +in the same way as many websites: good examples include the +PHP application [Gallery](http://gallery.menalto.com/), Flickr, +and Facebook's Photos "application". + +The web UI I'm trying to achieve consists of one +[HTML page of thumbnails](http://www.pseudorandom.co.uk/2008/2008-03-08-panic-cell-gig/) +as an entry point to the gallery, where each thumbnail links to +[a "viewer" HTML page](http://www.pseudorandom.co.uk/2008/2008-03-08-panic-cell-gig/img_0068/) +with a full size image, next/previous thumbnail links, and +[[plugins/comments]]. + +(The Summer of Code [[plugins/contrib/gallery]] plugin does the +next/previous UI in Javascript using Lightbox, which means that +individual photos can't be bookmarked in a meaningful way, and +the best it can do as a fallback for non-Javascript browsers +is to provide a direct link to the image.) + +Other features that would be good to have: + +* minimizing the number of separate operations needed to make a gallery - + editing one source file per gallery is acceptable, editing one + source file per photo is not + +* keeping photos outside source code control, for instance in an + underlay + +* assigning [[tags|ikiwiki/directive/tag]] to photos, providing a + superset of Facebook's "show tagged photos of this person" functionality + +* constructing galleries entirely via the web by uploading attachments + +* inserting grouping (section headings) within a gallery; as in the example + linked above, I'd like this to split up the thumbnails but not the + next/previous trail + +* rendering an `<object>/<embed>` arrangement to display videos, and possibly + thumbnailing them in the same way as totem-video-thumbnailer + (my camera can record short videos, so some of my web photo galleries + contain them) + +My plan is to have these directives: + +* \[[!gallery]] registers the page it's on as a gallery, and displays all + photos that are part of this gallery but not part of a \[[!gallerysection]] + (below). + + All images (i.e. `*.png *.jpg *.gif`) that are attachments to the gallery page + or its subpages are considered to be part of the gallery. + + Optional arguments: + + * filter="[[ikiwiki/PageSpec]]": only consider images to be part of the + gallery if they also match this filter + + * sort="date|filename": order in which to sort the images + +* \[[!gallerysection filter="[[ikiwiki/PageSpec]]"]] displays all photos in the + gallery that match the filter + +So, +[the gallery I'm using as an example](http://www.pseudorandom.co.uk/2008/2008-03-08-panic-cell-gig/) +could look something like this: + + \[[!gallery]] + <!-- replaced with one uncategorized photo --> + + # Gamarra + + \[[!gallerysection filter="link(sometag)"]] + <!-- all the Gamarra photos --> + + # Smokescreen + + \[[!gallerysection filter="link(someothertag)"]] + <!-- all the Smokescreen photos --> + + <!-- ... --> + +## Implementation ideas + +The next/previous part this plugin overlaps with [[todo/wikitrails]]. + +A \[[!galleryimg]] directive to assign metadata to images might be necessary, so +the gallery page can contain something like: + + \[[!galleryimg p1010001.jpg title="..." caption="..." tags="foo"]] + \[[!galleryimg p1010002.jpg title="..." caption="..." tags="foo bar"]] + +However, allowing other pages to push in metadata like that will make +dependency tracking difficult. + +Making the viewer pages could be rather tricky. Here are some options: +"synthesize source pages for viewers" is the one I'm leaning towards at the +moment. + +### Viewers' source page is the gallery + +One possibility is to write out the viewer pages as a side-effect of +preprocessing the \[[!gallery]] directive. The proof-of-concept implementation +below does this. However, this does mean the viewer pages can't have tags or +metadata of their own and can't be matched by [[pagespecs|ikiwiki/pagespec]] or +[[wikilinks|ikiwiki/wikilink]]. + +It might be possible to implement tagging by using \[[!galleryimg]] to assign +the metadata to the *images* instead of their viewers; however, that would +require hacking up both `IkiWiki::htmllink` and `IkiWiki::urlto` to redirect +links to the image (e.g. from the \[[!map]] on a tag page) to become links to +the viewer page. + +Modifications to the comments plugin would also be required, to make it allow +comments written to `foo/bar/comment_1._comment` even though the page foo/bar +does not really exist, and display comments on the viewer pages even though +they're not real pages. (Writing comments to `foo/bar.jpg/*._comment` is not +an option!) + +### Synthesize source pages for viewers + +Another is to synthesize source pages for the viewers. This means they can have +tags and metadata, but trying to arrange for them to be scanned etc. correctly +without needing another refresh run is somewhat terrifying. +[[plugins/autoindex]] can safely create source pages because it runs in +the refresh hook, but I don't really like the idea of a refresh hook that scans +all source pages to see if they contain \[[!gallery]]... + +The photo galleries I have at the moment, like the Panic Cell example above, +are made by using an external script to parse XML gallery descriptions (lists +of image filenames, with metadata such as titles), and using this to write +IkiWiki markup into a directory which is then used as an underlay. This is a +hack, but it works. The use of XML is left over from a previous attempt at +solving the same problem using Django. + +Perhaps a better approach would be to have a setupfile option that names a +particular underlay directory (meeting the objective of not having large +photos under source code control) and generates a source page for each file +in that directory during the refresh hook. The source pages could be in the +underlay until they are edited (e.g. tagged), at which point they would be +copied into the source-code-controlled version in the usual way. + +The synthetic source pages can be very simple, using the same trick as my +[[plugins/comments]] plugin (a dedicated [[directive|ikiwiki/directives]] +encapsulating everything the plugin needs). If the plugin automatically +gathers information like file size, pixel size, date etc. from the images, then +only the human-edited information and a filename reference need to be present +in the source page; with some clever lookup rules based on the filename of +the source page, not even the photo's filename is necessarily needed. + + \[[!meta title="..."]] + \[[!meta date="..."]] + \[[!meta copyright="..."]] + \[[!tag ...]] + + \[[!galleryimageviewer p1010001.jpg]] + +However, this would mean that editing tags and other metadata would require +editing pages individually. Rather than trying to "fix" that, perhaps it would +be better to have a special CGI interface for bulk tagging/metadata editing. +This could even be combined with a bulk upload form (a reasonable number of +file upload controls - maybe 20 - with metadata alongside each). + +Uploading multiple images is necessarily awkward due to restrictions placed on +file upload controls by browsers for security reasons - sites like Facebook +allow whole directories to be uploaded at the same time, but they achieve this +by using a signed Java applet with privileged access to the user's filesystem. + +I've found that it's often useful to be able to force the creation time of +photos (my camera's battery isn't very reliable, and it frequently decides that +the date is 0000-00-00 00:00:00), so treating the \[[!meta date]] of the source +page and the creation date of the photo as synonymous would be useful. + +### Images are the viewer's source - special filename extension + +Making the image be the source page (and generate HTML itself) would be +possible, but I wouldn't want to generate a HTML viewer for every `.jpg` on a +site, so either the images would have to have a special extension (awkward for +uploads from Windows users) or the plugin would have to be able to change +whether HTML was generated in some way (not currently possible). + +### Images are the viewer's source - alter `ispage()` + +It might be possible to hack up `ispage()` so some, but not all, images are +considered to "be a page": + +* srcdir/not-a-photo.jpg → destdir/not-a-photo.jpg +* srcdir/gallery/photo.jpg → destdir/gallery/photo/index.html + +Perhaps one way to do this would be for the photos to appear in a particular +underlay directory, which would also fulfil the objective of having photos not +be version-controlled: + +* srcdir/not-a-photo.jpg → destdir/not-a-photo.jpg +* underlay/gallery/photo.jpg → destdir/gallery/photo/index.html + +## Proof-of-concept implementation of "viewers' source page is the gallery" + + #!/usr/bin/perl + package IkiWiki::Plugin::gallery; + + use warnings; + use strict; + use IkiWiki 2.00; + + sub import { + hook(type => "getsetup", id => "gallery", call => \&getsetup); + hook(type => "checkconfig", id => "gallery", call => \&checkconfig); + hook(type => "preprocess", id => "gallery", + call => \&preprocess_gallery, scan => 1); + hook(type => "preprocess", id => "gallerysection", + call => \&preprocess_gallerysection, scan => 1); + hook(type => "preprocess", id => "galleryimg", + call => \&preprocess_galleryimg, scan => 1); + } + + sub getsetup () { + return + plugin => { + safe => 1, + rebuild => undef, + }, + } + + sub checkconfig () { + } + + # page that is a gallery => array of images + my %galleries; + # page that is a gallery => array of filters + my %sections; + # page that is an image => page name of generated "viewer" + my %viewers; + + sub preprocess_gallery { + # \[[!gallery filter="!*/cover.jpg"]] + my %params=@_; + + my $subpage = qr/^\Q$params{page}\E\//; + + my @images; + + foreach my $page (keys %pagesources) { + # Reject anything not a subpage or attachment of this page + next unless $page =~ $subpage; + + # Reject non-images + # FIXME: hard-coded list of extensions + next unless $page =~ /\.(jpg|gif|png|mov)$/; + + # Reject according to the filter, if any + next if (exists $params{filter} && + !pagespec_match($page, $params{filter}, + location => $params{page})); + + # OK, we'll have that one + push @images, $page; + + my $viewername = $page; + $viewername =~ s/\.[^.]+$//; + $viewers{$page} = $viewername; + + my $filename = htmlpage($viewername); + will_render($params{page}, $filename); + } + + $galleries{$params{page}} = \@images; + + # If we're just scanning, don't bother producing output + return unless defined wantarray; + + # actually render the viewers + foreach my $img (@images) { + my $filename = htmlpage($viewers{$img}); + debug("rendering image viewer $filename for $img"); + writefile($filename, $config{destdir}, "# placeholder"); + } + + # display a list of "loose" images (those that are in no section); + # this works because we collected the sections' filters during the + # scan stage + + my @loose = @images; + + foreach my $filter (@{$sections{$params{page}}}) { + my $_; + @loose = grep { !pagespec_match($_, $filter, + location => $params{page}) } @loose; + } + + my $_; + my $ret = "<ul>\n"; + foreach my $img (@loose) { + $ret .= "<li>"; + $ret .= "<a href=\"" . urlto($viewers{$img}, $params{page}); + $ret .= "\">$img</a></li>\n" + } + return "$ret</ul>\n"; + } + + sub preprocess_gallerysection { + # \[[!gallerysection filter="friday/*"]] + my %params=@_; + + # remember the filter for this section so the "loose images" section + # won't include these images + push @{$sections{$params{page}}}, $params{filter}; + + # If we're just scanning, don't bother producing output + return unless defined wantarray; + + # this relies on the fact that we ran preprocess_gallery once + # already, during the scan stage + my @images = @{$galleries{$params{page}}}; + @images = grep { pagespec_match($_, $params{filter}, + location => $params{page}) } @images; + + my $_; + my $ret = "<ul>\n"; + foreach my $img (@images) { + $ret .= "<li>"; + $ret .= htmllink($params{page}, $params{destpage}, + $viewers{$img}); + $ret .= "</li>"; + } + return "$ret</ul>\n"; + } + + sub preprocess_galleryimg { + # \[[!galleryimg p1010001.jpg title="" caption="" tags=""]] + my $file = $_[0]; + my %params=@_; + + return ""; + } + + 1 diff --git a/doc/users/svend.mdwn b/doc/users/svend.mdwn new file mode 100644 index 000000000..69d83584f --- /dev/null +++ b/doc/users/svend.mdwn @@ -0,0 +1,4 @@ +[[!meta title="Svend Sorensen"]] + +* [website](http://www.ciffer.net/~svend/) +* [blog](http://www.ciffer.net/~svend/blog/) diff --git a/doc/users/weakish.mdwn b/doc/users/weakish.mdwn new file mode 100644 index 000000000..ccd5665ad --- /dev/null +++ b/doc/users/weakish.mdwn @@ -0,0 +1 @@ +email: weakish@gmail.com diff --git a/doc/users/weakishjiang.mdwn b/doc/users/weakishjiang.mdwn new file mode 100644 index 000000000..0cafb4653 --- /dev/null +++ b/doc/users/weakishjiang.mdwn @@ -0,0 +1,4 @@ +[My blog](http://millenniumdark.blog.ubuntu.org.cn) + +> So, you're learning haskell. You know, I want to add support for haskell +> external plugins to ikiwiki.. :-) --[[Joey]] diff --git a/doc/users/xma.mdwn b/doc/users/xma.mdwn new file mode 100644 index 000000000..89f2ff74c --- /dev/null +++ b/doc/users/xma.mdwn @@ -0,0 +1,28 @@ +[[!meta title="Xavier Maillard"]] +# Xavier Maillard + +I just started using [[ikiwiki]] for my own webspace at http://maillard.mobi/~xma/wiki + +I am learning how to effectively use it. + +Anyway, [[ikiwiki]] is really *awesome* ! + +## More about me + +I am CLI user living in the linux console. More precisely, I live in an [[GNU_Emacs]] frame all day long. My main computer is an EeePC 901 running Slackware GNU/Linux 12.1. I do not have X installed (too lazy) but when in X, I am running an instance of [[CLFSWM]]. + +## Contacting me + +Various channels to contact me: + +- mail: xma@gnu.org +- jabber: xma01@jabber.fr +- mobile: +33 621-964-362 (I only anwser to people I know though) + +Voila. + +## Plans + +I am planning to make a presentation of [[ikiwiki]]to my [local LUG](http://lolica.org) for our next montly meeting. Any help would be greatly appreciated. + +We are discussing to replace our old unmaintained (and unmaintainable) [SPIP](http://spip.net) website with a wiki. This is why I would like using ikiwiki ;) diff --git a/doc/users/xma/discussion.mdwn b/doc/users/xma/discussion.mdwn new file mode 100644 index 000000000..34adbf821 --- /dev/null +++ b/doc/users/xma/discussion.mdwn @@ -0,0 +1,18 @@ +How do you edit this wiki (I mean [ikiwiki]) without the web browser ? Is there a way to git clone/pull/push and thus to use our favorite [text editor](http://www.gnu.org/software/emacs) ? --[[xma]] + +> You can clone ikiwiki's [[git]] repo. I have not implemented a way to +> allow users to push doc wiki only changesets anonymously, but you can +> mails changesets to me. --[[Joey]] +> > How can I send you the changesets ? (git command) --[[xma]] +> > > `git-format-patch` --[[Joey]] + +> > > > Glad to hear I can mail changesets to you, since I wrote the [[todo/applydiff_plugin]] wishlist entry. --[[intrigeri]] + +> It would be nice to have a git recieve hook that +> checked that a commit contained only changes to .mdwn or other allowed +> extensions.. if someone writes up a good one, I'd be willing to deploy it +> for ikiwiki. --[[Joey]] + +> > I'll think about it. It may solve some of my offline-being issues. --[[intrigeri]] + +>>>> Now developed! --[[Joey]] |