package EPrints::Plugin::Screen::Container::View; use EPrints::Plugin::Screen::Containers; @ISA = ( 'EPrints::Plugin::Screen::Container' ); use strict; sub new { my( $class, %params ) = @_; my $self = $class->SUPER::new(%params); $self->{icon} = "action_view.png"; $self->{appears} = [ { place => "container_item_actions", position => 10, }, ]; return $self; } sub register_furniture { my( $self ) = @_; return $self->SUPER::register_furniture; } sub about_to_render { my( $self ) = @_; $self->{processor}->{screenid} = "Container::View"; } sub render_contents { my( $self ) = @_; my $session = $self->{session}; my $div = $session->make_element( "div", class=>"ep_block" ); my $table = $session->make_element( "table", width=>"100%", cellspacing=>"0", cellpadding=>"3", border=>"0" ); $div->appendChild( $table ); my @fields = qw( name description parentid ownerid users eprints funders subjects category divisions ); foreach my $name (@fields) { my $field = $self->{processor}->{container}->get_dataset->get_field( $name ); my $tr = $session->make_element( "tr" ); my $th = $session->make_element( "th", align=>"right", valign=>"top" ); my $td = $session->make_element( "td" ); $table->appendChild( $tr ); $tr->appendChild( $th ); $tr->appendChild( $td ); $th->appendChild( $field->render_name( $session ) ); $th->appendChild( $session->make_text(": ") ); if ( $self->{processor}->{container}->is_set( $name ) ) { if ($name eq "parentid") { my $parent_url = "?screen=Container::View&containerid="; $parent_url .= $self->{processor}->{container}->get_value( $name ); my $a = $session->render_link($parent_url); $a->appendChild( $self->{processor}->{container}->render_value($name) ); $td->appendChild( $a ); } else { $td->appendChild( $self->{processor}->{container}->render_value($name) ); } } else { $td->appendChild( $session->html_phrase( "container_workflow_no_data" ) ); } } if ($self->{processor}->{container}->is_set("eprints")) { my $tr = $session->make_element( "tr" ); my $th = $session->make_element( "th", align=>"left", valign=>"top", colspan=>"2" ); $th->appendChild( $session->html_phrase( "container_workflow_inherited_section" ) ); $tr->appendChild( $th ); $table->appendChild( $tr ); my $funders = $self->{processor}->{container}->get_inherited_items( "funders" ); my $categories = $self->{processor}->{container}->get_inherited_items( "category" ); my $subjects = $self->{processor}->{container}->get_inherited_items( "subjects" ); my $divisions = $self->{processor}->{container}->get_inherited_items( "divisions" ); $self->_display_inherited_items($table, "funders", $funders ); $self->_display_inherited_items($table, "category", $categories ); $self->_display_inherited_items($table, "subjects", $subjects ); $self->_display_inherited_items($table, "divisions", $divisions ); } #display items provided by the child containers my $container_ds = $session->get_repository->get_dataset( "container" ); my $tr = $session->make_element( "tr" ); my $th = $session->make_element( "th", align=>"left", valign=>"top", colspan=>"2" ); $th->appendChild( $session->html_phrase( "container_workflow_inherited_from_child_section" ) ); $tr->appendChild( $th ); $table->appendChild( $tr ); my $funders = $self->{processor}->{container}->get_items_from_children( "funders" ); my $categories = $self->{processor}->{container}->get_items_from_children( "category" ); my $subjects = $self->{processor}->{container}->get_items_from_children( "subjects" ); my $divisions = $self->{processor}->{container}->get_items_from_children( "divisions" ); $self->_display_inherited_items($table, "funders", $funders ); $self->_display_inherited_items($table, "category", $categories ); $self->_display_inherited_items($table, "subjects", $subjects ); $self->_display_inherited_items($table, "divisions", $divisions ); return $div; } sub _display_inherited_items { my( $self, $table, $field_name, $data) = @_; my $session = $self->{session}; my $tr = $session->make_element( "tr" ); my $th = $session->make_element( "th", align=>"right", valign=>"top" ); my $td = $session->make_element( "td" ); $table->appendChild( $tr ); $tr->appendChild( $th ); $tr->appendChild( $td ); my $field = $self->{processor}->{container}->get_dataset->get_field( $field_name ); $th->appendChild( $field->render_name( $session ) ); $th->appendChild( $session->make_text(": ") ); if (scalar keys %$data) { my @inherited_data = keys %$data; $td->appendChild( $field->render_value($session, \@inherited_data ) ); } else { $td->appendChild( $session->html_phrase("container_has_no_items") ); } } sub can_be_viewed { my( $self ) = @_; return $self->allow( "container/view" ); } sub render { my( $self ) = @_; my $session = $self->{session}; my $page = $self->{session}->make_doc_fragment; $page->appendChild( $self->render_contents ); my $buttons = $self->render_common_action_buttons; $page->appendChild( $buttons ); my ($data,$title) = $self->{processor}->{container}->render_view; # my $div = $session->make_element( "div", class=>"ep_block" ); # $page->appendChild( $div ); # $div->appendChild( $data ); return $page; } sub render_common_action_buttons { my( $self ) = @_; my $frag = $self->{session}->make_doc_fragment; $frag->appendChild( $self->render_action_list_bar( "container_actions_bar", ['containerid'] ) ); return $frag; } 1;