Difference between revisions of "Contribute: Plugins/ExportPluginsHelloOld"

From EPrints Documentation
Jump to: navigation, search
(In More Detail)
(In More Detail)
Line 49: Line 49:
 
sub new
 
sub new
 
{
 
{
        # In addition to the class reference passed to the constructor
+
</pre>
        # a hash of options is also passed to the constructor.
+
 
 +
In addition to the class reference passed to the constructor a hash of options is also passed to the constructor.
 +
<pre>
 
         my ($class, %opts) = @_;
 
         my ($class, %opts) = @_;
 
+
</pre>
        # We create a new export plugin by calling the
+
We create a new export plugin by calling the Eprints::Plugin::Export constructor
        # Eprints::Plugin::Export constructor
+
<pre>
 
         my $self = $class->SUPER::new(%opts);
 
         my $self = $class->SUPER::new(%opts);
 
+
</pre>
        # Now we set a number of fields in our new plugin object.
+
Now we set a number of fields in our new plugin object.
 
+
<pre>
        # This is the name that will appear in the export dropdown menu.
 
        # The name should therefore be short and descriptive.
 
 
         $self->{name} = "Hello, World!";
 
         $self->{name} = "Hello, World!";
 
+
</pre>
        # This field is set to an array containing the type of objects this
+
This is the name that will appear in the export dropdown menu. The name should therefore be short and descriptive.
        # plugin can deal with. In this case lists of eprints and individual
+
<pre>
        # eprints.
 
 
         $self->{accept} = [ 'dataobj/eprint', 'list/eprint' ];
 
         $self->{accept} = [ 'dataobj/eprint', 'list/eprint' ];
 
+
</pre>
        # What class(es) of user will be able to see the plugin.
+
This field is set to an array containing the type of objects this
        # For most export plugins the value "all" will be required, allowing
+
plugin can deal with. In this case lists of eprints and individual
        # all users to see and use the plugin. A value of "staff" would
+
eprints.
        # make the plugin only visible to repository staff.
+
<pre>
 
         $self->{visible} = "all";
 
         $self->{visible} = "all";
 
+
</pre>
        # The suffix that will be appended to files exported by the plugin.
+
What class(es) of user will be able to see the plugin.
        # For instance ".bib", ".txt" or ".xls"
+
For most export plugins the value "all" will be required, allowing
 +
all users to see and use the plugin. A value of "staff" would
 +
make the plugin only visible to repository staff.
 +
<pre>
 
         $self->{suffix} = ".txt";
 
         $self->{suffix} = ".txt";
 
+
</pre>
        # This defines the MIME type of the files exported by the plugin,
+
The suffix that will be appended to files exported by the plugin. For instance ".bib", ".txt" or ".xls"
        # this should be chosen so the file can be handled appropriately.
+
<pre>
        # You can also specify file encoding, for example
 
        # "text/plain; charset=utf-8" to specify plaintext, encoded using
 
        # utf-8.
 
 
         $self->{mimetype} = "text/plain; charset=utf-8";
 
         $self->{mimetype} = "text/plain; charset=utf-8";
 
+
</pre>
 +
This defines the MIME type of the files exported by the plugin, this should be chosen so the file can be handled appropriately.
 +
You can also specify file encoding, for example "text/plain; charset=utf-8" to specify plaintext, encoded using utf-8.
 +
<pre>
 
         return $self;
 
         return $self;
 
}
 
}
 
+
</pre>
 +
<pre>
 
# This subroutine handles the export of each DataObj.
 
# This subroutine handles the export of each DataObj.
 
# It returns a scalar.
 
# It returns a scalar.

Revision as of 11:28, 9 August 2007

Hello, World!

HelloExport.pm

package EPrints::Plugin::Export::Foo::HelloExport;

@ISA = ("EPrints::Plugin::Export");

use strict;

sub new
{
        my ($class, %opts) = @_;

        my $self = $class->SUPER::new(%opts);

        $self->{name} = "Hello, World!";
        $self->{accept} = [ 'dataobj/eprint', 'list/eprint' ];
        $self->{visible} = "all";
        $self->{suffix} = ".txt";
        $self->{mimetype} = "text/plain; charset=utf-8";

        return $self;
}

sub output_dataobj
{
        my ($plugin, $dataobj) = @_;

        return $dataobj->get_value("title")."\n";
}

1;

In More Detail

package EPrints::Plugin::Export::Foo::HelloExport;

Export plugins need to inherit from EPrints::Plugin::Export

@ISA = ("EPrints::Plugin::Export");

The Constructor for our plugin

sub new
{

In addition to the class reference passed to the constructor a hash of options is also passed to the constructor.

        my ($class, %opts) = @_;

We create a new export plugin by calling the Eprints::Plugin::Export constructor

        my $self = $class->SUPER::new(%opts);

Now we set a number of fields in our new plugin object.

        $self->{name} = "Hello, World!";

This is the name that will appear in the export dropdown menu. The name should therefore be short and descriptive.

        $self->{accept} = [ 'dataobj/eprint', 'list/eprint' ];

This field is set to an array containing the type of objects this plugin can deal with. In this case lists of eprints and individual eprints.

        $self->{visible} = "all";

What class(es) of user will be able to see the plugin. For most export plugins the value "all" will be required, allowing all users to see and use the plugin. A value of "staff" would make the plugin only visible to repository staff.

        $self->{suffix} = ".txt";

The suffix that will be appended to files exported by the plugin. For instance ".bib", ".txt" or ".xls"

        $self->{mimetype} = "text/plain; charset=utf-8";

This defines the MIME type of the files exported by the plugin, this should be chosen so the file can be handled appropriately. You can also specify file encoding, for example "text/plain; charset=utf-8" to specify plaintext, encoded using utf-8.

        return $self;
}
# This subroutine handles the export of each DataObj.
# It returns a scalar.
sub output_dataobj
{
        # Besides a reference to the plugin, this subroutine is
        # also provided with a reference to an individual DataObj
        my ($plugin, $dataobj) = @_;

        # Return a scalar containing the title.
        return $dataobj->get_value("title")."\n";
}

# Standard Perl package fayre.
1;