EPrints Technical Mailing List Archive

Message: #05049


< Previous (by date) | Next (by date) > | < Previous (in thread) | Next (in thread) > | Messages - Most Recent First | Threads - Most Recent First

[EP-tech] Plugins: enabled by default?


Hi,
Just trying to verify (or otherwise) my understanding of plugins and disabling/enabling them.
From: http://wiki.eprints.org/w/New_Features_in_EPrints_3.3#EPrints_Bazaar
"By default plugins installed in lib/plugins will be disabled and hence can be enabled on a per-repository basis."

On our test repository (3.3.10), we're not seeing this - things in ~/lib/plugins/... seem to be enabled for all archives.
This causes a problem when a plugin references a field that doesn't exist for a dataobj.

Can anyone verify that their install works as expected:
Is a plugin in ~/lib/plugins/... available without being specifically enabled in the archive's cfg.d?

>From the code below, you can create two screen plugins:
PluginTestA:  should be disabled by default, but appears to be active when visiting: http://your_repo/cgi/users/home?screen=PluginTestA
PluginTestB: should also be disabled - and seems to work correctly: http://your_repo/cgi/users/home?screen=PluginTestB gives an error.

PluginTestA can be disabled by adding archive-level config (e.g. to ~/archives/ARCHIVEID/cfg/cfg.d/z_plugin_test.pl):
$c->{plugins}->{"Screen::PluginTestA"}->{params}->{disable} = 1;
but my understanding is that it should be disabled by default, and explicitly enabled when needed.

If you can test this, I'd appreciate it. Might be worth including the version of EPrints you're running too.
Cheers,
John


~/lib/plugins/EPrints/Plugin/Screen/PluginTestA.pm
####################################################################
package EPrints::Plugin::Screen::PluginTestA;

our @ISA = ( 'EPrints::Plugin::Screen' );

use strict;

sub new
{
        my( $class, %params ) = @_;
        my $self = $class->SUPER::new(%params);
        return $self;
}

sub render
{
        my( $self ) = @_;
        my $repo = $self->{repository};
        my $page = $repo->xml->create_element( "div" );
        $page->appendChild( $repo->xml->create_text_node( "This should be disabled by default" ) );
        return $page;
}

sub render_title
{
        my( $self ) = @_;
        my $f = $self->{repository}->make_doc_fragment;
        $f->appendChild( $self->{repository}->xml->create_text_node( "This is: PluginTestA" ) );
        return $f;
}
1;
####################################################################

~/lib/plugins/EPrints/Plugin/Screen/PluginTestB.pm
####################################################################
package EPrints::Plugin::Screen::PluginTestB;

our @ISA = ( 'EPrints::Plugin::Screen' );

use strict;

sub new
{
        my( $class, %params ) = @_;
        my $self = $class->SUPER::new(%params);
        $self->{disable} = 1;
        return $self;
}

sub render
{
        my( $self ) = @_;
        my $repo = $self->{repository};
        my $page = $repo->xml->create_element( "div" );
        $page->appendChild( $repo->xml->create_text_node( "This is explicitly disabled" ) );
        return $page;
}

sub render_title
{
        my( $self ) = @_;

        my $f = $self->{repository}->make_doc_fragment;
        $f->appendChild( $self->{repository}->xml->create_text_node( "This is: PluginTestB" ) );

        return $f;
}
1;
####################################################################