Generate sperate checkbox for each mailing.
This commit is contained in:
parent
370e2c91bf
commit
87afa361f4
1 changed files with 38 additions and 25 deletions
|
|
@ -1,10 +1,12 @@
|
|||
package WebGUI::Registration::Step::MailingSubscribe;
|
||||
|
||||
use strict;
|
||||
use warnings;
|
||||
|
||||
use Tie::IxHash;
|
||||
use List::MoreUtils qw{ uniq };
|
||||
|
||||
use WebGUI::Form::Checkbox;
|
||||
|
||||
use base qw{ WebGUI::Registration::Step };
|
||||
|
||||
|
|
@ -79,7 +81,6 @@ sub getSummaryTemplateVars {
|
|||
map { WebGUI::Asset->newByDynamicClass( $session, $_ ) }
|
||||
@{ $mailings };
|
||||
|
||||
# Preferred homepage url
|
||||
push @fields, {
|
||||
field_label => 'Subscribe to mailings',
|
||||
field_value => join( ', ', map { $_->getTitle } @assets ),
|
||||
|
|
@ -103,36 +104,48 @@ sub getSummaryTemplateVars {
|
|||
sub getViewVars {
|
||||
my $self = shift;
|
||||
my $session = $self->session;
|
||||
my $form = $session->form;
|
||||
my $user = $self->registration->instance->user;
|
||||
|
||||
my $availableMailings = $self->getAvailableMailings;
|
||||
|
||||
# Figure out what mailings to check in the form
|
||||
my @subscribeMailings;
|
||||
if ( $form->checkList( 'subscribeMailings' ) ) {
|
||||
# The user just posted but made an error
|
||||
@subscribeMailings = $form->checkList( 'subscribeMailings' );
|
||||
}
|
||||
elsif ( exists $self->getConfigurationData->{'subscribeMailings'} ) {
|
||||
# The step is being changed
|
||||
@subscribeMailings = @{ $self->getConfigurationData->{'subscribeMailings'} || [] };
|
||||
}
|
||||
else {
|
||||
# The step hasn't been done yet.
|
||||
@subscribeMailings = grep { $_->isSubscribed( $user ) } @{ $availableMailings };
|
||||
}
|
||||
|
||||
# Create lookup table
|
||||
my %isSubscribed = map { $_ => 1 } @subscribeMailings;
|
||||
|
||||
my $var = $self->SUPER::getViewVars;
|
||||
|
||||
my @subscribed;
|
||||
tie my %options, 'Tie::IxHash';
|
||||
my $availableMailings = $self->getAvailableMailings;
|
||||
# Add form elems in alphabetic order.
|
||||
foreach my $mailing ( sort { $a->getTitle cmp $b->getTitle } @{ $availableMailings } ) {
|
||||
push @subscribed, $mailing->getId if $mailing->isSubscribed( $user );
|
||||
|
||||
$options{ $mailing->getId } = $mailing->getTitle;
|
||||
};
|
||||
my $id = $mailing->getId;
|
||||
|
||||
my @subscribeMailings = $self->session->form->checkList( 'subscribeMailings' );
|
||||
@subscribeMailings = @{ $self->getConfigurationData->{'subscribeMailings'} || [] } unless @subscribeMailings;
|
||||
@subscribeMailings = @subscribed unless @subscribeMailings;
|
||||
|
||||
push @{ $var->{ field_loop } }, (
|
||||
{
|
||||
field_label => 'Subscribe to mailings',
|
||||
field_formElement =>
|
||||
WebGUI::Form::checkList($self->session, {
|
||||
name => 'subscribeMailings',
|
||||
options => \%options,
|
||||
value => [ uniq @subscribeMailings ],
|
||||
vertical=> 1,
|
||||
}),
|
||||
# field_subtext => 'Hier komt de subtext voor dit veld'
|
||||
}
|
||||
);
|
||||
push @{ $var->{ field_loop } }, (
|
||||
{
|
||||
field_label => $mailing->getTitle,
|
||||
field_formElement =>
|
||||
WebGUI::Form::checkbox( $session, {
|
||||
name => 'subscribeMailings',
|
||||
value => $id,
|
||||
checked => $isSubscribed{ $id },
|
||||
label => 'Subscribe to this mailing',
|
||||
}),
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
return $var;
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue