Contribute: Plugins/ExportPluginsHelloOld
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. # This is the name that will appear in the export dropdown menu. # The name should therefore be short and descriptive. $self->{name} = "Hello, World!"; # 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->{accept} = [ 'dataobj/eprint', 'list/eprint' ]; # 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->{visible} = "all"; # The suffix that will be appended to files exported by the plugin. # For instance ".bib", ".txt" or ".xls" $self->{suffix} = ".txt"; # 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. $self->{mimetype} = "text/plain; charset=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;