It is dangerous to call certain functions in the Func API before the TWiki engine
and all its plugins are fully initialized. The
function for example
which as a consequence invokes the plugin's tag
handlers before their
has finished. Am I paranoid or are we
just lucky by now?
should be rather lean and any further plugin initialization
should be defered until the plugin is actually needed.
This item applies to all
plugins actually but the TwistyPlugin
is the first I came
accross... fixed in SVN 8807.
As a consequence PatternSkin
must import twisty's css and js whether the TwistyPlugin
is installed or not...fixed in SVN 8809.
So you want the Pattern skin to load - or rather the browser to load - a css file and a js file - even if it is not needed?
One reason why Dakar is slower than Cairo is because the browser needs to check for all these many files on each read. And the first topic you load from a TWiki like mine (bandwidth is limited to the 512 kbit that the ADSL can carry) takes ages to load. I already have several nasty remarks from my users. I would appreciate if things I do not need are not loaded ever by the browser.
Try and run Ethereal and watch your browsers activities loading a simple Dakar topic. Try the same in a Cairo. The number of files loaded has tripled. The number of bytes loaded tripled.
Kenneth, I share your concerns about too many file requests per page but I fear you didn't understand what has been
addressed here and maybe I haven't been verbose enough about that either. I fact the changes to the TwistyPlugin
do exactly what you are demanding: not
to call for the twisty css and js if it is not used. That is exactly
modification does...besides calling
being dangerous in
as it calls
which, for example, freaked the
command line tool.
, however, calls for twisty's css and js on every page. This was the case before and after my changes.
The only drawback is, when you use the PatternSkin and
, there are two links to
. BUT only if the current topic uses a twisty button !!! I doubt that there are four requests for two files
done by the browser.
There's no way that PatternSkin
can communicate in both directions
what they've already loaded
and what not, even not using context variables (or I missed something). Given, the TwistyPlugin
sets a a context variable
and the PatternSkin
templates would check that, the opposite direction is not possible so
that the TwistyPlugin
detected that the PatternSkin
already loaded the css and js files (is there?).