package EPrints::Plugin::Screen::User::Upload; #our @ISA = ( 'EPrints::Plugin::Screen::User' ); our @ISA = ( 'EPrints::Plugin::Screen' ); use strict; sub new { my( $class, %params ) = @_; my $self = $class->SUPER::new(%params); $self->{actions} = [qw/ create /]; $self->{appears} = [ { place => "user_actions", action => "create", position => 2000, } ]; return $self; } sub allow_create { my ( $self ) = @_; return $self->allow( "create_eprint" ); } sub action_create { my( $self ) = @_; my $ds = $self->{processor}->{session}->get_repository->get_dataset( "inbox" ); my $user = $self->{session}->current_user; $self->{processor}->{eprint} = $ds->create_object( $self->{session}, { userid => $user->get_value( "userid" ) } ); if( !defined $self->{processor}->{eprint} ) { my $db_error = $self->{session}->get_database->error; $self->{processor}->{session}->get_repository->log( "Database Error: $db_error" ); $self->{processor}->add_message( "error", $self->html_phrase( "db_error" ) ); return; } else { # pre-populate the creators with this user's details my $creators = (); push @$creators, {name=>$user->get_value("name"), id=>$user->get_value("email")} ; $self->{processor}->{eprint}->set_value("creators", $creators); $self->{processor}->{eprint}->commit; } $self->{processor}->{eprintid} = $self->{processor}->{eprint}->get_id; $self->{processor}->{screenid} = "EPrint::Edit"; } sub render { my( $self ) = @_; my $session = $self->{session}; my $url = URI->new($self->{processor}->{url}); $url->query_form( screen => $self->{processor}->{screenid}, _action_create => 1 ); $session->redirect( $url ); $session->terminate(); exit(0); } 1;