From af40a772a9750ab8e90b91fddd97394946a3585c Mon Sep 17 00:00:00 2001 From: Martin Kamerbeek Date: Thu, 22 Apr 2010 16:20:03 +0200 Subject: [PATCH] Adding basis of nl manager. --- .../Asset/Wobject/NewsletterCollection.pm | 43 +++++++------- lib/WebGUI/Content/NewsletterManager.pm | 21 +++++++ lib/WebGUI/Newsletter/Admin.pm | 55 ++++++++++++++++++ .../root_import_personalnewsletter.wgpkg | Bin 0 -> 1544 bytes 4 files changed, 98 insertions(+), 21 deletions(-) create mode 100644 lib/WebGUI/Content/NewsletterManager.pm create mode 100644 lib/WebGUI/Newsletter/Admin.pm create mode 100644 sbin/packages/root_import_personalnewsletter.wgpkg 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 0000000000000000000000000000000000000000..484edbdb0aefb17634b34f22c376dda1724a079c GIT binary patch literal 1544 zcmV+j2KV_NiwFP!00000|Ls_9Q`76gw9Vv@kiPJ^)rC_1zY}k1y(39^sLXW<4T&wY=aK)OtDRBQB1gBFY5z+G<-E`+hb( zWEjEB+nE$tD4Tr{fkF$5;(<^27<*!A_v zqTwTmgA;SQ`h67^R{}0(spcAO%5#d{CDASP0CF zD8xAyi5T{DeDXf%ynT4OLjGTq%gRkZI2f6=gm)PgRLmlchjm@TPl)H?P@Qdo&f)xz z%!3mps_p9|BW*%B0mB}l;TZQwfN3n$qH?Wd2_7*TN2lJgNA#@w#z^2|=Hng?z~lla zcj&$q@U9pm`%|;zk#LL|5jV{5FdB3b!=V;zt?@7)G7v# z&1tjQmMAuxw{-A;hw!6AeR=21xqK4h#Dfb;tsJMBb;{R{#wZ*u^F-;vAE-y}iT0U- z`=;(TD&>Rvff11a_9wyGC+lWPWMR=wJmO-BM+9_0e0=>3Z22RJE~o(ghA0KEVBs3z zFgBsNP6vrYtYW8tB8c^g9dpWMugO=n6v5x07y45k3c(K`4ZA;>C$Yzn~E;&k|QR46K8(;Tt zFFy{i>fMuYc>L(|tFzNfqm&H5wjYhr01GgS?`wXuv?Ba^#zD1tZ3)+Gi3W>Ys(?yi zw&_Q)=q3as6?Iv_Dtl(Zs(x5O9x)OMsl%2Y3DsFarigE^zWsuPwL9`f5m@9(J@S%O zAV^$S|J6!mcfS6sl*_yN??ny0LYS`qQr_$%A)s1-G$K@PNQ=Sk>%*U01Ln%O6{X&G zb)w?t7p?(|rX1W4PzYIu?R)qh#lA4$iQEjl zm=jvEr0n~YMvlQuy=R9kD&#qgPI-jF-|q@qzyvXea313$8i(TWu8{4PSCEfcr%JWM z)_^(1#Z|}|Gkl+u3uV6)_{kaINAmFKd~OxdcWlQ{UPDQoikM=Sh)4lf+7*SDDPv)x z?lcdFL@W+{%(>I=cTTUad;Pw(*#fty(A8_R6&eliu(jl_ma+?g$y?iMrgH3i$gxk( zGRX;w8bgVo^Le|Ckt~StG=VU&0S*xHzeftkq1VGawZsI9bP>nQ5is_>auQWi8H?L< zFy-A{TSWSMW)E19#()}wcUhAi8m8E$v0B?a^^)q?h+N+_=}N$?whR2lE`CMtRIS+! z6x4lnl_zx^R&6C6N1_rB5qk_oo{a31GkpH;mWQk-&}2@B$VOs2|>~8Tpyd7 zqS-v@eK=3wj3R5=EW%STWW#T@8Mb-UncMeYc_Tf)|KejhJqH2ht7WcVDjbCr4#pT^bqDg>ivZF uzfrSjEZ6>T`sSE@R8gE!+O_s8I;Gw44uKs4I|Tk;2>c71{fr|3AOHZl+7iS7 literal 0 HcmV?d00001