Difference between revisions of "Screen Plugins"

From EPrints Documentation
Jump to: navigation, search
Line 6: Line 6:
 
* Actions - things which modify the system in some way.
 
* Actions - things which modify the system in some way.
 
* Rights testing - the entire plugin, and individual actions, can be restricted in various ways.
 
* Rights testing - the entire plugin, and individual actions, can be restricted in various ways.
 +
 +
For EPrints 3.2+
 +
===To make a Screen for the Admin section===
 +
To make an Admin Screen plugin, you create a Perl Module in <code>[eprints]/perl_bin/EPrints/Plugin/Screen/</code> with the following basic structure
 +
<pre>
 +
 +
package EPrints::Plugin::Screen::Mypackage;
 +
 +
use EPrints::Plugin::Screen;
 +
 +
@ISA = ( 'EPrints::Plugin::Screen' );
 +
 +
use strict;
 +
 +
sub new
 +
{
 +
my( $class, %params ) = @_;
 +
my $self = $class->SUPER::new(%params);
 +
$self->{priv} = undef;
 +
$self->{appears} = [
 +
{
 +
place => "admin_actions_editorial", # see notes below
 +
position => 1450,
 +
},
 +
];
 +
return $self;
 +
}
 +
 +
sub can_be_viewed
 +
{
 +
my( $self ) = @_;
 +
return $self->allow( "my/conf/value" );
 +
}
 +
 +
sub render
 +
{
 +
my( $self ) = @_;
 +
my $session = $self->{session};
 +
        my $user = $session->current_user;
 +
 +
        my $p = $session->make_doc_fragment;
 +
 +
        # create page contents:
 +
        my $h = $session->make_element( "h3" );
 +
        $h->appendChild($session->make_text( "Look up organisations known to OA-RJ" ));
 +
        $p->appendChild($h);
 +
 +
return $p
 +
}
 +
</pre>
 +
 +
====The locations====
 +
There are 4 tabs defined:
 +
* admin_actions_editorial
 +
* admin_actions_system
 +
* admin_actions_config
 +
* admin_actions_misc
 +
 +
===Making the page appear===
 +
There are three steps to making a page appear:
 +
# The Perl Package should test for ''view-ability''
 +
<pre>
 +
sub can_be_viewed
 +
{
 +
my( $self ) = @_;
 +
return $self->allow( "my/conf/value" );
 +
}
 +
</pre>
 +
# The ''User'' DataObject needs to list the privilege under a role:
 +
<pre>
 +
# EPrints::DataObj::User
 +
  foo_bar => [
 +
    "my/view/value",
 +
  ],
 +
  foo_baz => [
 +
    "my/view/value",
 +
    "my/conf/value",
 +
  ],
 +
</pre>
 +
# The user_roles.pl file needs to make the role available to the user-type:
 +
<pre>
 +
$c->{user_roles}->{user} = [qw{
 +
// snip
 +
foo_bar
 +
}],
 +
$c->{user_roles}->{admin} = [qw{
 +
        //
 +
foo_baz
 +
}],
 +
</pre>
  
 
See Also: [[List of Core Screen Plugins]]
 
See Also: [[List of Core Screen Plugins]]

Revision as of 14:09, 13 April 2010

Screen Plugins are used to handle the User Interface. Screen plugins provide the UI to the user-interaction parts of EPrints. A screen plugin can include:

  • A render (a screen plugin can actually have several pages (like a search) or none (like the eprint move plugin). Most have a single page of output.
  • Actions - things which modify the system in some way.
  • Rights testing - the entire plugin, and individual actions, can be restricted in various ways.
For EPrints 3.2+ 

To make a Screen for the Admin section

To make an Admin Screen plugin, you create a Perl Module in [eprints]/perl_bin/EPrints/Plugin/Screen/ with the following basic structure


package EPrints::Plugin::Screen::Mypackage;

use EPrints::Plugin::Screen;

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

use strict;

sub new
{
	my( $class, %params ) = @_;
	my $self = $class->SUPER::new(%params);
	$self->{priv} = undef;
	$self->{appears} = [
		{ 
			place => "admin_actions_editorial", # see notes below
			position => 1450, 
		},
	];
	return $self;
}

sub can_be_viewed
{
	my( $self ) = @_;
	return $self->allow( "my/conf/value" );
}

sub render
{
	my( $self ) = @_;
	my $session = $self->{session};
        my $user = $session->current_user;

        my $p = $session->make_doc_fragment;

        # create page contents:
        my $h = $session->make_element( "h3" );
        $h->appendChild($session->make_text( "Look up organisations known to OA-RJ" ));
        $p->appendChild($h);

	return $p
}

The locations

There are 4 tabs defined:

  • admin_actions_editorial
  • admin_actions_system
  • admin_actions_config
  • admin_actions_misc

Making the page appear

There are three steps to making a page appear:

  1. The Perl Package should test for view-ability
sub can_be_viewed
{
	my( $self ) = @_;
	return $self->allow( "my/conf/value" );
}
  1. The User DataObject needs to list the privilege under a role:
 # EPrints::DataObj::User
  foo_bar => [
    "my/view/value",
  ],
  foo_baz => [
    "my/view/value",
    "my/conf/value",
  ],
  1. The user_roles.pl file needs to make the role available to the user-type:
$c->{user_roles}->{user} = [qw{
	// snip
	foo_bar
}],
$c->{user_roles}->{admin} = [qw{
        //
	foo_baz
}],

See Also: List of Core Screen Plugins