diff --git a/lib/WebGUI/Asset/Wobject/NewsletterCollection.pm b/lib/WebGUI/Asset/Wobject/NewsletterCollection.pm index af0b398..3010e14 100644 --- a/lib/WebGUI/Asset/Wobject/NewsletterCollection.pm +++ b/lib/WebGUI/Asset/Wobject/NewsletterCollection.pm @@ -24,25 +24,25 @@ sub canUnsubscribe { return !$self->session->user->isVisitor && $self->isSubscribed; } -#---------------------------------------------------------------------------- -sub configureMailingForm { - my $self = shift; - my $f = $self->next::method; - - tie my %issues, 'Tie::IxHash', ( - '' => 'Choose issue...', - map { $_->getId => $_->getTitle } - @{ $self->getIssues } - ); - - $f->selectBox( - name => $issue, - label => 'Issue', - options => $self->getIssues - ); - - return $f; -} +##---------------------------------------------------------------------------- +#sub configureMailingForm { +# my $self = shift; +# my $f = $self->next::method; +# +# tie my %issues, 'Tie::IxHash', ( +# '' => 'Choose issue...', +# map { $_->getId => $_->getTitle } +# @{ $self->getIssues } +# ); +# +# $f->selectBox( +# name => 'issue', +# label => 'Issue', +# options => $self->getIssues +# ); +# +# return $f; +#} #---------------------------------------------------------------------------- sub definition { @@ -80,8 +80,9 @@ sub getIssues { #---------------------------------------------------------------------------- sub getRecipients { - my $self = shift; - + my $self = shift; + my $db = $self->session->db; + my @subscribers = $db->buildArray( 'select userId from NewsletterCollection_subscriptions where assetId=?', [ $self->getId, ] ); diff --git a/lib/WebGUI/Content/NewsletterManager.pm b/lib/WebGUI/Content/NewsletterManager.pm new file mode 100644 index 0000000..4cb8917 --- /dev/null +++ b/lib/WebGUI/Content/NewsletterManager.pm @@ -0,0 +1,21 @@ +package WebGUI::Content::NewsletterManager; + +use strict; +use warnings; + +sub handler { + my $session = shift; + my $form = $session->form; + + return unless $form->get('newsletter') eq 'manage'; + + my $func = 'www_' . ( $form->get('func') || 'view' ); + + my $nl = WebGUI::Newsletter::Admin->new( $session ); + return unless $nl->can( $func ); + + return $nl->$func; +} + +1; + diff --git a/lib/WebGUI/Newsletter/Admin.pm b/lib/WebGUI/Newsletter/Admin.pm new file mode 100644 index 0000000..6640aed --- /dev/null +++ b/lib/WebGUI/Newsletter/Admin.pm @@ -0,0 +1,55 @@ +package WebGUI::Newsletter::Admin; + +use strict; +use warnings; + +use Carp 'confess'; + + +sub getMailables { + my $self = shift; + + return WebGUI::Asset->getRoot( $self->session )->getLineage( ['descendants'], { + returnObjects => 1, + whereClause => 'assetData.assetId in (select distinct assetId from assetAspectMailable)', + } ); +} + +sub new { + my $class = shift; + my $session = shift || confess 'No session passed'; + + bless { _session => $session }, $class; +} + +sub session { + return (shift)->{ _session }; +} + +sub www_view { + my $self = shift; + + my $letters = $self->getMailables; + + my @newsletterLoop; + foreach my $letter ( @{ $letters } ) { + my @issues = + map { $_->get } + @{ $letter->getIssues }; + + + push @newsletterLoop, { + %{ $letter->get }, + issue_loop => \@issues, + issueCount => scalar( @issues ), + }; + } + + my $var = { newsletter_loop => \@newsletterLoop }; + + my $template = WebGUI::Asset::Template->new( $self->session, 'FTfNhWI8KJOwLzFUl5rYeQ' ); + return $template->process( $var ); +} + +1; + diff --git a/sbin/packages/root_import_personalnewsletter.wgpkg b/sbin/packages/root_import_personalnewsletter.wgpkg new file mode 100644 index 0000000..484edbd Binary files /dev/null and b/sbin/packages/root_import_personalnewsletter.wgpkg differ