Make NewslettCollaboration templatable, and add concept of recent issues.
This commit is contained in:
parent
e82b8fe088
commit
218ebbbad6
4 changed files with 147 additions and 48 deletions
|
|
@ -21,6 +21,19 @@ sub definition {
|
|||
my $i18n = WebGUI::International->new( $session, 'Asset_NewsletterCollection' );
|
||||
|
||||
tie my %properties, 'Tie::IxHash', (
|
||||
viewTemplateId => {
|
||||
fieldType => 'template',
|
||||
label => 'Template',
|
||||
tab => 'display',
|
||||
defaultValue => 'aYVYFpofaYvmRYoHwl3x4w',
|
||||
namespace => 'NewsletterCollection',
|
||||
},
|
||||
recentIssueCount => {
|
||||
fieldType => 'integer',
|
||||
label => 'Number of recent issues',
|
||||
tab => 'display',
|
||||
defaultValue => 1,
|
||||
},
|
||||
);
|
||||
|
||||
push @{ $definition }, {
|
||||
|
|
@ -29,7 +42,7 @@ sub definition {
|
|||
autoGenerateForms => 1,
|
||||
tableName => 'NewsletterCollection',
|
||||
className => 'WebGUI::Asset::Wobject::NewsletterCollection',
|
||||
properties => \%properties
|
||||
properties => \%properties,
|
||||
};
|
||||
|
||||
return $class->SUPER::definition( $session, $definition );
|
||||
|
|
@ -70,48 +83,82 @@ sub generateEmailContent {
|
|||
return $issue->view;
|
||||
}
|
||||
|
||||
##----------------------------------------------------------------------------
|
||||
#sub prepareView {
|
||||
# my $self = shift;
|
||||
# $self->SUPER::prepareView();
|
||||
# my $template = WebGUI::Asset::Template->new( $self->session, $self->get("templateIdView") );
|
||||
# $template->prepare($self->getMetaDataAsTemplateVariables);
|
||||
# $self->{_viewTemplate} = $template;
|
||||
#}
|
||||
#----------------------------------------------------------------------------
|
||||
sub getAssetContent {
|
||||
my $self = shift;
|
||||
my $asset = shift;
|
||||
my $var = $self->session->var;
|
||||
|
||||
my $adminOn = $var->isAdminOn;
|
||||
$var->switchAdminOff;
|
||||
|
||||
$asset->prepareView;
|
||||
my $content = $asset->view;
|
||||
|
||||
$var->switchAdminOn if $adminOn;
|
||||
|
||||
return $content;
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
sub prepareView {
|
||||
my $self = shift;
|
||||
my $session = $self->session;
|
||||
|
||||
$self->SUPER::prepareView;
|
||||
|
||||
my $template = WebGUI::Asset::Template->new( $session, $self->get('viewTemplateId') );
|
||||
$template->prepare( $self->getMetaDataAsTemplateVariables );
|
||||
|
||||
$self->{ _viewTemplate } = $template;
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
sub getViewVars {
|
||||
my $self = shift;
|
||||
my $session = $self->session;
|
||||
|
||||
my $var = $self->get;
|
||||
|
||||
my $issueCount = 0;
|
||||
my ( @recentIssues, @olderIssues );
|
||||
my $issues = $self->getIssues;
|
||||
foreach my $issue ( @{ $issues } ) {
|
||||
my $issueVar = $issue->get;
|
||||
$issueVar->{ url } = $issue->getUrl;
|
||||
|
||||
$issueCount++;
|
||||
|
||||
if ( $issueCount <= $self->get('recentIssueCount') ) {
|
||||
$issueVar->{ content } = $self->getAssetContent( $issue );
|
||||
|
||||
push @recentIssues, $issueVar;
|
||||
}
|
||||
else {
|
||||
push @olderIssues, $issueVar;
|
||||
}
|
||||
}
|
||||
|
||||
$var->{ recent_issue_loop } = \@recentIssues;
|
||||
$var->{ recent_issue_count } = scalar @recentIssues;
|
||||
$var->{ older_issue_loop } = \@olderIssues;
|
||||
$var->{ older_issue_count } = scalar @olderIssues;
|
||||
$var->{ issue_count } = $issueCount;
|
||||
|
||||
$self->appendSubscriptionFormVars( $var );
|
||||
|
||||
return $var;
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
sub view {
|
||||
my $self = shift;
|
||||
my $session = $self->session;
|
||||
|
||||
my $output = $self->getToolbar if $session->var->isAdminOn;
|
||||
my $var = $self->getViewVars;
|
||||
|
||||
my $issues = $self->getIssues;
|
||||
return $output . "No issues yet" unless scalar @{ $issues };
|
||||
|
||||
$output .= $self->getSubscriptionForm;
|
||||
# $output .= $self->isSubscribed
|
||||
# ? '<p><a href="' . $self->getUrl( 'func=unsubscribe' ) . '">Unsubscribe</a></p>'
|
||||
# : '<p><a href="' . $self->getUrl( 'func=subscribe' ) . '">Subscribe</a></p>'
|
||||
# ;
|
||||
|
||||
$output .= '<p>Issues: <ul>';
|
||||
$output .=
|
||||
join '',
|
||||
map {
|
||||
'<li>'
|
||||
.'<a href="' . $_->getUrl . '">' . $_->get('title') . '</a>'
|
||||
.' :: '
|
||||
.' <a href="' .$self->getUrl('func=previewEmail;issueId='.$_->getId.';userId=3').'">preview</a>'
|
||||
.'</li>'
|
||||
}
|
||||
@{ $issues };
|
||||
$output .= '</ul></p>';
|
||||
|
||||
$issues->[0]->prepareView;
|
||||
$output .= $issues->[0]->view;
|
||||
|
||||
return $output;
|
||||
return $self->processTemplate( $var, undef, $self->{_viewTemplate} );
|
||||
}
|
||||
|
||||
1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue