Index: /home/mh/eclipse/SVN/Plugins/ShoutcastBrowser/Plugin.pm =================================================================== --- /home/mh/eclipse/SVN/Plugins/ShoutcastBrowser/Plugin.pm (revision 3079) +++ /home/mh/eclipse/SVN/Plugins/ShoutcastBrowser/Plugin.pm (working copy) @@ -652,8 +652,19 @@ sub getFunctions { return \%functions; } -sub addMenu { return 'RADIO'; } +sub addMenu { + my $disabled = scalar(grep {$_ eq 'ShoutcastBrowser::Plugin'} Slim::Utils::Prefs::getArray('disabledplugins')); + $disabled && $::d_plugins && Slim::Utils::Misc::msg("ShoutcastBrowser: plugin disabled.\n"); + if ($disabled) { + Slim::Web::Pages::addLinks("radio", { 'PLUGIN_SHOUTCASTBROWSER_MODULE_NAME' => undef }); + } else { + Slim::Web::Pages::addLinks("radio", { 'PLUGIN_SHOUTCASTBROWSER_MODULE_NAME' => "plugins/ShoutcastBrowser/index.html" }); + } + + return 'RADIO'; +} + sub setupGroup { my %setupGroup = ( @@ -1293,7 +1304,6 @@ sub webPages { my %pages = ("index\.htm" => \&handleWebIndex); - Slim::Web::Pages::addLinks("radio", { 'PLUGIN_SHOUTCASTBROWSER_MODULE_NAME' => "plugins/ShoutcastBrowser/index.html" }); return (\%pages); } Index: /home/mh/eclipse/SVN/Plugins/RadioIO/Plugin.pm =================================================================== --- /home/mh/eclipse/SVN/Plugins/RadioIO/Plugin.pm (revision 3079) +++ /home/mh/eclipse/SVN/Plugins/RadioIO/Plugin.pm (working copy) @@ -163,6 +163,16 @@ sub addMenu { my $menu = "RADIO"; + + my $disabled = scalar(grep {$_ eq 'RadioIO::Plugin'} Slim::Utils::Prefs::getArray('disabledplugins')); + $disabled && $::d_plugins && Slim::Utils::Misc::msg("RadioIO: plugin disabled.\n"); + + if ($disabled) { + Slim::Web::Pages::addLinks("radio", { 'PLUGIN_RADIOIO_MODULE_NAME' => undef }); + } else { + Slim::Web::Pages::addLinks("radio", { 'PLUGIN_RADIOIO_MODULE_NAME' => "plugins/RadioIO/index.html" }); + } + return $menu; } @@ -173,8 +183,7 @@ # Web pages sub webPages { - my %pages = ("index\.htm" => \&handleWebIndex); - Slim::Web::Pages::addLinks("radio", { 'PLUGIN_RADIOIO_MODULE_NAME' => "plugins/RadioIO/index.html" }); + my %pages = ("index\.htm" => \&handleWebIndex); return (\%pages); } Index: /home/mh/eclipse/SVN/Plugins/Picks/Plugin.pm =================================================================== --- /home/mh/eclipse/SVN/Plugins/Picks/Plugin.pm (revision 3079) +++ /home/mh/eclipse/SVN/Plugins/Picks/Plugin.pm (working copy) @@ -217,6 +217,15 @@ } sub addMenu { + my $disabled = scalar(grep {$_ eq 'Picks::Plugin'} Slim::Utils::Prefs::getArray('disabledplugins')); + $disabled && $::d_plugins && Slim::Utils::Misc::msg("Picks: plugin disabled.\n"); + + if ($disabled) { + Slim::Web::Pages::addLinks("radio", { 'PLUGIN_PICKS_MODULE_NAME' => undef }); + } else { + Slim::Web::Pages::addLinks("radio", { 'PLUGIN_PICKS_MODULE_NAME' => "plugins/Picks/index.html" }); + } + return "RADIO"; } @@ -225,7 +234,6 @@ sub webPages { my %pages = ("index\.htm" => \&handleWebIndex); - Slim::Web::Pages::addLinks("radio", { 'PLUGIN_PICKS_MODULE_NAME' => "plugins/Picks/index.html" }); return (\%pages); } Index: /home/mh/eclipse/SVN/Slim/Web/HTTP.pm =================================================================== --- /home/mh/eclipse/SVN/Slim/Web/HTTP.pm (revision 3079) +++ /home/mh/eclipse/SVN/Slim/Web/HTTP.pm (working copy) @@ -1421,6 +1421,10 @@ return $skinTemplates{$skin}; } +sub initSkinTemplateCache { + %skinTemplates = (); +} + # Fills the template file specified as $path, using either the currently # selected skin, or an override. Returns the filled template string # these are all very similar @@ -1769,7 +1773,7 @@ my $dir = shift; $::d_http && msg("Adding template directory $dir\n"); - push @templateDirs, $dir; + push @templateDirs, $dir if (not grep({$_ eq $dir} @templateDirs)); } sub isCsrfAuthCodeValid { Index: /home/mh/eclipse/SVN/Slim/Web/Setup.pm =================================================================== --- /home/mh/eclipse/SVN/Slim/Web/Setup.pm (revision 3079) +++ /home/mh/eclipse/SVN/Slim/Web/Setup.pm (working copy) @@ -1238,7 +1238,7 @@ ,'parent' => 'server' ,'preEval' => sub { my ($client,$paramref,$pageref) = @_; - + Slim::Buttons::Plugins::addSetupGroups(); my $i = 0; @@ -1310,6 +1310,7 @@ for my $group (Slim::Utils::Prefs::getArray('disabledplugins')) { delGroup('plugins',$group,1); + delGroup('radio',$group,1); delGroup('player_plugins',$group,1); if (exists &{"Plugins::" . $group . "::disablePlugin"}) { @@ -1318,6 +1319,7 @@ } # call addSetupGroups last, since it sets a flag to say we're done refreshing plugins. + Slim::Web::HTTP::initSkinTemplateCache(); Slim::Buttons::Plugins::read_plugins(); #Slim::Buttons::Plugins::addWebPages(); #Slim::Buttons::Plugins::addMenus(); @@ -1385,7 +1387,7 @@ 'title' => string('RADIO') ,'parent' => 'server' ,'preEval' => sub { - #Slim::Buttons::Plugins::addSetupGroups(); + Slim::Buttons::Plugins::addSetupGroups(); } ,'GroupOrder' => ['Default'] ,'Groups' => { @@ -3140,6 +3142,7 @@ delete $setup{$category}; } + sub existsCategory { my $category = shift; return exists $setup{$category};