View | Details | Raw Unified | Return to bug 24631
Collapse All | Expand All

(-)a/Koha/Plugins.pm (-1 / +53 lines)
Lines 21-29 use Modern::Perl; Link Here
21
21
22
use Class::Inspector;
22
use Class::Inspector;
23
use List::MoreUtils qw(any);
23
use List::MoreUtils qw(any);
24
use Module::Load::Conditional qw(can_load);
25
use Module::Load qw(load);
24
use Module::Load qw(load);
25
use Module::Load::Conditional qw(can_load);
26
use Module::Pluggable search_path => ['Koha::Plugin'], except => qr/::Edifact(|::Line|::Message|::Order|::Segment|::Transport)$/;
26
use Module::Pluggable search_path => ['Koha::Plugin'], except => qr/::Edifact(|::Line|::Message|::Order|::Segment|::Transport)$/;
27
use YAML qw(LoadFile);
27
28
28
use C4::Context;
29
use C4::Context;
29
use C4::Output;
30
use C4::Output;
Lines 112-117 sub GetPlugins { Link Here
112
    return @plugins;
113
    return @plugins;
113
}
114
}
114
115
116
sub GetPluginsMetadata {
117
    my ( $self, $params ) = @_;
118
119
    my $method       = $params->{method};
120
    my $req_metadata = $params->{metadata} // {};
121
122
    my $filter = ( $method ) ? { plugin_method => $method } : undef;
123
124
    my $plugin_classes = Koha::Plugins::Methods->search(
125
        $filter,
126
        {   columns  => 'plugin_class',
127
            distinct => 1
128
        }
129
    )->_resultset->get_column('plugin_class');
130
131
    my @plugins;
132
    while ( my $plugin_class = $plugin_classes->next ) {
133
        my $plugin_path = $plugin_class;
134
        $plugin_path =~ s/::/\//g;  # Take class name, transform :: to / to get path
135
        $plugin_path =~ s/$/.pm/;   # Add .pm to the end
136
        require $plugin_path;   # Require the plugin to have it's path listed in INC
137
        $plugin_path =
138
          $INC{$plugin_path};   # Get the full true path to the plugin from INC
139
        my $meta_yaml = "$plugin_path/META.yml";
140
141
        my $plugin_metadata;
142
143
        if ( -r $meta_yaml ) {
144
           $plugin_metadata = YAML::LoadFile($meta_yaml);
145
        } else {
146
            load $plugin_class;
147
            my $plugin = $plugin_class->new({
148
                enable_plugins => $self->{'enable_plugins'}
149
            });
150
151
            # filter the plugin out by metadata
152
            $plugin_metadata = $plugin->get_metadata;
153
        }
154
155
        next
156
            if $plugin_metadata
157
            and %$req_metadata
158
            and any { !$plugin_metadata->{$_} || $plugin_metadata->{$_} ne $req_metadata->{$_} } keys %$req_metadata;
159
160
        push @plugins, $plugin_metadata;
161
162
    }
163
164
    return @plugins;
165
}
166
115
=head2 InstallPlugins
167
=head2 InstallPlugins
116
168
117
Koha::Plugins::InstallPlugins()
169
Koha::Plugins::InstallPlugins()
(-)a/koha-tmpl/intranet-tmpl/prog/en/modules/plugins/plugins-home.tt (-14 / +14 lines)
Lines 80-86 Link Here
80
                        </table>
80
                        </table>
81
                    [% END %]
81
                    [% END %]
82
82
83
                    [% UNLESS ( plugins ) %]
83
                    [% UNLESS ( plugins_metadata ) %]
84
                        [% UNLESS ( method ) %]
84
                        [% UNLESS ( method ) %]
85
                            <div class="dialog message">No plugins installed</div>
85
                            <div class="dialog message">No plugins installed</div>
86
                        [% ELSE %]
86
                        [% ELSE %]
Lines 113-122 Link Here
113
                                [% END %]
113
                                [% END %]
114
                            </tr>
114
                            </tr>
115
115
116
                            [% FOREACH plugin IN plugins %]
116
                            [% FOREACH metadata IN plugins_metadata %]
117
                                <tr>
117
                                <tr>
118
                                    <td>
118
                                    <td>
119
                                        <strong>[% plugin.metadata.name | html %]</strong>
119
                                        <strong>[% metadata.name | html %]</strong>
120
                                        [% IF ( plugin.is_enabled ) %]
120
                                        [% IF ( plugin.is_enabled ) %]
121
                                            <span class="label label-primary">ENABLED</span>
121
                                            <span class="label label-primary">ENABLED</span>
122
                                        [% ELSE %]
122
                                        [% ELSE %]
Lines 124-148 Link Here
124
                                        [% END %]
124
                                        [% END %]
125
                                    </td>
125
                                    </td>
126
                                    <td>
126
                                    <td>
127
                                        [% plugin.metadata.description | html %]
127
                                        [% metadata.description | html %]
