From 1fee97d513294322e08d43d3c2089756ffd8fb8d Mon Sep 17 00:00:00 2001 From: Martin Renvoize Date: Wed, 7 Oct 2020 16:37:06 +0100 Subject: [PATCH] Bug 25549: Add error reporting to plugins-home This patch adds handling for the newly introduced 'errors' option in GetPlugins and reports erroroneos plugins to the user. To test: 1 - Enable plugins in the koha-conf 2 - Install the kitchen sink plugin 3 - Your staff client should be orange now :-) 4 - The plugin should display as installed in the table at tools/plugins. 5 - edit the plugin module /var/lib/koha/kohadev/plugins/Koha/Plugin/Com/ByWaterSolutions/KitchenSink.pm 6 - Add a line to break compilation, like: this won't compile 7 - Restart all 8 - Your Koha is not broken, but is no longer orange (The plugin is not loading). 9 - The plugin should display as unable to load in the table at tools/plugins. Signed-off-by: Martin Renvoize Signed-off-by: Nick Clemens Signed-off-by: Katrin Fischer Signed-off-by: Jonathan Druart (cherry picked from commit 759ff4519961d0c256eb05a4797fb21c3b2c22d9) Signed-off-by: Lucas Gass (cherry picked from commit acd96409ea869862506233cee3404e14254e5725) Signed-off-by: Aleisha Amohia --- Koha/Plugins.pm | 3 +-- .../prog/en/modules/plugins/plugins-home.tt | 15 +++++++++++++++ plugins/plugins-home.pl | 11 +++++++---- 3 files changed, 23 insertions(+), 6 deletions(-) diff --git a/Koha/Plugins.pm b/Koha/Plugins.pm index 6a1b7b392b..108490d2d0 100644 --- a/Koha/Plugins.pm +++ b/Koha/Plugins.pm @@ -135,14 +135,13 @@ sub InstallPlugins { my @plugin_classes = $self->plugins(); my @plugins; - # If we can reload the plugin we will add the methods back, if not they should be removed - Koha::Plugins::Methods->search()->delete(); foreach my $plugin_class (@plugin_classes) { if ( can_load( modules => { $plugin_class => undef }, nocache => 1 ) ) { next unless $plugin_class->isa('Koha::Plugins::Base'); my $plugin = $plugin_class->new({ enable_plugins => $self->{'enable_plugins'} }); + Koha::Plugins::Methods->search({ plugin_class => $plugin_class })->delete(); foreach my $method ( @{ Class::Inspector->methods( $plugin_class, 'public' ) } ) { Koha::Plugins::Method->new( diff --git a/koha-tmpl/intranet-tmpl/prog/en/modules/plugins/plugins-home.tt b/koha-tmpl/intranet-tmpl/prog/en/modules/plugins/plugins-home.tt index 5d598c525e..b7a9142170 100644 --- a/koha-tmpl/intranet-tmpl/prog/en/modules/plugins/plugins-home.tt +++ b/koha-tmpl/intranet-tmpl/prog/en/modules/plugins/plugins-home.tt @@ -76,6 +76,19 @@ [% FOREACH plugin IN plugins %] + [% IF plugin.error %] + + + [% plugin.name | html %] + ERRORS + + [% IF ( CAN_user_plugins_configure || CAN_user_plugins_manage || CAN_user_plugins_report || CAN_user_plugins_tool ) %] + Error found whilst attempting to load plugin + [% ELSE %] + Error found whilst attempting to load plugin + [% END %] + + [% ELSE %] [% plugin.metadata.name | html %] @@ -141,6 +154,8 @@ [% END %] + + [% END %] [% END %] [% END %] diff --git a/plugins/plugins-home.pl b/plugins/plugins-home.pl index 04a817aede..7809060b14 100755 --- a/plugins/plugins-home.pl +++ b/plugins/plugins-home.pl @@ -48,10 +48,13 @@ if ($plugins_enabled) { method => $method, ); - my @plugins = Koha::Plugins->new()->GetPlugins({ - method => $method, - all => 1, - }); + my @plugins = Koha::Plugins->new()->GetPlugins( + { + method => $method, + all => 1, + errors => 1 + } + ); $template->param( plugins => \@plugins, ); -- 2.39.5