Extension Packages

From EPrints Documentation
Jump to: navigation, search

An extension package is a .tgz file containing multiple files which adds a suite of functionality when unpacked in the /opt/eprint3/archives/ARCHIVE_ID/ directory.

An extension can be as simple as a plugin plus a css file or add a whole exciting suite of new features.

Things you might want to put into an eprints extension package:

  • Plugins: archives/ARCHIVE_ID/cfg/plugins/EPrints/Plugin/...
  • Themes: lib/themes/...
  • scripts: archives/ARCHIVE_ID/bin/...
  • CGI scripts: archives/ARCHIVE_ID/cgi/...
  • autocompletion scripts: archives/ARCHIVE_ID/cgi/users/lookup/...
  • phrase files for use by plugins or scripts: archives/ARCHIVE_ID/cfg/lang/.../phrases/...
  • images, icons, javascript and css files to support your plugins or scripts: archives/ARCHIVE_ID/cfg/static/...

Other things you might want to include are...

  • configuration files
  • repository specific phrase files
  • autocompletion data files

The handy thing is that plugins are autoloaded, .xml files in the phrases directory are autoloaded and .pl files in the archive cfg.d are autoloaded. So if you want to give your plugin some config options, you could just give a .pl file to copy into the cfg.d/ dir looking something like.

$c->{extension}->{my_cool_extension}->{option_1} = 1;
$c->{extension}->{my_cool_extension}->{keep_alive} = "always";

And access it in your code like:

$option_1 = $plugin->{repository}->conf( "extension", "my_cool_extension", "option_1" )

etc.

You could use a shorter path in the $c datastructure, but try and make sure it's distinct to your extension so clashes don't happen.

$c->{PreviewPlus_alignment} = "vertical";

and then

$option_1 = $plugin->{repository}->conf( "PreviewPlus_alignment" );