package EPrints::Plugin::Screen::Container::RemoveItem; our @ISA = ( 'EPrints::Plugin::Screen::Container' ); use strict; sub new { my( $class, %params ) = @_; my $self = $class->SUPER::new(%params); $self->{icon} = "action_container_remove.png"; $self->{appears} = [ { place => "eprint_container_item_actions", position => 150, }, ]; $self->{actions} = [qw/ remove cancel /]; return $self; } #sub can_be_viewed #{ # my( $self ) = @_; # return $self->allow_remove; # #return $self->allow( "container/edit" ); #} sub render { my( $self ) = @_; my $div = $self->{session}->make_element( "div", class=>"ep_block" ); $div->appendChild( $self->html_phrase("sure_remove_item", title=>$self->{processor}->{container}->render_description() ) ); my %buttons = ( cancel => $self->{session}->phrase( "lib/submissionform:action_cancel" ), remove => $self->{session}->phrase( "lib/submissionform:action_remove" ), _order => [ "remove", "cancel" ] ); my $form= $self->render_form; $form->appendChild( $self->{session}->render_action_buttons( %buttons ) ); $div->appendChild( $form ); $form->appendChild( $self->{session}->render_hidden_field( "eprintid", $self->{processor}->{eprintid} ) ); return( $div ); } sub allow_remove { my( $self ) = @_; return $self->allow( "container/edit" ); } sub allow_cancel { my( $self ) = @_; return 1; } sub action_cancel { my( $self ) = @_; $self->{processor}->{screenid} = "Container::View"; } sub action_remove { my( $self ) = @_; $self->{processor}->{screenid} = "Containers"; my $itemid = $self->{processor}->{eprintid}; my $eprints = $self->{processor}->{container}->get_value( "eprints" ); my $revised_list = (); foreach my $id (@$eprints) { push (@$revised_list, $id) unless $id == $itemid; } $self->{processor}->{container}->set_value( "eprints", $revised_list ); $self->{processor}->{container}->commit; $self->{processor}->add_message( "message", $self->html_phrase( "item_removed_from_container" ) ); } sub properties_from { my( $self ) = @_; $self->{processor}->{containerid} = $self->{session}->param( "containerid" ); $self->{processor}->{eprintid} = $self->{session}->param( "eprintid" ); my $container_ds = $self->{session}->get_repository->get_dataset( "container" ); my $ep_ds = $self->{session}->get_repository->get_dataset( "eprint" ); my $container = $container_ds->dataobj($self->{processor}->{containerid}); my $eprint = $ep_ds->dataobj($self->{processor}->{eprintid}); if( !defined $container ) { $self->{processor}->{screenid} = "Error"; $self->{processor}->add_message( "error", $self->{session}->html_phrase( "cgi/users/edit_eprint:cant_find_it", id=>$self->{session}->make_text( $self->{processor}->{containerid} ) ) ); return; } if( !defined $eprint ) { $self->{processor}->{screenid} = "Error"; $self->{processor}->add_message( "error", $self->{session}->html_phrase( "cgi/users/edit_eprint:cant_find_it", id=>$self->{session}->make_text( $self->{processor}->{eprintid} ) ) ); return; } $self->SUPER::properties_from; } 1;