Difference between revisions of "Contribute: Plugins/ExportPluginsList"

From EPrints Documentation
Jump to: navigation, search
(Filehandles)
(Export Plugin Tutorial 2: Hello, Lists)
Line 1: Line 1:
 
= Export Plugin Tutorial 2: Hello, Lists =
 
= Export Plugin Tutorial 2: Hello, Lists =
 +
 +
In this tutorial you will learn to create slightly more complex export plugins than the one created in [[User:Tom/Export_Plugins/Hello_World| the previous tutorial]] by overriding the default handling of lists.
  
 
== HelloList.pm ==
 
== HelloList.pm ==
 +
The code in the section below should be placed in a file called HelloList.pm in the directory created previously, and Foo
 +
should be changed to the name of that directory.
 +
 
<pre>
 
<pre>
 
package EPrints::Plugin::Export::Foo::HelloList;
 
package EPrints::Plugin::Export::Foo::HelloList;

Revision as of 14:34, 9 August 2007

Export Plugin Tutorial 2: Hello, Lists

In this tutorial you will learn to create slightly more complex export plugins than the one created in the previous tutorial by overriding the default handling of lists.

HelloList.pm

The code in the section below should be placed in a file called HelloList.pm in the directory created previously, and Foo should be changed to the name of that directory.

package EPrints::Plugin::Export::Foo::HelloList;

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

use strict;

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

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

        $self->{name} = "Hello, List!";
        $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_id()."\t".$dataobj->get_value("title")."\n";
}

sub output_list
{
        my ($plugin, %opts) = @_;

        my $output = "";

        $output .= "ID\tTitle\n\n";

        foreach my $dataobj ($opts{"list"}->get_records)
        {
                $output .= $plugin->output_dataobj($dataobj, %opts);
        }

        return $output;
}

1;

In More Detail

Housekeeping

package EPrints::Plugin::Export::Foo::HelloList;

Constructor

Make sure you give each plugin a unique name.

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

Dealing With Lists

sub output_list
{
        my ($plugin, %opts) = @_;

        my $output = "";

        $output .= "ID\tTitle\n\n";

        foreach my $dataobj ($opts{"list"}->get_records)
        {
                $output .= $plugin->output_dataobj($dataobj, %opts);
        }

        return $output;
}

1;

Filehandles

sub output_list
{
        my ($plugin, %opts) = @_;

        my $output = "";

        $output .= "ID\tTitle\n\n";

        foreach my $dataobj ($opts{"list"}->get_records)
        {
                $output .= $plugin->output_dataobj($dataobj, %opts);
        }

        if (defined $opts{"fh"})
        {
                print {$opts{"fh"}} $output;
                return;
        }
        else
        {
                return $output;
        }
}