Heya,

I noticed a peculiarity with the themeing system.

By default, config.options.txtTheme is set to an empty string or is
undefined. When this is so, the system look for a stylesheet in the
[[StyleSheet]] (shadow) tiddler. Nothing strange about that.

However, when you select a theme using config.options.txtTheme, even
if you select "StyleSheet", something new happens. The system now
looks for a slice StyleSheet::StyleSheet to get the CSS location. It
also honors the slice StyleSheet::PageTemplate and possibly others.

What this means is: if you set the txtTheme to "StyleSheet", different
things happen as compared to txtTheme being an empty string.

I like the idea of stylesheets either being self-contained tiddlers
(all of the stuff inside the main tiddler with slices redirecting
everything to ##sections - this makes for easy distribution - or
otherwise a main stylesheet tiddler with slices redirecting everything
else to respective tiddlers tagged with the same theme - this makes
for easier editing and makes it clearer what shadow tiddlers are being
modified by the theme.

Yet while this works as long as you choose a default stylesheet via
config.options.txtTheme, it *doesn't* work when you upload your wiki
to a website, as all potential viewers will have no cookie and thus no
txtTheme value.

As I see it there is no way to achieve a default theme other than
putting all the CSS in StyleSheet and all the html in PageLayout and
so on.

One can modify Shulman's SwitchThemePlugin to include this line:

if (!config.options.txtTheme) config.options.txtTheme = "StyleSheet";

At that point the default is changed to "StyleSheet" whenever no value
is present. Apparently the cookie is loaded before the plugin code is
executed so you have to do it like this. One could also change it to
"DefaultTheme" and then let the DefaultTheme tiddler do inclusions of
default contents, but even Shulman's SwitchThemePlugin doesn't use
that tiddler, its "default" option defaults to "StyleSheet".

I guess I will use that modified plugin with the themes I use.

The default theme system should really use themes that don't overwrite
standard tiddlers but that are contained in tiddlers like
TatamiStyleSheet and TatamiPageLayout and TatamiSideBarOptions. The
tiddler TatamiStyleSheet should contain a slice table that redirects
to those other tiddlers. That slice table should be manually copied to
StyleSheet and txtTheme should be set to "StyleSheet". This provides a
default theme for all viewers without letting go of the convenience of
having multiple themes installed. If the local user wants other themes
he needs merely change txtTheme to another stylesheet that also has a
slice table.

If the user wants a solid default theme that does not comply with this
naming scheme, he can still overwrite StyleSheet and PageLayout and so
on with that theme. Deleting those tiddlers will restore the orignial
TiddlyWiki theme as contained in the shadowtiddlers.

Actually I'm not suggesting much different from Shulman's approach
other than setting txtTheme to "StyleSheet" by default ;).

The problem lies then with TiddlyThemes which doesn't use a naming
scheme, but overwrites standard tiddlers (well i guess that's easier
for a new user).

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/tiddlywiki?hl=en.

Reply via email to