Reference »

Dynamic PmWiki forms with HttpVariables

Note: Remove the backslashes from the (:\css:) and (:\cssend:) directives when using this code!

(:comment This view selector relies on the HttpVariables and CSSInWikiPages recipes.:)

(:comment Depending on which view is set, the container has a different class, letting us style its contents on the basis of the view.:)
(:\css:)
#view_container.view_one {
	color: red;
}
#view_container.view_two {
	color: green;
}
#view_container.view_three {
	color: blue;
}
(:\cssend:)

(:comment We set the default view, for new visitors to the page.:)
(:default_view: one:)

(:comment We set a cookie, so active view is preserved between visits. Cookie path should be to the current page.:)
(:if ! equal {$^data_view} "":)
(:cookie path="/Main/WikiSandbox" data_view {$^data_view} :)
(:else:)
(:cookie path="/Main/WikiSandbox" data_view {$:default_view} :)
(:ifend:)

(:comment The selector passes the desired view as a GET parameter.:)
[[{$FullName}?data_view=one | One]] | [[{$FullName}?data_view=two | Two]] | [[{$FullName}?data_view=three | Three]]

(:comment We set the container class. If the client has passed a GET parameter, or if the client has a cookie stored, we use that. Otherwise, we use the default value.:)
(:if ! equal {$^data_view} "":)
(:div id='view_container' class='view_{$^data_view}':)
(:else:)
(:div id='view_container' class='view_{$:default_view}':)
(:ifend:)
Test
(:divend:)