]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/todo/conditional_text_based_on_ikiwiki_features.mdwn
web commit by simon: link fix
[ikiwiki.git] / doc / todo / conditional_text_based_on_ikiwiki_features.mdwn
index 444f1c2d5423316ef80351966c0f59c7c60bd669..e5e23531ec88257fa5afa6e4c71792994e5920f3 100644 (file)
@@ -1,6 +1,6 @@
 I'd like to see some way to conditionally include wiki text based on
 whether the wiki enables or disables certain features.  For example,
-[[helponformatting]], could use `\[[if (enabled smiley) """Also, because
+[[ikiwiki/formatting]], could use `\[[if (enabled smiley) """Also, because
 this wiki has the smiley plugin enabled, you can insert \[[smileys]] and
 some other useful symbols."""]]`, and a standard template for [[plugins]]
 pages could check for the given plugin name to print "enabled" or
@@ -10,9 +10,9 @@ Some potentially useful conditionals:
 
 * `enabled pluginname`
 * `disabled pluginname`
-* `any pagespec`: true if any of the pages in the [[PageSpec]] exist
-* `all pagespec`: true if all of the pages in the [[PageSpec]] exist
-* `no pagespec` or `none pagespec`: true if none of the pages in the [[PageSpec]] exist
+* `any pagespec`: true if any of the pages in the [[ikiwiki/PageSpec]] exist
+* `all pagespec`: true if all of the pages in the [[ikiwiki/PageSpec]] exist
+* `no pagespec` or `none pagespec`: true if none of the pages in the [[ikiwiki/PageSpec]] exist
 * `thispage pagespec`: true if pagespec includes the page getting rendered (possibly one including the page with this content on it).
 * `sourcepage pagespec`: true if pagespec includes the page corresponding to the file actually containing this content, rather than a page including it.
 * `included`: true if included on another page, via [[plugins/inline]], [[plugins/sidebar]], [[plugins/contrib/navbar]], etc.
@@ -24,8 +24,8 @@ keep the aliases for simplicity anyway).  You also may or may not want to
 include an `else` clause; if so, you could label the text used if true as
 `then`.
 
-Syntax could vary greatly here, both for the [[PreprocessorDirective]] and
-for the condition itself.
+Syntax could vary greatly here, both for the
+[[ikiwiki/PreprocessorDirective]] and for the condition itself.
 
 > I think this is a good thing to consider, although conditionals tend to
 > make everything a lot more complicated, so I also want to KISS, and not
@@ -55,3 +55,54 @@ for the condition itself.
 >      \[[if test="enabled(smiley)" """foo"""]]
 > 
 > --[[Joey]]
+
+>> [[ikiwiki/PageSpec]] syntax seems perfect, and your proposed syntax for the `if`
+>> [[ikiwiki/PreprocessorDirective]] looks fine to me.
+>>
+>> [[ikiwiki/PageSpec]]s don't give you `none` for free, since `!foo/*` as a boolean
+>> would mean "does any page not matching `foo/*` exist", not "does `foo/*`
+>> match nothing"; however, I don't really care much about `none`, since I
+>> just threw it in while brainstorming, and I don't know any compelling use
+>> cases for it.
+>>
+>> `enabled(pluginname)` will work perfectly, and `!enabled(pluginname)`
+>> makes `disabled` unnecessary.
+>>
+>> A few use cases for `included`, which I would really like to see:
+>>
+>> * On the sidebar page, you could say something like \[[if test="!included"
+>>   """This page, without this help message, appears as a sidebar on all
+>>   pages."""]].  The help text would then only appear on the sidebar page
+>>   itself, not the sidebar included on all pages.
+>>
+>> * On [[ikiwiki/blog]] entries, you could use `included` to implement a cut.
+>>   (Please don't take that as an argument against. :) ) For instance, you
+>>   could use included rather than [[plugins/toggle]] for the detailed
+>>   changelogs of ikiwiki, or to embed an image as a link in the feed rather
+>>   than an embedded image.
+>>
+>> Some use cases for `thispage`:
+>>
+>> * You could use `thispage` to include or exclude parts of the sidebar based
+>>   on the page you include it in.  You can already use subpages/sidebar for
+>>   subpages/*, but `thispage` seems more flexible, makes it trivial to have
+>>   common portions rather than using [[plugins/inline]] with the `raw`
+>>   option, and keeps the sidebar in one place.
+>>
+>> * You could use `thispage` to implement multiple different feeds for the
+>>   same content with slightly different presentation.  For instance, using
+>>   templates for image inclusion, you could offer a feed with image links
+>>   and a feed with embedded images. Similarly, using templates for cuts, you
+>>   could offer a feed with cuts and a feed with full content in every post.
+>>
+>> I don't have any particular attachment to `sourcepage`.  It only makes
+>> sense as part of a template, since otherwise you know the source page when
+>> typing in the if.
+>>
+>> --[[JoshTriplett]]
+
+This is now completely [[todo/done]]! See [[plugins/conditional]].
+
+--[[Joey]]
+
+> You rock mightily. --[[JoshTriplett]]