⧼vector-jumptocontent⧽

Screen Plugins: Difference between revisions

From EPrints Documentation
Kiz (talk | contribs)
Removed double redirect
 
(5 intermediate revisions by 2 users not shown)
Line 3: Line 3:
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:
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.
* A render - 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.
* 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.


==Making Screens==
* [[How to make a Screen for the Admin Section]]
* [[How to make a Screen perform Actions]]


===To make a Screen for the Admin section===


Known to work for EPrints 3.2+
See Also: [[EPrints Directory Structure/eprints3/perl lib/EPrints/Plugin/Screen|List of Core Screen Plugins]]
 
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>
 
In theory, one should be able to have multiple bits of functionality (view a little, view a lot, edit, etc), simply by testing for different values of <code>$self->allow( "my/conf/value" )</code>
 
====The locations====
Where the link for the page appears is defined by <code>$self->{appears}->[''n'']->{place}</code> (in the <code>new</code> function.)
 
We are defining a screen that appears in the "admin" area, and there are 4 tabs defined within the admin screen:
* admin_actions_editorial
* admin_actions_system
* admin_actions_config
* admin_actions_misc
 
Other places the link can appear are
* unknown to me
 
===Making the page appear===
There are three steps to making a page appear:
 
1. The Perl Package should test for ''view-ability''
<pre>
# in EPrints::Plugin::Screen::Mypackage
sub can_be_viewed
{
my( $self ) = @_;
return $self->allow( "my/conf/value" );
}
</pre>
2 The ''User'' DataObject needs to list the privilege under a role:
<pre>
  # In EPrints::DataObj::User
  foo_bar => [
    "my/view/value",
  ],
  foo_baz => [
    "my/view/value",
    "my/conf/value",
  ],
</pre>
3 The user_roles.pl file needs to make the role available to the user-type:
<pre>
# in [eprints]/archive/<ARCHIVE_ID>/cfg/cfg/user_roles.pl
$c->{user_roles}->{user} = [qw{
// truncated
foo_bar
}],
$c->{user_roles}->{admin} = [qw{
        // truncated
foo_baz
}],
</pre>
 
See Also: [[List of Core Screen Plugins]]

Latest revision as of 10:04, 9 July 2024

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 - 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.

Making Screens


See Also: List of Core Screen Plugins