package EPrints::Plugin::MePrints::Layout::Embed; 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} = "Profile Embeddable Widget"; $self->{user} = $params{user}; if( defined $params{widgetname} ) { $self->{widgetname} = $params{widgetname}; } return $self; } sub render { my( $self ) = @_; return $self->html_phrase( "cant_subclass" ); } # this will return a string so not technically a render method? sub render_javascript { my( $self ) = @_; my $response = ""; return $response unless( defined $self->{session} && $self->{session}->get_conf( "meprints_enabled" ) ); if( defined $self->{widgetname} ) { $response = $self->_render_embeded_widget; } else { $response = $self->_render_embeded_profile; } return $response; } sub _render_embeded_widget { my( $self ) = @_; EPrints::abort( "_render_embeded_widget called without defining a widgetname to use. I don't know which widget to render." ) if( !defined $self->{widgetname} ); my $session = $self->{session}; my $user = $self->{user}; my $wname = $self->{widgetname}; my $widgetname = "MePrints::Widget::".$wname; my $repo_name = $self->{session}->phrase( "archive_name" ); my $repo_url = $self->{session}->get_repository->get_conf( "base_url" ); my $jsFuncName = "EPRemoteJS_Render".$wname."Widget"; my $js = <is_profile_visible() ) { my $userid = $user->get_id; my $args = ""; if( $session->get_repository->get_conf( "meprints_profile_with_username" ) ) { $args .= "username=".$user->get_value( "username" ); } else { $args .= "userid=".$user->get_id; } my $users_name = EPrints::Utils::tree_to_utf8( $user->render_value( 'name' ) ); my $widget = $session->plugin( $widgetname, user => $user ); if( defined $widget ) { if( grep( /^$wname$/, @{$session->get_repository->get_conf( 'user_profile_defaults' )} ) ) { my $widget_str = "
get_id."\" class=\"ep_remote_js_meprints_embeded_widget\">".$widget->render_title->toString."
"; $widget_str .= "".$widget->render_content->toString."
"; $widget_str =~ s/\'/\\'/g; $js .= <".$self->phrase( 'widget_not_enabled', widgetname => $wname )."'+"; } } else { $js .= "'
".$self->phrase( 'widget_does_not_exist', widgetname => $wname )."
'+"; } } else { $js .= "'
".$self->phrase( 'user_profile_hidden' )."
'+"; } $js .= <Generated by $repo_name.'+ ''; return widget; } JAVASCRIPT return $js; } sub _render_embeded_profile { my( $self ) = @_; my $repo_name = $self->{session}->phrase( "archive_name" ); my $repo_url = $self->{session}->get_repository->get_conf( "base_url" ); my $js = <{user}->is_profile_visible() ) { my $args = ""; my $profile_uri = ""; if( $self->{session}->get_repository->get_conf( "meprints_profile_with_username" ) ) { my $username = $self->{user}->get_value( "username" ); $args .= "username=$username"; $profile_uri = $username; } else { my $userid = $self->{user}->get_id; $args .= "userid=$userid"; $profile_uri = $userid; } my $users_name = EPrints::Utils::tree_to_utf8($self->{user}->render_value( "name" )); my $details_widget = $self->{session}->plugin( "MePrints::Widget::Details", user=>$self->{user} ); my $details_str = ""; if( defined $details_str ) { $details_str = "
get_id."\" class=\"ep_remote_js_meprints_embeded_widget\">".$details_widget->render_title()->toString."
"; $details_str .= "".$details_widget->render_content()->toString."
"; $details_str =~ s/\'/\\'/g; } my $top_pubs_widget = $self->{session}->plugin( "MePrints::Widget::TopTen", user=>$self->{user} ); my $top_pubs_str = ""; if( defined $top_pubs_widget ) { $top_pubs_widget->{max_display} = 5; $top_pubs_str = "
get_id."\" class=\"ep_remote_js_meprints_embeded_widget\">".$top_pubs_widget->render_title()->toString."
"; $top_pubs_str .= "".$top_pubs_widget->render_content()->toString."
"; $top_pubs_str =~ s/\'/\\'/g; } my $recent_pubs_widget = $self->{session}->plugin( "MePrints::Widget::LatestEPrints", user=>$self->{user} ); my $recent_pubs_str = ""; if( defined $recent_pubs_widget ) { $recent_pubs_widget->{max_display} = 5; $recent_pubs_str = "
get_id."\" class=\"ep_remote_js_meprints_embeded_widget\">".$recent_pubs_widget->render_title()->toString."
"; $recent_pubs_str .= "".$recent_pubs_widget->render_content()->toString."
"; $recent_pubs_str =~ s/\'/\\'/g; } $js .= <'+ '$users_name'+ ''+ '
'+ ''+ '
'+ '$details_str'+ '$top_pubs_str'+ '$recent_pubs_str'+ JAVASCRIPT } else { $js .= "'
".$self->phrase( 'user_profile_hidden', username => $self->{user}->get_value( 'username' ) )."
'+"; } $js .= <Generated by $repo_name.'+ ''; return topbar; } JAVASCRIPT return $js; } sub get_layoutmgr_id { my ( $self ) = @_; return 'Embed'; } 1;