128
128
129
                                        [% IF ( plugin.metadata.minimum_version && koha_version < plugin.metadata.minimum_version ) %]
129
                                        [% IF ( metadata.minimum_version && koha_version < metadata.minimum_version ) %]
130
                                            <div class="dialog alert">
130
                                            <div class="dialog alert">
131
                                                Warning: This report was written for a newer version of Koha. Run at your own risk.
131
                                                Warning: This report was written for a newer version of Koha. Run at your own risk.
132
                                            </div>
132
                                            </div>
133
                                        [% END %]
133
                                        [% END %]
134
134
135
                                        [% IF ( plugin.metadata.maximum_version && koha_version > plugin.metadata.maximum_version ) %]
135
                                        [% IF ( metadata.maximum_version && koha_version > metadata.maximum_version ) %]
136
                                            <div class="dialog alert">
136
                                            <div class="dialog alert">
137
                                                Warning: This plugin was written for an older version of Koha. Run at your own risk.
137
                                                Warning: This plugin was written for an older version of Koha. Run at your own risk.
138
                                            </div>
138
                                            </div>
139
                                        [% END %]
139
                                        [% END %]
140
                                    </td>
140
                                    </td>
141
                                    <td>[% plugin.metadata.author | html %]</td>
141
                                    <td>[% metadata.author | html %]</td>
142
                                    <td>[% plugin.metadata.version | html %]</td>
142
                                    <td>[% metadata.version | html %]</td>
143
                                    <td>[% plugin.metadata.minimum_version | html %]</td>
143
                                    <td>[% metadata.minimum_version | html %]</td>
144
                                    <td>[% plugin.metadata.maximum_version | html %]</td>
144
                                    <td>[% metadata.maximum_version | html %]</td>
145
                                    <td>[% plugin.metadata.date_updated | $KohaDates %]</td>
145
                                    <td>[% metadata.date_updated | $KohaDates %]</td>
146
                                    [% IF ( CAN_user_plugins_configure || CAN_user_plugins_manage || CAN_user_plugins_report || CAN_user_plugins_tool ) %]
146
                                    [% IF ( CAN_user_plugins_configure || CAN_user_plugins_manage || CAN_user_plugins_report || CAN_user_plugins_tool ) %]
147
                                        <td class="actions">
147
                                        <td class="actions">
148
                                            <div class="dropdown">
148
                                            <div class="dropdown">
Lines 168-178 Link Here
168
                                                        [% END %]
168
                                                        [% END %]
169
                                                    [% END %]
169
                                                    [% END %]
170
                                                    [% IF ( CAN_user_plugins_manage ) %]
170
                                                    [% IF ( CAN_user_plugins_manage ) %]
171
                                                            <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 fa-fw"></i> Uninstall</a></li>
171
                                                            <li><a class="uninstall_plugin" data-plugin-name="[% metadata.name | html %]" href="/cgi-bin/koha/plugins/plugins-uninstall.pl?class=[% plugin.class | html %]"><i class="fa fa-trash fa-fw"></i> Uninstall</a></li>
172
                                                        [% IF ( plugin.is_enabled ) %]
172
                                                        [% IF ( plugin.is_enabled ) %]
173
                                                                <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 fa-fw"></i> Disable</a></li>
173
                                                                <li><a class="enable_plugin" data-plugin-name="[% metadata.name | html %]" href="/cgi-bin/koha/plugins/plugins-enable.pl?class=[% plugin.class | html %]&method=disable"><i class="fa fa-pause fa-fw"></i> Disable</a></li>
174
                                                        [% ELSE %]
174
                                                        [% ELSE %]
175
                                                                <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 fa-fw"></i> Enable</a></li>
175
                                                                <li><a class="enable_plugin" data-plugin-name="[% metadata.name | html %]" href="/cgi-bin/koha/plugins/plugins-enable.pl?class=[% plugin.class | html %]&method=enable"><i class="fa fa-play fa-fw"></i> Enable</a></li>
176
                                                        [% END %]
176
                                                        [% END %]
177
                                                    [% END %]
177
                                                    [% END %]
178
                                                </ul>
178
                                                </ul>
(-)a/plugins/plugins-home.pl (-3 / +2 lines)
Lines 53-64 if ($plugins_enabled) { Link Here
53
        method       => $method,
53
        method       => $method,
54
    );
54
    );
55
55
56
    my @plugins = Koha::Plugins->new()->GetPlugins({
56
    my @plugins = Koha::Plugins->new()->GetPluginsMetadata({
57
        method => $method,
57
        method => $method,
58
        all    => 1,
58
        all    => 1,
59
    });
59
    });
60
60
61
    $template->param( plugins => \@plugins, );
61
    $template->param( plugins_metadata => \@plugins, );
62
62
63
    my @results;
63
    my @results;
64
    if ($plugin_search) {
64
    if ($plugin_search) {
65
- 

Return to bug 24631