]> git.vanrenterghem.biz Git - git.ikiwiki.info.git/blobdiff - doc/todo/conditional_text_based_on_ikiwiki_features.mdwn
Use Linux uuid facility instead of an external library if possible
[git.ikiwiki.info.git] / doc / todo / conditional_text_based_on_ikiwiki_features.mdwn
index 05c655b89d61316fc2da92da4fcba4b3395890c3..0d0f66da417f42d4df2bbfc0192678590ff9ffc1 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,
 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
 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`
 
 * `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.
 * `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`.
 
 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/Directive]] 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
 
 > 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
@@ -52,14 +52,14 @@ for the condition itself.
 > As to the syntax, to fit it into standard preprocessor syntax, it would
 > need to look something like this:
 >
 > As to the syntax, to fit it into standard preprocessor syntax, it would
 > need to look something like this:
 >
->      \[[if test="enabled(smiley)" """foo"""]]
+>      \[[!if test="enabled(smiley)" """foo"""]]
 > 
 > --[[Joey]]
 
 > 
 > --[[Joey]]
 
->> [[PageSpec]] syntax seems perfect, and your proposed syntax for the `if`
->> [[PreprocessorDirective]] looks fine to me.
+>> [[ikiwiki/PageSpec]] syntax seems perfect, and your proposed syntax for the `if`
+>> [[ikiwiki/Directive]] looks fine to me.
 >>
 >>
->> [[PageSpec]]s don't give you `none` for free, since `!foo/*` as a boolean
+>> [[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
 >> 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
@@ -70,7 +70,7 @@ for the condition itself.
 >>
 >> A few use cases for `included`, which I would really like to see:
 >>
 >>
 >> A few use cases for `included`, which I would really like to see:
 >>
->> * On the sidebar page, you could say something like \[[if test="!included"
+>> * On the sidebar page, you could say something like \[[!if test="!included"
 >>   """This page, without this help message, appears as a sidebar on all
 >>   pages."""]].  The help text would then only appear on the sidebar page
 >>   itself, not the sidebar included on all pages.
 >>   """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.
@@ -100,3 +100,29 @@ for the condition itself.
 >> typing in the if.
 >>
 >> --[[JoshTriplett]]
 >> typing in the if.
 >>
 >> --[[JoshTriplett]]
+
+This is now completely [[todo/done]]! See [[plugins/conditional]].
+
+--[[Joey]]
+
+> You rock mightily. --[[JoshTriplett]]
+
+Is there a way to test features other than plugins? For example,
+to add to [[ikiwiki/Markdown]] something like
+
+    \[[!if test="enabled(multimarkdown)" then="You can also use..."]]
+
+(I tried it like that just to see if it would work, but I wasn't that lucky.)
+--ChapmanFlack
+
+> No, not supported. I really think that trying to conditionalise text on a
+> page for multimarkdown is a path to madness or unreadability though.
+> Perhaps it would be better to have .mmdwn files that can only contain
+> multimarkdown? --[[Joey]]
+
+>> Really, there was only one (or maybe two) pages I had in mind as appropriate
+>> places for conditional text based on multimarkdown—the underlay pages
+>> for 'markdown' and maybe also 'formatting', because those are the pages you
+>> look at when you're trying to find out how to mark stuff up for the wiki, so
+>> if MM is enabled, they need to at least mention it and have a link to the
+>> MM syntax guide.--ChapmanFlack