StoryArchive optional sorting by title.
Fwiw, this code was written a while ago but seems to have gotten misplaced.
This commit is contained in:
parent
031309a1aa
commit
d17d096380
4 changed files with 127 additions and 8 deletions
|
|
@ -32,10 +32,10 @@ my $session = start(); # this line required
|
||||||
|
|
||||||
# upgrade functions go here
|
# upgrade functions go here
|
||||||
addSpamStopWordsToConfig($session);
|
addSpamStopWordsToConfig($session);
|
||||||
|
alterStoryArchiveTable($session);
|
||||||
|
|
||||||
finish($session); # this line required
|
finish($session); # this line required
|
||||||
|
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
# Describe what our function does
|
# Describe what our function does
|
||||||
#sub exampleFunction {
|
#sub exampleFunction {
|
||||||
|
|
@ -56,6 +56,25 @@ sub addSpamStopWordsToConfig {
|
||||||
print "DONE!\n" unless $quiet;
|
print "DONE!\n" unless $quiet;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#----------------------------------------------------------------------------
|
||||||
|
# Describe what our function does
|
||||||
|
sub alterStoryArchiveTable {
|
||||||
|
my $session = shift;
|
||||||
|
print "\tAdd story sort order column to the StoryAcrhive table... " unless $quiet;
|
||||||
|
|
||||||
|
my $sth = $session->db->read('DESCRIBE `StoryArchive`');
|
||||||
|
while (my ($col) = $sth->array) {
|
||||||
|
if ($col eq 'storySortOrder') {
|
||||||
|
print "Skipped.\n" unless $quiet;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$session->db->write("ALTER TABLE StoryArchive ADD COLUMN storySortOrder CHAR(22)");
|
||||||
|
print "DONE!\n" unless $quiet;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# -------------- DO NOT EDIT BELOW THIS LINE --------------------------------
|
# -------------- DO NOT EDIT BELOW THIS LINE --------------------------------
|
||||||
|
|
||||||
#----------------------------------------------------------------------------
|
#----------------------------------------------------------------------------
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,7 @@ use WebGUI::Paginator;
|
||||||
use WebGUI::Keyword;
|
use WebGUI::Keyword;
|
||||||
use WebGUI::Search;
|
use WebGUI::Search;
|
||||||
use Class::C3;
|
use Class::C3;
|
||||||
use base qw/WebGUI::AssetAspect::RssFeed WebGUI::Asset::Wobject/;
|
use base qw/WebGUI::AssetAspect::RssFeed WebGUI::Asset::Wobject WebGUI::AssetAspect::Installable/;
|
||||||
use File::Path;
|
use File::Path;
|
||||||
|
|
||||||
use constant DATE_FORMAT => '%c_%D_%y';
|
use constant DATE_FORMAT => '%c_%D_%y';
|
||||||
|
|
@ -164,6 +164,17 @@ sub definition {
|
||||||
label => $i18n->get('approval workflow'),
|
label => $i18n->get('approval workflow'),
|
||||||
hoverHelp => $i18n->get('approval workflow help'),
|
hoverHelp => $i18n->get('approval workflow help'),
|
||||||
},
|
},
|
||||||
|
storySortOrder => {
|
||||||
|
fieldType => "selectBox",
|
||||||
|
tab => 'display',
|
||||||
|
defaultValue => 'Chronologically',
|
||||||
|
options => {
|
||||||
|
Alphabetically => $i18n->get('alphabetically'),
|
||||||
|
Chronologically => $i18n->get('chronologically')
|
||||||
|
},
|
||||||
|
label => $i18n->get('sortAlphabeticallyChronologically'),
|
||||||
|
hoverHelp => $i18n->get('sortAlphabeticallyChronologically description'),
|
||||||
|
},
|
||||||
);
|
);
|
||||||
push(@{$definition}, {
|
push(@{$definition}, {
|
||||||
assetName=>$i18n->get('assetName'),
|
assetName=>$i18n->get('assetName'),
|
||||||
|
|
@ -537,11 +548,12 @@ sub viewTemplateVariables {
|
||||||
$p = $search->getPaginatorResultSet($self->getUrl, $self->get('storiesPerPage'));
|
$p = $search->getPaginatorResultSet($self->getUrl, $self->get('storiesPerPage'));
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$var->{mode} = 'view';
|
|
||||||
##Only return assetIds, we'll build data for the things that are actually displayed.
|
##Only return assetIds, we'll build data for the things that are actually displayed.
|
||||||
|
$var->{mode} = 'view';
|
||||||
|
my $orderBy = $self->get('storySortOrder') eq 'Alphabetically' ? 'menuTitle, lineage' : 'creationDate desc, lineage';
|
||||||
my $storySql = $self->getLineageSql(['descendants'],{
|
my $storySql = $self->getLineageSql(['descendants'],{
|
||||||
excludeClasses => ['WebGUI::Asset::Wobject::Folder'],
|
excludeClasses => ['WebGUI::Asset::Wobject::Folder'],
|
||||||
orderByClause => 'creationDate desc, lineage',
|
orderByClause => $orderBy,
|
||||||
});
|
});
|
||||||
my $storiesPerPage = $self->get('storiesPerPage');
|
my $storiesPerPage = $self->get('storiesPerPage');
|
||||||
if ($exporting) {
|
if ($exporting) {
|
||||||
|
|
@ -551,6 +563,7 @@ sub viewTemplateVariables {
|
||||||
$p = WebGUI::Paginator->new($session, $self->getUrl, $storiesPerPage);
|
$p = WebGUI::Paginator->new($session, $self->getUrl, $storiesPerPage);
|
||||||
$p->setDataByQuery($storySql);
|
$p->setDataByQuery($storySql);
|
||||||
}
|
}
|
||||||
|
|
||||||
my $storyIds = $p->getPageData();
|
my $storyIds = $p->getPageData();
|
||||||
if (! $exporting ) {
|
if (! $exporting ) {
|
||||||
##Pagination variables aren't useful in export mode
|
##Pagination variables aren't useful in export mode
|
||||||
|
|
|
||||||
|
|
@ -333,6 +333,30 @@ our $I18N = {
|
||||||
lastUpdated => 0,
|
lastUpdated => 0,
|
||||||
},
|
},
|
||||||
|
|
||||||
|
'sortAlphabeticallyChronologically' => {
|
||||||
|
message => q|Sort Order|,
|
||||||
|
context => q|Label in the edit screen|,
|
||||||
|
lastUpdated => 1276631190,
|
||||||
|
},
|
||||||
|
|
||||||
|
'sortAlphabeticallyChronologically description' => {
|
||||||
|
message => q|Set messages to appear in order of publish date or alphabetically by title|,
|
||||||
|
context => q|Tooltip in the edit screen|,
|
||||||
|
lastUpdated => 1276631190,
|
||||||
|
},
|
||||||
|
|
||||||
|
'alphabetically' => {
|
||||||
|
message => q|Alphabetically|,
|
||||||
|
context => q|Select option in the edit screen|,
|
||||||
|
lastUpdated => 1276631190,
|
||||||
|
},
|
||||||
|
|
||||||
|
'chronologically' => {
|
||||||
|
message => q|Chronologically|,
|
||||||
|
context => q|Select option in the edit screen|,
|
||||||
|
lastUpdated => 1276631190,
|
||||||
|
},
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ $canPostMaker->prepare({
|
||||||
fail => [1, $reader ],
|
fail => [1, $reader ],
|
||||||
});
|
});
|
||||||
|
|
||||||
my $tests = 51
|
my $tests = 52
|
||||||
+ $canPostMaker->plan
|
+ $canPostMaker->plan
|
||||||
;
|
;
|
||||||
plan tests => 1
|
plan tests => 1
|
||||||
|
|
@ -679,7 +679,70 @@ $archive->update({ url => '/home/mystories.arch' });
|
||||||
is($archive->getKeywordStaticURL('bar'), '/home/mystories/keyword_bar.html', '... correct URL with file extension');
|
is($archive->getKeywordStaticURL('bar'), '/home/mystories/keyword_bar.html', '... correct URL with file extension');
|
||||||
|
|
||||||
$archive->update({ url => '/home/mystories' });
|
$archive->update({ url => '/home/mystories' });
|
||||||
}
|
|
||||||
|
################################################################
|
||||||
|
#
|
||||||
|
# sortOrder
|
||||||
|
#
|
||||||
|
################################################################
|
||||||
|
|
||||||
|
my $aaa_child = $archive->addChild({className => 'WebGUI::Asset::Story', title => 'Aaaa'}, @skipAutoCommit);
|
||||||
|
my $zzz_child = $archive->addChild({className => 'WebGUI::Asset::Story', title => 'Zzzz'}, @skipAutoCommit);
|
||||||
|
WebGUI::Test->addToCleanup($aaa_child);
|
||||||
|
WebGUI::Test->addToCleanup($zzz_child);
|
||||||
|
|
||||||
|
$archive->update({storiesPerPage => 25, storySortOrder => 'Alphabetically' });
|
||||||
|
|
||||||
|
$tag1 = WebGUI::VersionTag->getWorking($session);
|
||||||
|
$tag1->commit;
|
||||||
|
WebGUI::Test->addToCleanup($tag1);
|
||||||
|
|
||||||
|
$templateVars = $archive->viewTemplateVariables();
|
||||||
|
|
||||||
|
cmp_deeply (
|
||||||
|
$templateVars->{date_loop},
|
||||||
|
[
|
||||||
|
{
|
||||||
|
'story_loop' => [
|
||||||
|
{
|
||||||
|
'creationDate' => ignore(),
|
||||||
|
'deleteIcon' => ignore(),
|
||||||
|
'editIcon' => ignore(),
|
||||||
|
'url' => re('aaaa'),
|
||||||
|
'title' => 'Aaaa'
|
||||||
|
},
|
||||||
|
ignore(),
|
||||||
|
ignore(),
|
||||||
|
ignore(),
|
||||||
|
ignore(),
|
||||||
|
],
|
||||||
|
'epochDate' => ignore(),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'story_loop' => ignore(),
|
||||||
|
'epochDate' => $wgBdayMorn,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'story_loop' => ignore(),
|
||||||
|
'epochDate' => $yesterdayMorn,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
'story_loop' => [
|
||||||
|
{
|
||||||
|
'creationDate' => ignore(),
|
||||||
|
'deleteIcon' => ignore(),
|
||||||
|
'editIcon' => ignore(),
|
||||||
|
'url' => re('zzzz'),
|
||||||
|
'title' => 'Zzzz'
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'epochDate' => ignore(),
|
||||||
|
},
|
||||||
|
],
|
||||||
|
'viewTemplateVariables: sorted by story title'
|
||||||
|
);
|
||||||
|
|
||||||
|
} ## end SKIP block
|
||||||
|
|
||||||
$creationDateSth->finish;
|
$creationDateSth->finish;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue