diff --git a/lib/WebGUI/Asset/Wobject/NewsletterCollection.pm b/lib/WebGUI/Asset/Wobject/NewsletterCollection.pm index 3680565..c5a6d32 100644 --- a/lib/WebGUI/Asset/Wobject/NewsletterCollection.pm +++ b/lib/WebGUI/Asset/Wobject/NewsletterCollection.pm @@ -4,6 +4,7 @@ use strict; use warnings; use Class::C3; +use WebGUI::User::SpecialState; use base qw{ WebGUI::AssetAspect::Mailable @@ -126,6 +127,39 @@ sub isSubscribed { # $self->{_viewTemplate} = $template; #} +#---------------------------------------------------------------------------- +sub getSubscriptionForm { + my $self = shift; + my $session = $self->session; + my $i18n = WebGUI::International->new( $session, 'Asset_NewsletterCollection' ); + + my $formHeader = + WebGUI::Form::formHeader( $session, { action => $self->getUrl } ) + . WebGUI::Form::hidden( $session, { name => 'func', value => 'processSubscription' } ) + ; + my $subscribeButton = + sprintf '', $i18n->get('subscribe'); + my $unsubscribeButton = + sprintf '', $i18n->get('unsubscribe'); + my $emailBox = WebGUI::Form::email( $session, { name => 'email', value => '' } ); + my $formFooter = WebGUI::Form::formFooter( $session ); + + my $output = ''; + if ( $session->user->isRegistered ) { + $output .= $subscribeButton if $self->canSubscribe; + $output .= $unsubscribeButton if $self->canUnsubscribe; + + return unless $output; + return $formHeader . $output . $formFooter; + } + #### TODO: anonymousAllowed + else { + return $formHeader . $emailBox . $subscribeButton . $unsubscribeButton . $formFooter; + } + + return; +} + #---------------------------------------------------------------------------- sub view { my $self = shift; @@ -136,10 +170,11 @@ sub view { my $issues = $self->getIssues; return $output . "No issues yet" unless scalar @{ $issues }; - $output .= $self->isSubscribed - ? '

Unsubscribe

' - : '

Subscribe

' - ; + $output .= $self->getSubscriptionForm; +# $output .= $self->isSubscribed +# ? '

Unsubscribe

' +# : '

Subscribe

' +# ; $output .= '

Issues: