Bug 22053: ability to enable/disable some plugins
Test plan:
- apply this patch(es),
- launch an updatedabase,
- go to plugins/plugins-home.pl
and deal with enable/disable method
- install a plugin like KitchenSink
https://github.com/bywatersolutions/koha-plugin-kitchen-sink
- once installed, the plugin change the background color
of the staff client to orange.
- disable the plugin,
- background color should be set back to the original one
Rebased-on: 2019-03-25 Alex Arnaud <alex.arnaud@biblibre.com>
Signed-off-by: Claire Gravely <claire.gravely@bsz-bw.de>
Signed-off-by: Agustin Moyano <agustinmoyano@theke.io>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
Signed-off-by: Nick Clemens <nick@bywatersolutions.com>
This commit is contained in:
parent
0a262a214f
commit
7394028b27
|
|
@ -79,6 +79,16 @@ sub GetPlugins {
|
|||
|
||||
my $plugin = $plugin_class->new({ enable_plugins => $self->{'enable_plugins'} });
|
||||
|
||||
my $plugin_enabled = $plugin->retrieve_data('__ENABLED__');
|
||||
$plugin->{enabled} = $plugin_enabled;
|
||||
|
||||
# Want all plugins. Not only enabled ones.
|
||||
if ( defined($params->{all}) && $params->{all} ) {
|
||||
$plugin_enabled = 1;
|
||||
}
|
||||
|
||||
next unless $plugin_enabled;
|
||||
|
||||
# Limit results by method or metadata
|
||||
next if $method && !$plugin->can($method);
|
||||
my $plugin_metadata = $plugin->get_metadata;
|
||||
|
|
|
|||
|
|
@ -50,7 +50,7 @@ sub new {
|
|||
## Run the installation method if it exists and hasn't been run before
|
||||
if ( $self->can('install') && !$self->retrieve_data('__INSTALLED__') ) {
|
||||
if ( $self->install() ) {
|
||||
$self->store_data( { '__INSTALLED__' => 1 } );
|
||||
$self->store_data( { '__INSTALLED__' => 1, '__ENABLED__' => 1 } );
|
||||
if ( my $version = $plugin_version ) {
|
||||
$self->store_data({ '__INSTALLED_VERSION__' => $version });
|
||||
}
|
||||
|
|
@ -272,6 +272,36 @@ sub _version_compare {
|
|||
return 0;
|
||||
}
|
||||
|
||||
=head2 enable
|
||||
|
||||
Method for enabling plugin
|
||||
|
||||
$plugin->enable
|
||||
|
||||
=cut
|
||||
|
||||
sub enable {
|
||||
my ($self) = @_;
|
||||
|
||||
$self->store_data( {'__ENABLED__' => 1} );
|
||||
|
||||
return $self;
|
||||
}
|
||||
|
||||
=head2 disable
|
||||
|
||||
Method for disabling plugin
|
||||
|
||||
$plugin->disable
|
||||
|
||||
=cut
|
||||
|
||||
sub disable {
|
||||
my ($self) = @_;
|
||||
|
||||
$self->store_data( {'__ENABLED__' => 0} );
|
||||
}
|
||||
|
||||
1;
|
||||
__END__
|
||||
|
||||
|
|
|
|||
|
|
@ -524,7 +524,7 @@ input {
|
|||
}
|
||||
|
||||
label,
|
||||
.label {
|
||||
.label:not(.label-primary):not(.label-default) {
|
||||
color: #000;
|
||||
display: inline;
|
||||
font-size: inherit;
|
||||
|
|
|
|||
|
|
@ -77,7 +77,14 @@
|
|||
|
||||
[% FOREACH plugin IN plugins %]
|
||||
<tr>
|
||||
<td><strong>[% plugin.metadata.name | html %]</strong></td>
|
||||
<td>
|
||||
[% IF ( plugin.enabled ) %]
|
||||
<span class="label label-primary">ENABLED</span>
|
||||
[% ELSE %]
|
||||
<span class="label label-default">DISABLED</span>
|
||||
[% END %]
|
||||
<strong>[% plugin.metadata.name | html %]</strong>
|
||||
</td>
|
||||
<td>
|
||||
[% plugin.metadata.description | html %]
|
||||
|
||||
|
|
@ -124,6 +131,11 @@
|
|||
[% END %]
|
||||
[% IF ( CAN_user_plugins_manage ) %]
|
||||
<li><a class="uninstall_plugin" data-plugin-name="[% plugin.metadata.name | html %]" href="/cgi-bin/koha/plugins/plugins-uninstall.pl?class=[% plugin.class | html %]"><i class="fa fa-trash"></i> Uninstall</a></li>
|
||||
[% IF ( plugin.enabled ) %]
|
||||
<li><a class="enable_plugin" data-plugin-name="[% plugin.metadata.name | html %]" href="/cgi-bin/koha/plugins/plugins-enable.pl?class=[% plugin.class | html %]&method=disable"><i class="fa fa-pause"></i> Disable</a></li>
|
||||
[% ELSE %]
|
||||
<li><a class="enable_plugin" data-plugin-name="[% plugin.metadata.name | html %]" href="/cgi-bin/koha/plugins/plugins-enable.pl?class=[% plugin.class | html %]&method=enable"><i class="fa fa-play"></i> Enable</a></li>
|
||||
[% END %]
|
||||
[% END %]
|
||||
</ul>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -0,0 +1,42 @@
|
|||
#!/usr/bin/perl
|
||||
#
|
||||
# This file is part of Koha.
|
||||
#
|
||||
# Koha is free software; you can redistribute it and/or modify it
|
||||
# under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# Koha is distributed in the hope that it will be useful, but
|
||||
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with Koha; if not, see <http://www.gnu.org/licenses>.
|
||||
|
||||
use Modern::Perl;
|
||||
|
||||
use CGI qw ( -utf8 );
|
||||
|
||||
use C4::Context;
|
||||
use C4::Auth qw(check_cookie_auth);
|
||||
use Koha::Plugins::Handler;
|
||||
|
||||
die("Koha plugins are disabled!")
|
||||
unless C4::Context->preference('UseKohaPlugins');
|
||||
|
||||
my $input = new CGI;
|
||||
|
||||
my ( $auth_status, $sessionID ) =
|
||||
check_cookie_auth( $input->cookie('CGISESSID'), { plugins => 'manage' } );
|
||||
|
||||
my $class = $input->param('class');
|
||||
my $method = $input->param('method');
|
||||
|
||||
Koha::Plugins::Handler->run({
|
||||
class => $class,
|
||||
method => $method
|
||||
});
|
||||
|
||||
print $input->redirect("/cgi-bin/koha/plugins/plugins-home.pl");
|
||||
|
|
@ -51,6 +51,7 @@ if ($plugins_enabled) {
|
|||
|
||||
my @plugins = Koha::Plugins->new()->GetPlugins({
|
||||
method => $method,
|
||||
all => 1,
|
||||
});
|
||||
|
||||
$template->param( plugins => \@plugins, );
|
||||
|
|
|
|||
Loading…
Reference in New Issue