From 8fdeca68b5fb7d90669d45fc1b69d217c4ced297 Mon Sep 17 00:00:00 2001 From: Martin Kamerbeek Date: Fri, 7 May 2010 14:33:33 +0200 Subject: [PATCH] Adding basic anonymous subscription. --- .../Asset/Wobject/NewsletterCollection.pm | 87 ++++++++++++++++++- lib/WebGUI/User/SpecialState.pm | 35 ++++++++ .../English/Asset_NewsletterCollection.pm | 7 +- 3 files changed, 124 insertions(+), 5 deletions(-) create mode 100644 lib/WebGUI/User/SpecialState.pm 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: