package EPrints::Plugin::MePrints::Layout::Tabbed; use strict; use EPrints::Plugin::MePrints::Layout; our @ISA = qw/ EPrints::Plugin::MePrints::Layout /; sub new { my( $class, %params ) = @_; my $self = $class->SUPER::new(%params); $self->{name} = "Widget Tabbed Layout"; return $self; } sub render { my( $self ) = @_; my $user = $self->{user}; unless( defined $user ) { return $self->html_phrase( "no_user" ); } my $session = $self->{session}; my $page = $session->make_doc_fragment; my $page_title = $session->make_element( "H1", "class"=>"ep_tm_pagetitle"); $page_title->appendChild( $user->render_citation( 'profile_title' ) ); unless( $self->{static} ) { if ( defined $session->{config}->{meprints_control_position} && $session->{config}->{meprints_control_position} eq "above" ) { #my $div = $session->make_element( "div", class=>"ep_core_widgets_right", 'cellpadding'=>'0', cellspacing=>'0'); my $widget = $session->plugin( 'MePrints::Widget::QuickLinks', processor => $self->{processor} ); $widget->{user} = $user; my $box = $widget->get_surround()->render( "widget" => $widget, "id" => "ep_profile_QuickLinks", "session" => $session, "content_style" => "float: right; display: block" ); $page->appendChild( $box ); my $div = $session->make_element( "div", style=>"height:1px; width:100%; clear:right;" ); $page->appendChild( $div ); } } $page->appendChild( $page_title ); my @tabs; #construct the content for the tabs if ( $session->{config}->{meprints_stats_tab} ) { @tabs = ( &render_user_details( $self, $session, $user ), &render_user_outputs( $self, $session, $user ), &render_user_gallery( $self, $session, $user ), &render_user_stats( $self, $session, $user ), ); } else { @tabs = ( &render_user_details( $self, $session, $user ), &render_user_outputs( $self, $session, $user ), &render_user_gallery( $self, $session, $user ), ); } my $id_prefix = "MePrint_Profile_.".$user->get_id; # render the tab menu $page->appendChild( $session->render_tabs( id_prefix => $id_prefix, current => $tabs[0]->{id}, tabs => [map { $_->{id} } @tabs], labels => {map { $_->{id} => $_->{title} } @tabs}, links => {map { $_->{id} => "" } @tabs}, ) ); # panel that all the tab content sits in my $panel = $session->make_element( "div", id => "${id_prefix}_panels", class => "ep_tab_panel", ); $page->appendChild( $panel ); # populate each of the panels foreach my $tab (@tabs) { my $view_div = $session->make_element( "div", id => "${id_prefix}_panel_".$tab->{id}, ); if( $tab ne $tabs[0] ) { $view_div->setAttribute( "style", "display: none" ); } $view_div->appendChild( $tab->{content} ); $panel->appendChild( $view_div ); } unless( $self->{static} ) { if ( ! defined $session->{config}->{meprints_control_position} || $session->{config}->{meprints_control_position} ne "above" ) { my $table = $session->make_element( "table", class=>"ep_core_widgets", 'cellpadding'=>'0', cellspacing=>'0'); my $tr = $session->make_element( "tr" ); $table->appendChild( $tr ); my $td = $session->make_element( "td", width=>"100%", valign=>"top", align=>"center", colspan=>"2" ); $tr->appendChild( $td ); my $widget = $session->plugin( 'MePrints::Widget::QuickLinks', processor => $self->{processor} ); $widget->{user} = $user; my $box = $widget->get_surround()->render( "widget" => $widget, "id" => "ep_profile_QuickLinks", "session" => $session ); $td->appendChild( $box ); $page->appendChild( $table ); } } return $page; } sub get_layoutmgr_id { return 'Tabbed'; } sub render_user_details { my ( $self, $session, $user ) = @_; my ( $table, $tr, $td, $widget, $box ); $table = $session->make_element( "table", class=>"ep_core_widgets", 'cellpadding'=>'0', cellspacing=>'0'); $tr = $session->make_element( "tr" ); $table->appendChild( $tr ); $widget = $session->plugin( 'MePrints::Widget::Video', processor => $self->{processor} ); if (defined $widget && $user->{dataset}->has_field( "profile_video" ) && $user->{dataset}->has_field( "rights_to_video" ) && defined $user->get_value("profile_video") && defined $user->get_value("rights_to_video") && $user->get_value("rights_to_video") eq "TRUE" ) { $td = $session->make_element( "td", id=>"left_core_widget" , valign=>"top" ); $tr->appendChild( $td ); $widget->{user} = $user; $box = $widget->get_surround()->render( "widget" => $widget, "id" => "ep_profile_Video", "session" => $session ); $td->appendChild( $box ); $tr = $session->make_element( "tr" ); $table->appendChild( $tr ); $td = $session->make_element( "td", id=>"left_core_widget" , valign=>"top" ); $tr->appendChild( $td ); } else { $td = $session->make_element( "td", id=>"left_core_widget" , valign=>"top" ); $tr->appendChild( $td ); $widget = $session->plugin( 'MePrints::Widget::AlignedThumbnail', processor => $self->{processor} ); $widget->{user} = $user; $box = $widget->get_surround()->render( "widget" => $widget, "id" => "ep_profile_Thumbnail", "session" => $session ); $td->appendChild( $box ); } $widget = $session->plugin( 'MePrints::Widget::Details', processor => $self->{processor} ); $widget->{user} = $user; $box = $widget->get_surround()->render( "widget" => $widget, "id" => "ep_profile_Details", "session" => $session ); $td->appendChild( $box ); return { id => "user_details", title => $session->html_phrase( "meprints:profile:userdata" ), content => $table, }; } sub render_user_outputs { my ( $self, $session, $user ) = @_; my ( $table, $tr, $td, $widget, $box ); $table = $session->make_element( "table", class=>"ep_core_widgets", 'cellpadding'=>'0', cellspacing=>'0'); $tr = $session->make_element( "tr" ); $table->appendChild( $tr ); $td = $session->make_element( "td", id=>"left_core_widget" , valign=>"top" ); $tr->appendChild( $td ); $widget = $session->plugin( 'MePrints::Widget::AllOutputs', processor => $self->{processor} ); $widget->{user} = $user; $box = $widget->get_surround()->render( "widget" => $widget, "id" => "ep_output_Details", "session" => $session ); $td->appendChild( $box ); return { id => "user_outputs", title => $session->html_phrase( "meprints:profile:outputs" ), content => $table, }; } sub render_user_gallery { my ( $self, $session, $user ) = @_; my ( $table, $tr, $td, $widget, $box ); $table = $session->make_element( "table", class=>"ep_core_widgets", 'cellpadding'=>'0', cellspacing=>'0'); $tr = $session->make_element( "tr" ); $table->appendChild( $tr ); $td = $session->make_element( "td", id=>"left_core_widget" , valign=>"top" ); $tr->appendChild( $td ); $widget = $session->plugin( 'MePrints::Widget::UserGallery', processor => $self->{processor} ); $widget->{user} = $user; $box = $widget->get_surround()->render( "widget" => $widget, "id" => "ep_user_gallery", "session" => $session ); $td->appendChild( $box ); return { id => "user_gallery", title => $session->html_phrase( "meprints:profile:gallery" ), content => $table, }; } sub render_user_stats { my ( $self, $session, $user ) = @_; my ( $table, $tr, $td, $widget, $box ); $table = $session->make_element( "table", class=>"ep_core_widgets", 'cellpadding'=>'0', cellspacing=>'0'); $tr = $session->make_element( "tr" ); $table->appendChild( $tr ); $td = $session->make_element( "td", id=>"left_core_widget" , valign=>"top" ); $tr->appendChild( $td ); $widget = $session->plugin( 'MePrints::Widget::IRStats::DownloadGraph', processor => $self->{processor} ); $widget->{user} = $user; $box = $widget->get_surround()->render( "widget" => $widget, "id" => "ep_user_stats", "session" => $session ); $td->appendChild( $box ); return { id => "user_stats", title => $session->html_phrase( "meprints:profile:stats" ), content => $table, }; } 1;