Priority: Normal
Current State: Closed
Released In: 2.0.0
Target Release: major
Applies To: Engine
Component: JQueryPlugin, configure
Branches: Release01x01 trunk
This plugin has been eliminated in 1.1.9, but the configuration parameter remains enabled, and causes errors on any page that attempts to load the JQuery plugins.
$Foswiki::cfg{JQueryPlugin}{Plugins}{Themeswitcher}{Enabled} = 1;
Configure needs to handle missing
JQueryPlugins in the same way that we deal with Foswiki plugins. "missing" plugins are rendered at the end of the list of plugins along with an error to recommend that the setting be disabled. Once disabled, it's removed from the configuration.
Either that or we need a release note that sites need to manually edit
LocalSite.cfg to remove the line. However as not all sites have an easy way to edit files on the server, it would be better if the upgrade handled this.
--
GeorgeClark - 08 Nov 2013
> causes errors on any page that attempts to load the JQuery plugins.
Can't confirm this. The code isn't trying to eval modules not required.
The error message will only be show when a page tries to load the
themeswitcher
module, either using %JQREQUIRE or by adding the themeswitcher to the
{DefaultModules}
being loaded on every page.
This:
%JQREQUIRE{"themeswitcher"}%
will render as
Error: no such plugin themeswitcher
plus an admittedly ugly error message in the webserver logs:
ERROR: can't load jQuery plugin themeswitcher: Can't locate Foswiki/Plugins/JQueryPlugin/THEMESWITCHER.pm in @INC (you may need to install the Foswiki::Plugins::JQueryPlugin::THEMESWITCHER module) (@INC contains: ...) at (eval 4360) line 1.
BEGIN failed--compilation aborted at (eval 4360) line 1.
The behavior on the web front should stay the same - no such plugin - as it really isn't in existence anymore.
The error message frankly says exactly what it should: the THEMESWITCHER.pm module isn't there either, even though
LocalSite.cfg
says so.
All other plugins currently in the deprecation process - corners, autocomplete, some may follow - will produce the same error message.
This is not an urgent error blocking the release, imho.
The
eval{}
throwing the error is in
Foswiki::Plugins::JQueryPlugin::Plugin
, line 234.
As far as I can see this code is doing just fine in reporting these kind of compilation problems.
The site itself isn't affected in terms of stability. I am tempted to say this is a no-action for
JQueryPlugin. Sure
configure
could do some mending, but ...
--
MichaelDaum - 08 Nov 2013
I think there are some possible side effects here:
- Site upgrades in place using simple "un-tar" of upgrade file
- The deprecated
THEMESWITCHER.pm
will not be removed. The Config.spec
entry is removed, but the plugin remains enabled in LocalSite.cfg
and there is no way for the user to disable the plugin. The impact is possibly unpredictable as there is a deprecated plugin still active.
- Site upgrades by re-install, but keeps
LocalSite.cfg
- The deprecated THEMESWITCHER.pm is removed, but it's still enabled. User will get unexpected errors in their log whenever
%JQPLUGINS%
macro is expanded.
I was thinking that Configure would automatically enumerate the available JQ plugins as is done with regular plugins, however they are explicitly listed in
Config.spec
. I wonder if the solution would be to put them back in
Config.spec
, maybe in a separate
Deprecated JQ Plugins
section, with a checker that throws errors if they are enabled. I think if they are defined as EXPERT, then they'll only be visible if the checker flags an error.
--
GeorgeClark - 08 Nov 2013
This works pretty well. Unless you object, I'll move all of the "deprecated" plugins into their own section. Checker flags "WARN" if it's deprecated, and "ERROR" if it's been removed. Testing this, I've found another bug in configure. The code that forces display of EXPERT settings with warning or errors uses the wrong class for the warnings, so they remain hidden.
+# ---+++ Deprecated plugins
+# Any plugins listed here should be disabled. They will be removed in a future release of Foswiki.
+# They will be generate a Warning if deprecated, but an Error if the module has been removed from
+# the Foswiki distribution.
+
+# **BOOLEAN EXPERT**
+# Warning: this plugin is deprecated. Please use the autocomplete plugin part of the jQuery-ui package.
+$Foswiki::cfg{JQueryPlugin}{Plugins}{Autocomplete}{Enabled} = 0;
+
+# **BOOLEAN EXPERT**
+$Foswiki::cfg{JQueryPlugin}{Plugins}{Themeswitcher}{Enabled} = 0;
+
+# **BOOLEAN EXPERT**
+# Warning: this plugin is deprecated. Please use the tooltip plugin part of the jQuery-ui package.
+$Foswiki::cfg{JQueryPlugin}{Plugins}{Tooltip}{Enabled} = 0;
+
+# **BOOLEAN EXPERT**
+# Warning: This plugin is deprecated. Use Corner instead
+$Foswiki::cfg{JQueryPlugin}{Plugins}{Nifty}{Enabled} = 0;
+
+# **BOOLEAN EXPERT**
+# Warning: This plugin is deprecated. The shake effect is now part of the latest jQuery-ui package.
+$Foswiki::cfg{JQueryPlugin}{Plugins}{Shake}{Enabled} = 0;
I realize this means leaving obsolete stuff around in configure, but I think that's better than leaving orphan settings in the
LocalSite.cfg
file that cannot be removed without manual edit.
--
GeorgeClark - 08 Nov 2013
Great!
A small modification: in the configure section of JQueryPlugin I'd prefer to call the subsections "Themes" and "Plugins" rather than "Default Themes" and "Default Plugins". The latter clashes with the notion of
{DefaultPlugins}
to be loaded on every page.
Howerver renaming it to "Themes" unveiled a bug in
configure
(on trunk, not sure on the 11x branch) where it merges sub-sections of the same name. So I now see "Themes" from NatSkin being listed in the JQueryPlugin's configure section.
--
MichaelDaum - 09 Nov 2013
Michael, Could you set this to waiting for release and open a separate task for the sub-section merge. I'm less confident on how to fix that one and don't want to block this task.
--
GeorgeClark - 20 Dec 2013