| Newsletter documentation | Contained in the Newsletter distribution. |
Newsletter::Html - generate html!
Version 0.02
The Html module for Newsletter
Perhaps a little code snippet.
use Newsletter::Html;
my $foo = Newsletter::Html->new( $newsletterObj, $uploadPath );
...
A list of functions that can be exported. You can delete this section if you don't export anything, such as for a purely object-oriented module.
Dominik Hochreiter, <dominik at soft.uni-linz.ac.at>
Please report any bugs or feature requests to
bug-newsletter-html at rt.cpan.org, or through the web interface at
http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Newsletter.
I will be notified, and then you'll automatically be notified of progress on
your bug as I make changes.
You can find documentation for this module with the perldoc command.
perldoc Newsletter
You can also look for information at:
Copyright 2006 Dominik Hochreiter, all rights reserved.
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Newsletter documentation | Contained in the Newsletter distribution. |
package Newsletter::Html; use warnings; use strict; use Newsletter::Html::Templ; use Newsletter; use base ("Newsletter::Html::Templ", "Newsletter::Html::Upload"); use MIME::Base64; use File::Path; use vars qw($VERSION); our $VERSION = '0.02'; sub new { my $obj = shift; my $newsletterObj = shift; my $uploadPath = shift; if(!$newsletterObj) { die "Newsletter Param is empty\n"; } my $self = {}; #$self->{'cgi'} = new CGI; $self->{'nl'} = $$newsletterObj; $self->{'out'} = ''; $self->{'persistent'} = {}; $self->{'tmp'} = {}; $self->{'info'} = undef; $self->{'uploadPath'} = '/tmp'; if( $uploadPath ) { $self->{'uploadPath'} = $uploadPath; if(! -d $self->{'uploadPath'} ) { warn "Upload path [$uploadPath] does not exist! try to create\n"; mkpath( $self->{'uploadPath'} ); } } bless($self,$obj); $self->init; return($self); } sub header { my ($self, %param) = @_; my @cookies = $self->_persistent(); if( exists $self->{'persistent'}->{'pSection'} ) { if( $self->{'persistent'}->{'pSection'} eq "home" && $self->{'cgi'}->param() == 1 ) { @cookies = $self->_persistentClean(); } } $self->_out( $self->{'cgi'}->header( -cookie=>\@cookies, -expires=>'now', ) ); $self->_out( $self->{'cgi'}->start_html( -title=>'Newsletter Simple', -author=>'hochreiter@soft.uni-linz.ac.at', -meta=>{'keywords' => 'Newsletter Mail Sender Simple', 'copyright'=> 'Dominik Hochreiter published under GNU'}, %param, ) ); if(! exists $param{'-style'} ) { require Newsletter::Html::CSS; $self->_out( $Newsletter::Html::CSS::CSS ); } $self->_out( $self->{'cgi'}->p( {-align=>'left'}, $self->{'cgi'}->a( {-href => "?pSection=home"}, "Home" ) ) ); $self->_out( $self->{'cgi'}->hr ); return $self->_outString; } sub body { my ($self) = @_; if( !exists $self->{'persistent'}->{'pSection'} ) { $self->startpage; } elsif( $self->{'persistent'}->{'pSection'} eq "home" ) { $self->startpage; } elsif( $self->{'persistent'}->{"pSection"} eq "openList" ) { if( $self->{'nl'}->list( list => { name => $self->{'persistent'}->{"pOpenList"} } ) ) { $self->openList; } else { $self->_out( $self->{'nl'}->error(1) ); } } elsif( $self->{'persistent'}->{"pSection"} eq "addToList" ) { foreach my $key ( $self->{'cgi'}->param ) { if( $key =~ /newMember\d\d\d\d/ ) { next if( !$self->{'cgi'}->param($key) ); if( $self->{'nl'}->list( member => { listname => $self->{'persistent'}->{"pOpenList"}, mail => $self->{'cgi'}->param($key), rereadOff => 1 } ) ) { $self->_info( $self->{'cgi'}->param($key)." added" ); if( $self->{'nl'}->error ) { $self->_info( $self->{'nl'}->error(1) ); } } else { $self->_info( $self->{'nl'}->error(1) ); } } } if( $self->{'nl'}->list( list => { name => $self->{'persistent'}->{"pOpenList"} } ) ) { $self->openList; } else { $self->_out( $self->{'nl'}->error(1) ); } } #ONLY VCM [start] elsif( $self->{'persistent'}->{"pSection"} eq "addToListRemote" ) { foreach my $key ( $self->{'cgi'}->param ) { if( $key =~ /newMember\d\d\d\d/ ) { next if( !$self->{'cgi'}->param($key) ); if( $self->{'nl'}->list( member => { listname => $self->{'persistent'}->{"pOpenList"}, mail => $self->{'cgi'}->param($key), rereadOff => 1 } ) ) { #$self->_info( $self->{'cgi'}->param($key)." added" ); #if( $self->{'nl'}->error ) { # $self->_info( $self->{'nl'}->error(1) ); #} } else { #$self->_info( $self->{'nl'}->error(1) ); } } } #if( $self->{'nl'}->list( list => { name => $self->{'persistent'}->{"pOpenList"} } ) ) { # $self->openList; #} else { # $self->_out( $self->{'nl'}->error(1) ); #} } #ONLY VCM [end] elsif( $self->{'persistent'}->{"pSection"} eq "delFromList" ) { foreach my $member ( $self->{'cgi'}->param("openListMembers") ) { if( $self->{'nl'}->list( remove => { listname => $self->{'persistent'}->{"pOpenList"}, mail => $member } ) ) { $self->_info( "$member removed" ); if( $self->{'nl'}->error ) { $self->_info( $self->{'nl'}->error(1) ); } } else { $self->_info( $self->{'nl'}->error(1) ); } } if( $self->{'nl'}->list( list => { name => $self->{'persistent'}->{"pOpenList"} } ) ) { $self->openList; } else { $self->_out( $self->{'nl'}->error(1) ); } } elsif( $self->{'persistent'}->{"pSection"} eq "deleteList" ) { $self->{'nl'}->list( remove => { # remove whole list listname => $self->{'cgi'}->param('listName') } ); $self->{'nl'}->list( reread => 1 ); $self->startpage; $self->_out( $self->{'nl'}->error(1) ); } elsif( $self->{'persistent'}->{"pSection"} eq "editTmpl" ) { foreach my $is ('tmplFilesHeader', 'tmplFilesFooter') { foreach my $tmpl ( $self->{'cgi'}->param($is) ) { if( $is eq 'tmplFilesHeader') { $self->{'nl'}->template( use => { filename => $tmpl, is => +HEADER } ); } if( $is eq 'tmplFilesFooter') { $self->{'nl'}->template( use => { filename => $tmpl, is => +FOOTER } ); } if( $self->{'cgi'}->param("tmplFilesAction") eq "open" ) { if( $self->{'nl'}->{'senderHeader'}->{ +HTML_TMPL } ) { $self->openTmpl($self->{'nl'}->{'senderHeader'}->{ +HTML_TMPL }, +HTML_TMPL); } elsif( $self->{'nl'}->{'senderHeader'}->{ +TEXT_TMPL } ) { $self->openTmpl($self->{'nl'}->{'senderHeader'}->{ +TEXT_TMPL }, +TEXT_TMPL ); } elsif( $self->{'nl'}->{'senderFooter'}->{ +HTML_TMPL } ) { $self->openTmpl($self->{'nl'}->{'senderFooter'}->{ +HTML_TMPL }, +HTML_TMPL); } elsif( $self->{'nl'}->{'senderFooter'}->{ +TEXT_TMPL } ) { $self->openTmpl($self->{'nl'}->{'senderFooter'}->{ +TEXT_TMPL }, +TEXT_TMPL ); } } elsif( $self->{'cgi'}->param("tmplFilesAction") eq "delete" ) { if( $is eq 'tmplFilesHeader') { $self->{'nl'}->template( use => { is => 'header', filename => $tmpl }, remove => 1 ); } elsif( $is eq 'tmplFilesFooter') { $self->{'nl'}->template( use => { is => 'footer', filename => $tmpl }, remove => 1 ); } $self->{'nl'}->template( reread => 1 ); } if( $self->{'nl'}->error ) { $self->_info( $self->{'nl'}->error(1) ); } } } $self->editTmpl; } elsif( $self->{'persistent'}->{"pSection"} eq "tmplFileUpload") { $self->fileuploadTmpl; } elsif( $self->{'persistent'}->{"pSection"} eq "finishTmplFileUpload" ) { # Upload embedded my @embedded = (); for( my $a = 0; $a < 10; $a++ ) { if( $self->{'cgi'}->param("embFileUpload$a") ) { my $filename = $self->fileUpload("embFileUpload$a"); push(@embedded, $self->{'uploadPath'}.'/'.$filename); } } if( $self->{'cgi'}->param("tmplSchema") ) { $self->{'nl'}->template( file => { path => $self->{'uploadPath'}.'/'.$self->{'cgi'}->param("tmplFile"), type => $self->{'persistent'}->{"pTmplFileUploadType"}, is => $self->{'persistent'}->{"pTmplFileUploadIs"}, schema => $self->{'cgi'}->param("tmplSchema"), embedded => \@embedded } ); } else { $self->{'nl'}->template( file => { path => $self->{'uploadPath'}.'/'.$self->{'cgi'}->param("tmplFile"), type => $self->{'persistent'}->{"pTmplFileUploadType"}, is => $self->{'persistent'}->{"pTmplFileUploadIs"}, embedded => \@embedded } ); } $self->{'nl'}->template( reread => 1 ); $self->editTmpl; $self->_out( $self->{'nl'}->error ); } elsif( $self->{'persistent'}->{"pSection"} eq "sendList" ) { $self->sendList; } elsif( $self->{'persistent'}->{"pSection"} eq "sendListPreview" ) { $self->sendListPreview; } elsif( $self->{'persistent'}->{"pSection"} eq "sendListEdit" ) { $self->sendListPreview; } elsif( $self->{'persistent'}->{"pSection"} eq "sendListEmail" ) { $self->sendListMail; return ""; } else { $self->startpage; } return $self->_outString; } sub footer { my ($self) = @_; if( $self->{'info'} ) { $self->_out( "<font color=\"red\"><pre>".$self->{'info'}."</pre></font>" ); } $self->_out( $self->{'cgi'}->hr ); $self->_out( $self->{'cgi'}->p( {-align=>'right'}, "HTML Newsletter Simple Version $Newsletter::VERSION") ); $self->_out( $self->{'cgi'}->end_html ); return $self->_outString; } sub _out ($$) { my ($self, $string) = @_; if( $string ) { $self->{'out'} .= $string; } } sub _outString { my ($self) = @_; my $out = $self->{'out'}; $self->{'out'} = ''; return $out; } sub _persistent { my ($self) = @_; my @coockies = (); # read in foreach my $key ( $self->{'cgi'}->cookie() ) { if( $self->{'cgi'}->cookie($key) ) { if( $key =~ /^pl/ ) { foreach my $file ( $self->{'cgi'}->cookie($key) ) { push( @{ $self->{'persistent'}->{$key} }, $file ); } } else { $self->{'persistent'}->{$key} = decode_base64( $self->{'cgi'}->cookie($key) ); } } elsif( $key =~ /^p/ ) { if( $key =~ /^pl/ ) { $self->{'persistent'}->{$key} = []; } else { $self->{'persistent'}->{$key} = ''; } } } foreach my $key ( $self->{'cgi'}->param ) { if( $key =~ /^p/) { if( $key =~ /^pl/ ) { push(@coockies, $self->{'cgi'}->cookie( -name => $key, -value => [ $self->{'cgi'}->param($key) ] ) ); if( exists $self->{'persistent'}->{$key} ) { $self->{'persistent'}->{$key} = []; } foreach my $file ( $self->{'cgi'}->param($key) ) { push( @{ $self->{'persistent'}->{$key} }, $file ); } } elsif( $key =~ /^p/ ) { push(@coockies, $self->{'cgi'}->cookie( -name => $key, -value => encode_base64( $self->{'cgi'}->param($key) ) ) ); $self->{'persistent'}->{$key} = $self->{'cgi'}->param($key); } } } return @coockies; } sub _persistentClean { my ($self) = @_; my @coockies = (); # read in foreach my $key ( $self->{'cgi'}->cookie() ) { if( $key =~ /^p/) { push(@coockies, $self->{'cgi'}->cookie( -name => $key, -value => '' ) ); if( exists $self->{'persistent'}->{$key} ) { delete $self->{'persistent'}->{$key}; } } } return @coockies; } sub _info { my ($self,$msg) = @_; $self->{'info'} .= "$msg\n"; }
#our $VERSION = '0.01';
1; # End of Newsletter::Html