From 3ffb43bd6815de61f46e8614857a84e256ad60dc Mon Sep 17 00:00:00 2001 From: Martin Kamerbeek Date: Wed, 15 Dec 2010 17:19:42 +0100 Subject: [PATCH] Make newsletter settable --- .../Registration/Step/MailingSubscribe.pm | 70 +++++++++++-------- 1 file changed, 40 insertions(+), 30 deletions(-) diff --git a/lib/WebGUI/Registration/Step/MailingSubscribe.pm b/lib/WebGUI/Registration/Step/MailingSubscribe.pm index deff855..19eebd5 100644 --- a/lib/WebGUI/Registration/Step/MailingSubscribe.pm +++ b/lib/WebGUI/Registration/Step/MailingSubscribe.pm @@ -15,12 +15,15 @@ sub getAvailableMailings { my $self = shift; my $session = $self->session; - my $availableMailings = WebGUI::Asset->getRoot( $session )->getLineage( ['descendants'], { - returnObjects => 1, - isa => 'WebGUI::Asset::Wobject::NewsletterCollection', - } ); + my $mailingIds = $self->get( 'includeMailings' ); - return $availableMailings; + my @mailings = + grep { defined $_ } + map { WebGUI::Asset->newByDynamicClass( $session, $_ ) } + ref $mailingIds eq 'ARRAY' ? @{ $mailingIds } : $mailingIds + ; + + return \@mailings; } #------------------------------------------------------------------- @@ -31,7 +34,7 @@ sub apply { my $subscribeTo = { map { $_ => 1 } @{ $self->getConfigurationData->{ subscribeMailings } || [] } }; - + my $availableMailings = $self->getAvailableMailings; my $sendNotification = 0; @@ -49,22 +52,32 @@ sub apply { return; } -##------------------------------------------------------------------- -#sub crud_definition { -# my $class = shift; -# my $session = shift; -# my $definition = $class->SUPER::crud_definition( $session ); -# my $i18n = WebGUI::International->new( $session, 'Registration_Step_Homepage' ); -# -# -# $definition->{ dynamic }->{ urlStorageField } = { -# fieldType => 'selectBox', -# label => 'Store homepage url in field', -# options => \%profileFields, -# }; -# -# return $definition; -#} +#------------------------------------------------------------------- +sub crud_definition { + my $class = shift; + my $session = shift; + my $definition = $class->SUPER::crud_definition( $session ); + my $i18n = WebGUI::International->new( $session, 'Registration_Step_Homepage' ); + + tie my %mailings, 'Tie::IxHash', ( + map { $_->getId => $_->getTitle } + @{ + WebGUI::Asset->getRoot( $session )->getLineage( ['descendants'], { + returnObjects => 1, + isa => 'WebGUI::Asset::Wobject::NewsletterCollection', + } ) + } + ); + + $definition->{ dynamic }->{ includeMailings } = { + fieldType => 'checkList', + label => 'Store homepage url in field', + options => \%mailings, + vertical => 1, + }; + + return $definition; +} #------------------------------------------------------------------- sub getSummaryTemplateVars { @@ -77,7 +90,7 @@ sub getSummaryTemplateVars { # Fetch preferred homepage url my $mailings = $self->getConfigurationData->{ subscribeMailings }; - my @assets = + my @assets = grep { defined $_ } map { WebGUI::Asset->newByDynamicClass( $session, $_ ) } @{ $mailings }; @@ -89,12 +102,12 @@ sub getSummaryTemplateVars { # Setup tmpl_var my $var = { - field_loop => \@fields, + field_loop => \@fields, category_label => $self->get('title'), category_edit_url => $self->changeStepDataUrl, }; - return ( $var ); + return ( $var ); } #------------------------------------------------------------------- @@ -119,7 +132,7 @@ sub getViewVars { } else { # The step hasn't been done yet. - @subscribeMailings = grep { $_->isSubscribed( $user ) } @{ $availableMailings }; + @subscribeMailings = map { $_->getId } grep { $_->isSubscribed( $user ) } @{ $availableMailings }; } # Create lookup table @@ -171,10 +184,7 @@ sub updateFromFormPost { my $self = shift; my $session = $self->session; - $self->SUPER::updateFromFormPost; - -# $self->update( { -# } ); + return $self->SUPER::updateFromFormPost; } #-------------------------------------------------------------------