]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/plugins/contrib/trail.mdwn
Merge branch 'master' of ssh://git.ikiwiki.info
[git.ikiwiki.info.git] / doc / plugins / contrib / trail.mdwn
index def91d85ac738f5f937dc2de87638e31ccbfe803..9d895783a5a4f12f60d2c8a8a7294250e8ee0077 100644 (file)
-[[!tag type/chrome patch]]
-[[!template id=gitbranch branch=smcv/trail author="[[smcv]]"]]
+[[!tag patch]]
+[[!template id=gitbranch branch=smcv/trail3-integrated author="[[smcv]]"]]
 
-Available from [[smcv]]'s git repository, in the `trail` branch. This
-plugin aims to solve [[todo/wikitrails]] in a simpler way.
+Available from [[smcv]]'s git repository, in the `trail3` and `trail3-integrated` branches. This
+plugin aims to solve [[todo/wikitrails]] in a simpler way; it can also be
+used for [[navigation through blog posts|todo/Pagination_next_prev_links]].
 
-Updated, June 2011:
+If you don't want to use a branch of ikiwiki, manual installation requires
+these files (use the "raw" link in gitweb to download):
 
-* removed `inline` integration for now
+* [trail.pm](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/IkiWiki/Plugin/trail.pm)
+  in an `IkiWiki/Plugin` subdirectory of your configured `plugindir`
+* [page.tmpl](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/templates/page.tmpl)
+  and
+  [trails.tmpl](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/templates/trails.tmpl)
+  in your configured `templatedir`, or a `templates` subdirectory of your wiki repository
+* the trail-related bits from the end of the
+  [stylesheet](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/doc/style.css)
+  (put them in your local.css)
+* the trail-related bits at the end of the
+  [actiontabs](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/themes/actiontabs/style.css)
+  or [blueview/goldtype](http://git.pseudorandom.co.uk/smcv/ikiwiki.git/blob/trail3:/themes/blueview/style.css)
+  stylesheets, if you use one of those themes (again, put them in your local.css)
 
-* added `<link>` tags
+The branch also includes [[todo/test_coverage]] machinery.
 
-* switched from a custom data structure to using typed links
+Demo:
 
-----
+* [in use on entries in my blog](http://smcv.pseudorandom.co.uk/)
+* [a demo trail based on links](http://demo.hosted.pseudorandom.co.uk/trail/)
+* [a demo hybrid trail/inline](http://demo.hosted.pseudorandom.co.uk/trail2/)
 
-[[!template id=plugin name=trail author="[[Simon_McVittie|smcv]]"]]
+The page `e` is in both demo trails, to demonstrate how a page in more than
+one trail looks.
 
-It's sometimes useful to have "trails" of pages in a wiki, as a guided
-tour, sequence of chapters etc. In this plugin, a trail is represented
-by a page, and the pages in the trail are indicated by specially marked
-links within that page.
+The `smcv/trail2` branch is an older version of `trail3` which used typed links
+as its data structure, resulting in timing-related limitations (it couldn't
+select pages for the trail by using pagespecs, because pagespecs can't be
+evaluated correctly until the scan stage has finished).
 
-If using the default `page.tmpl`, each page automatically displays the
-trails that it's a member of (if any), with links to the trail and to
-the next and previous members. HTML `<link>` tags with the `prev`,
-`next` and `up` relations are also generated.
+Updated, November 2011 (`trail3`):
 
-The `traillink` [[ikiwiki/directive]] is used to record which pages
-are in a trail, and simultaneously link to them. Alternatively, the
-[[ikiwiki/directive/trailitem]] directive can be used to make an
-invisible `traillink`.
+* reinstated `inline` integration ([[report]] integration would probably be
+  pretty easy too, if this gets merged)
+* switched from typed links back to a custom data structure to avoid
+  chicken/egg problems with ordering
+* create typed links too, as a side-effect, but not when using an inline
+* regression test with nearly full coverage
+* CSS for the default anti-theme and all built-in themes (it looks nicest
+  in the default anti-theme and in actiontabs - the demo uses actiontabs)
 
-## Directives
+Updated, March 2012 (`trail3-integrated`):
 
-(These will go to the appropriate pages in [[ikiwiki/directive]] if this
-plugin is included in ikiwiki.)
+* replaced `\[[!trailinline]]` with `\[[!inline trail=yes]]`
+* added a `build_affected` hook so it doesn't have to use `inject`
+  (optional commit, can be omitted)
 
-### trailitem
+Known bugs:
 
-The `trailitem` directive is supplied by the [[!iki plugins/contrib/trail desc=trail]]
-plugin. It is used like this:
+* the blueview and goldtype CSS nearly work, but the alignment is a bit off
 
-    \[[!trailitem some_other_page]]
+----
 
-to add `some_other_page` to the trail represented by this page, without
-generating a visible hyperlink.
+[[!template id=plugin name=trail author="[[Simon_McVittie|smcv]]"]]
+[[!tag type/chrome]]
 
-### traillink
+This plugin provides the [[ikiwiki/directive/trailoptions]],
+[[ikiwiki/directive/traillink]], [[ikiwiki/directive/trailitem]],
+[[ikiwiki/directive/trailitems]]
+and [[ikiwiki/directive/trailinline]] [[directives|ikiwiki/directive]].
 
-The `traillink` directive is supplied by the [[!iki plugins/contrib/trail desc=trail]]
-plugin. It generates a visible [[ikiwiki/WikiLink]], and also adds the linked page to
-the trail represented by the page containing the directive.
+It's sometimes useful to have "trails" of pages in a wiki where each
+page links to the next and/or previous page. For instance, you could use
+this for a guided tour, sequence of chapters, or sequence of blog posts.
 
-In its simplest form, the first parameter is like the content of a WikiLink:
+In this plugin, a trail is represented by a page, and the pages in the
+trail are indicated by specially marked links within that page, or by
+including groups of pages with a [[ikiwiki/directive]].
 
-    \[[!traillink some_other_page]]
+If using the default `page.tmpl`, each page automatically displays the
+trails that it's a member of (if any), with links to the trail and to
+the next and previous members. HTML `<link>` tags with the `prev`,
+`next` and `up` relations are also generated.
 
-The displayed text can also be overridden, either with a `|` symbol or with
-a `text` parameter:
+The [[ikiwiki/directive/trailoptions]] directive sets options for the
+entire trail.
 
-    \[[!traillink Click_here_to_start_the_trail|some_other_page]]
-    \[[!traillink some_other_page text="Click here to start the trail"]]
+Pages can be included in a trail in various ways:
 
-### trailoptions
+* The [[ikiwiki/directive/trailinline]] directive sets up an [[inline]],
+  and at the same time adds the matching pages (from `pages` or `pagenames`)
+  to the trail. One use is to navigate through all posts in a blog:
 
-The `trailoptions` directive is supplied by the [[!iki plugins/contrib/trail desc=trail]]
-plugin. It sets options for the trail represented by this page. Example usage:
+        \[[!trailinline pages="page(./posts/*) and !*/Discussion" archive=yes
+          feedshow=10 quick=yes]]
 
-    \[[!trailoptions sort="meta(title)" circular="no"]]
+  This directive only works if the [[!iki plugins/inline desc=inline]]
+  plugin is also enabled.
 
-The available options are:
+* The [[ikiwiki/directive/trailitems]] directive has optional `pages` and
+  `pagenames` options which behave the same as in [[inline]], but don't
+  produce any output in the page, so you can have trails that don't list
+  all their pages.
 
-* `sort`: sets a [[ikiwiki/pagespec/sorting]] order; if not specified, the
-  items of the trail are ordered according to the first link to each item
-  found on the trail page
+* The [[ikiwiki/directive/traillink]] directive makes a visible link
+  and also adds the linked page to the trail. This will typically be
+  used in a bullet list, but could also be in paragraph text:
 
-* `circular`: if set to `yes` or `1`, the trail is made into a loop by
-  making the last page's "next" link point to the first page, and the first
-  page's "previous" link point to the last page
+        * [[!traillink Introduction]]
+        * [[!traillink "Chapter 1"]]
+        * [[!traillink Chapter_2]]
+        * [[!traillink Appendix_A]]
 
-----
+  or
+
+        To use this software you must \[[!traillink install]] it,
+        \[[!traillink configuration text="configure it"]],
+        and finally \[[!traillink running|run_it]].
+
+  This also counts as a [[ikiwiki/WikiLink]] for things like the `link()`
+  [[ikiwiki/PageSpec]] item.
 
-## Future directions
+* The [[ikiwiki/directive/trailitem]] directive adds a page to the trail
+  like `traillink`, but produces an invisible link, rather like `\[[!tag]]`:
 
-The current version of this plugin doesn't implement inline-based or
-otherwise [[ikiwiki/PageSpec]]-based trails. This is difficult because
-there's a circular dependency:
+        To use this software you must \[[!traillink install]] it,
+        \[[!trailitem installing_from_packages]]
+        \[[!trailitem installing_from_source]]
+        \[[!traillink configuration text="configure it"]],
+        and finally \[[!traillink running|run_it]].
+        \[[!trailitem troubleshooting]]
 
-* adding typed links should happen *before* scanning has finished, to
-  guarantee that they're available before the first page is rendered
+  Like `\[[!tag]]`, this still counts as a [[ikiwiki/WikiLink]] even though
+  there's no visible link.
 
-* evaluating pagespecs should only happen *after* scanning has finished,
-  to guarantee that everything you might want to base a pagespec on
-  (`meta`, etc.) has been gathered by scanning
+You can mix several of these directives in one page. The resulting
+trail will contain all of the pages matched by any of the directives,
+in the same order that the directives appear (unless you use the `sort` or
+`reverse` options on `\[[!trailoptions]]`).