Update StoryTopic for Moose. Needs Rss Role.
This commit is contained in:
parent
b7f79a506f
commit
fe6ec3ff4c
1 changed files with 51 additions and 75 deletions
|
|
@ -13,77 +13,53 @@ $VERSION = "1.0.0";
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use Tie::IxHash;
|
use WebGUI::Definition::Asset;
|
||||||
|
extends 'WebGUI::Asset::Wobject';
|
||||||
|
#use Class::C3;
|
||||||
|
#use base qw/WebGUI::AssetAspect::RssFeed WebGUI::Asset::Wobject/;
|
||||||
|
aspect assetName => ['assetName', 'Asset_StoryTopic'];
|
||||||
|
aspect icon => 'storytopic.gif';
|
||||||
|
aspect tableName => 'StoryTopic';
|
||||||
|
property storiesPer => (
|
||||||
|
tab => 'display',
|
||||||
|
fieldType => 'integer',
|
||||||
|
label => ['stories per topic', 'Asset_StoryTopic'],
|
||||||
|
hoverHelp => ['stories per topic help', 'Asset_StoryTopic'],
|
||||||
|
default => 15,
|
||||||
|
);
|
||||||
|
property storiesShort => (
|
||||||
|
tab => 'display',
|
||||||
|
fieldType => 'integer',
|
||||||
|
label => ['stories short', 'Asset_StoryTopic'],
|
||||||
|
hoverHelp => ['stories short help', 'Asset_StoryTopic'],
|
||||||
|
default => 5,
|
||||||
|
);
|
||||||
|
property templateId => (
|
||||||
|
tab => 'display',
|
||||||
|
fieldType => 'template',
|
||||||
|
label => ['template', 'Asset_StoryTopic'],
|
||||||
|
hoverHelp => ['template help', 'Asset_StoryTopic'],
|
||||||
|
namespace => 'StoryTopic',
|
||||||
|
default => 'A16v-YjWAShXWvSACsraeg',
|
||||||
|
);
|
||||||
|
property storyTemplateId => (
|
||||||
|
tab => 'display',
|
||||||
|
fieldType => 'template',
|
||||||
|
label => ['story template', 'Asset_StoryTopic'],
|
||||||
|
hoverHelp => ['story template help', 'Asset_StoryTopic'],
|
||||||
|
namespace => 'Story',
|
||||||
|
default => 'TbDcVLbbznPi0I0rxQf2CQ',
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
use WebGUI::International;
|
use WebGUI::International;
|
||||||
use WebGUI::Utility;
|
use WebGUI::Utility;
|
||||||
use WebGUI::Asset::Story;
|
use WebGUI::Asset::Story;
|
||||||
use Class::C3;
|
|
||||||
use base qw/WebGUI::AssetAspect::RssFeed WebGUI::Asset::Wobject/;
|
|
||||||
|
|
||||||
use constant DATE_FORMAT => '%c_%D_%y';
|
use constant DATE_FORMAT => '%c_%D_%y';
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
#-------------------------------------------------------------------
|
||||||
|
|
||||||
=head2 definition ( )
|
|
||||||
|
|
||||||
defines wobject properties for New Wobject instances. You absolutely need
|
|
||||||
this method in your new Wobjects. If you choose to "autoGenerateForms", the
|
|
||||||
getEditForm method is unnecessary/redundant/useless.
|
|
||||||
|
|
||||||
=cut
|
|
||||||
|
|
||||||
sub definition {
|
|
||||||
my $class = shift;
|
|
||||||
my $session = shift;
|
|
||||||
my $definition = shift;
|
|
||||||
my $i18n = WebGUI::International->new($session, 'Asset_StoryTopic');
|
|
||||||
my %properties;
|
|
||||||
tie %properties, 'Tie::IxHash';
|
|
||||||
%properties = (
|
|
||||||
storiesPer => {
|
|
||||||
tab => 'display',
|
|
||||||
fieldType => 'integer',
|
|
||||||
label => $i18n->get('stories per topic'),
|
|
||||||
hoverHelp => $i18n->get('stories per topic help'),
|
|
||||||
defaultValue => 15,
|
|
||||||
},
|
|
||||||
storiesShort => {
|
|
||||||
tab => 'display',
|
|
||||||
fieldType => 'integer',
|
|
||||||
label => $i18n->get('stories short'),
|
|
||||||
hoverHelp => $i18n->get('stories short help'),
|
|
||||||
defaultValue => 5,
|
|
||||||
},
|
|
||||||
templateId => {
|
|
||||||
tab => 'display',
|
|
||||||
fieldType => 'template',
|
|
||||||
label => $i18n->get('template'),
|
|
||||||
hoverHelp => $i18n->get('template help'),
|
|
||||||
namespace => 'StoryTopic',
|
|
||||||
defaultValue => 'A16v-YjWAShXWvSACsraeg',
|
|
||||||
},
|
|
||||||
storyTemplateId => {
|
|
||||||
tab => 'display',
|
|
||||||
fieldType => 'template',
|
|
||||||
label => $i18n->get('story template'),
|
|
||||||
hoverHelp => $i18n->get('story template help'),
|
|
||||||
namespace => 'Story',
|
|
||||||
defaultValue => 'TbDcVLbbznPi0I0rxQf2CQ',
|
|
||||||
},
|
|
||||||
);
|
|
||||||
push(@{$definition}, {
|
|
||||||
assetName=>$i18n->get('assetName'),
|
|
||||||
icon=>'storytopic.gif',
|
|
||||||
autoGenerateForms=>1,
|
|
||||||
tableName=>'StoryTopic',
|
|
||||||
className=>'WebGUI::Asset::Wobject::StoryTopic',
|
|
||||||
properties=>\%properties,
|
|
||||||
});
|
|
||||||
return $class->SUPER::definition($session, $definition);
|
|
||||||
}
|
|
||||||
|
|
||||||
#-------------------------------------------------------------------
|
|
||||||
|
|
||||||
=head2 getRssFeedItems ( )
|
=head2 getRssFeedItems ( )
|
||||||
|
|
||||||
Returns an arrayref of hashrefs, containing information on stories
|
Returns an arrayref of hashrefs, containing information on stories
|
||||||
|
|
@ -94,12 +70,12 @@ for generating an RSS and Atom feeds.
|
||||||
sub getRssFeedItems {
|
sub getRssFeedItems {
|
||||||
my ($self) = @_;
|
my ($self) = @_;
|
||||||
my $session = $self->session;
|
my $session = $self->session;
|
||||||
my $wordList = WebGUI::Keyword::string2list($self->get('keywords'));
|
my $wordList = WebGUI::Keyword::string2list($self->keywords);
|
||||||
my $key = WebGUI::Keyword->new($session);
|
my $key = WebGUI::Keyword->new($session);
|
||||||
my $storyIds = $key->getMatchingAssets({
|
my $storyIds = $key->getMatchingAssets({
|
||||||
keywords => $wordList,
|
keywords => $wordList,
|
||||||
isa => 'WebGUI::Asset::Story',
|
isa => 'WebGUI::Asset::Story',
|
||||||
rowsPerPage => $self->get('storiesPer'),
|
rowsPerPage => $self->storiesPer,
|
||||||
});
|
});
|
||||||
my $storyData = [];
|
my $storyData = [];
|
||||||
STORY: foreach my $storyId (@{ $storyIds }) {
|
STORY: foreach my $storyId (@{ $storyIds }) {
|
||||||
|
|
@ -121,11 +97,11 @@ See WebGUI::Asset::prepareView() for details.
|
||||||
sub prepareView {
|
sub prepareView {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
$self->SUPER::prepareView();
|
$self->SUPER::prepareView();
|
||||||
my $template = WebGUI::Asset::Template->new($self->session, $self->get("templateId"));
|
my $template = WebGUI::Asset::Template->new($self->session, $self->templateId);
|
||||||
if (!$template) {
|
if (!$template) {
|
||||||
WebGUI::Error::ObjectNotFound::Template->throw(
|
WebGUI::Error::ObjectNotFound::Template->throw(
|
||||||
error => qq{Template not found},
|
error => qq{Template not found},
|
||||||
templateId => $self->get("templateId"),
|
templateId => $self->templateId,
|
||||||
assetId => $self->getId,
|
assetId => $self->getId,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
@ -166,10 +142,10 @@ sub viewTemplateVariables {
|
||||||
my $session = $self->session;
|
my $session = $self->session;
|
||||||
my $exporting = $session->scratch->get('isExporting');
|
my $exporting = $session->scratch->get('isExporting');
|
||||||
my $numberOfStories = $self->{_standAlone}
|
my $numberOfStories = $self->{_standAlone}
|
||||||
? $self->get('storiesPer')
|
? $self->storiesPer
|
||||||
: $self->get('storiesShort');
|
: $self->storiesShort;
|
||||||
my $var = $self->get();
|
my $var = $self->get();
|
||||||
my $wordList = WebGUI::Keyword::string2list($self->get('keywords'));
|
my $wordList = WebGUI::Keyword::string2list($self->keywords);
|
||||||
my $key = WebGUI::Keyword->new($session);
|
my $key = WebGUI::Keyword->new($session);
|
||||||
my $p = $key->getMatchingAssets({
|
my $p = $key->getMatchingAssets({
|
||||||
keywords => $wordList,
|
keywords => $wordList,
|
||||||
|
|
@ -194,13 +170,13 @@ sub viewTemplateVariables {
|
||||||
? $story->getUrl
|
? $story->getUrl
|
||||||
: $session->url->append($self->getUrl, 'func=viewStory;assetId='.$storyId->{assetId}) ),
|
: $session->url->append($self->getUrl, 'func=viewStory;assetId='.$storyId->{assetId}) ),
|
||||||
title => $story->getTitle,
|
title => $story->getTitle,
|
||||||
creationDate => $story->get('creationDate'),
|
creationDate => $story->creationDate,
|
||||||
};
|
};
|
||||||
if ($story->canEdit && $userUiLevel >= $uiLevels->{delete} && !$exporting) {
|
if ($story->canEdit && $userUiLevel >= $uiLevels->{delete} && !$exporting) {
|
||||||
$storyVars->{deleteIcon} = $icon->delete('func=delete', $story->get('url'), $i18n->get(43));
|
$storyVars->{deleteIcon} = $icon->delete('func=delete', $story->url, $i18n->get(43));
|
||||||
}
|
}
|
||||||
if ($story->canEdit && $userUiLevel >= $uiLevels->{edit} && !$exporting) {
|
if ($story->canEdit && $userUiLevel >= $uiLevels->{edit} && !$exporting) {
|
||||||
$storyVars->{editIcon} = $icon->edit('func=edit', $story->get('url'));
|
$storyVars->{editIcon} = $icon->edit('func=edit', $story->url);
|
||||||
}
|
}
|
||||||
push @{$var->{story_loop}}, $storyVars;
|
push @{$var->{story_loop}}, $storyVars;
|
||||||
}
|
}
|
||||||
|
|
@ -211,9 +187,9 @@ sub viewTemplateVariables {
|
||||||
##Note, this could have saved from the loop above, but this looks more clean and encapsulated to me.
|
##Note, this could have saved from the loop above, but this looks more clean and encapsulated to me.
|
||||||
my $topStory = WebGUI::Asset->new($session, $topStoryData->{assetId}, $topStoryData->{className}, $topStoryData->{revisionDate});
|
my $topStory = WebGUI::Asset->new($session, $topStoryData->{assetId}, $topStoryData->{className}, $topStoryData->{revisionDate});
|
||||||
$var->{topStoryTitle} = $topStory->getTitle;
|
$var->{topStoryTitle} = $topStory->getTitle;
|
||||||
$var->{topStorySubtitle} = $topStory->get('subtitle');
|
$var->{topStorySubtitle} = $topStory->subtitle;
|
||||||
$var->{topStoryUrl} = $session->url->append($self->getUrl, 'func=viewStory;assetId='.$topStoryData->{assetId}),
|
$var->{topStoryUrl} = $session->url->append($self->getUrl, 'func=viewStory;assetId='.$topStoryData->{assetId}),
|
||||||
$var->{topStoryCreationDate} = $topStory->get('creationDate');
|
$var->{topStoryCreationDate} = $topStory->creationDate;
|
||||||
##TODO: Photo variables
|
##TODO: Photo variables
|
||||||
my $photoData = $topStory->getPhotoData;
|
my $photoData = $topStory->getPhotoData;
|
||||||
PHOTO: foreach my $photo (@{ $photoData }) {
|
PHOTO: foreach my $photo (@{ $photoData }) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue