Browse Source

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 <martin.renvoize@ptfs-europe.com>

Signed-off-by: Nick Clemens <nick@bywatersolutions.com>

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
20.11.x
Martin Renvoize 2 years ago
committed by Jonathan Druart
parent
commit
759ff45199
  1. 3
      Koha/Plugins.pm
  2. 15
      koha-tmpl/intranet-tmpl/prog/en/modules/plugins/plugins-home.tt
  3. 11
      plugins/plugins-home.pl

3
Koha/Plugins.pm

@ -164,14 +164,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(

15
koha-tmpl/intranet-tmpl/prog/en/modules/plugins/plugins-home.tt

@ -116,6 +116,19 @@
</tr>
[% FOREACH plugin IN plugins %]
[% IF plugin.error %]
<tr class="warn">
<td>
<strong>[% plugin.name | html %]</strong>
<span class="label label-warning">ERRORS</span>
</td>
[% IF ( CAN_user_plugins_configure || CAN_user_plugins_manage || CAN_user_plugins_report || CAN_user_plugins_tool ) %]
<td colspan="7">Error found whilst attempting to load plugin</td>
[% ELSE %]
<td colspan="6">Error found whilst attempting to load plugin</td>
[% END %]
</tr>
[% ELSE %]
<tr>
<td>
<strong>[% plugin.metadata.name | html %]</strong>
@ -181,6 +194,8 @@
</div>
</td>
[% END %]
</tr>
[% END %]
[% END %]
</table>
[% END %]

11
plugins/plugins-home.pl

@ -52,10 +52,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, );

Loading…
Cancel
Save