add #455: Featured page in wiki
This commit is contained in:
parent
cf9df28ddd
commit
6da85b89a7
8 changed files with 152 additions and 0 deletions
|
|
@ -125,6 +125,11 @@ sub definition {
|
|||
defaultValue => '',
|
||||
noFormPost => 1,
|
||||
},
|
||||
isFeatured => {
|
||||
fieldType => "yesNo",
|
||||
defaultValue => 0,
|
||||
noFormPost => 1,
|
||||
},
|
||||
);
|
||||
|
||||
push @$definition,
|
||||
|
|
@ -205,6 +210,7 @@ sub getEditForm {
|
|||
formContent => WebGUI::Form::HTMLArea($session, { name => 'content', richEditId => $wiki->get('richEditor'), value => $self->get('content') }) ,
|
||||
formSubmit => WebGUI::Form::submit($session, { value => 'Save' }),
|
||||
formProtect => WebGUI::Form::yesNo($session, { name => "isProtected", value=>$self->getValue("isProtected")}),
|
||||
formFeatured => WebGUI::Form::yesNo( $session, { name => 'isFeatured', value=>$self->getValue('isFeatured')}),
|
||||
formKeywords => WebGUI::Form::keywords($session, {
|
||||
name => "keywords",
|
||||
value => WebGUI::Keyword->new($session)->getKeywordsForAsset({asset=>$self}),
|
||||
|
|
@ -404,6 +410,7 @@ sub processPropertiesFromFormPost {
|
|||
|
||||
if ($wiki->canAdminister) {
|
||||
$properties->{isProtected} = $self->session->form->get("isProtected");
|
||||
$properties->{isFeatured} = $self->session->form->get("isFeatured");
|
||||
}
|
||||
|
||||
$self->update($properties);
|
||||
|
|
|
|||
|
|
@ -25,6 +25,24 @@ use URI::Escape;
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 appendFeaturedPageVars ( var, asset )
|
||||
|
||||
Append the template variables to C<var> for the featured page C<asset>. Returns
|
||||
the C<var> for convenience.
|
||||
|
||||
=cut
|
||||
|
||||
sub appendFeaturedPageVars {
|
||||
my ( $self, $var, $asset ) = @_;
|
||||
my $assetVar = $asset->getTemplateVars;
|
||||
for my $key ( keys %{$assetVar} ) {
|
||||
$var->{ 'featured_' . $key } = $assetVar->{$key};
|
||||
}
|
||||
return $var;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 appendMostPopular ($var, [ $limit ])
|
||||
|
||||
=head3 $var
|
||||
|
|
@ -419,6 +437,25 @@ sub definition {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getFeaturedPageIds ( )
|
||||
|
||||
Get the asset IDs of the pages that are marked as Featured.
|
||||
|
||||
=cut
|
||||
|
||||
sub getFeaturedPageIds {
|
||||
my ( $self ) = @_;
|
||||
|
||||
my $assetIds = $self->getLineage( ['children'], {
|
||||
joinClass => 'WebGUI::Asset::WikiPage',
|
||||
whereClause => 'isFeatured = 1',
|
||||
} );
|
||||
|
||||
return $assetIds;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 getRssFeedItems ()
|
||||
|
||||
Returns an array reference of hash references. Each hash reference has a title,
|
||||
|
|
@ -547,6 +584,7 @@ Render the front page of the wiki.
|
|||
|
||||
sub view {
|
||||
my $self = shift;
|
||||
my $session = $self->session;
|
||||
my $var = $self->getTemplateVars;
|
||||
$var->{ description } = $self->autolinkHtml( $var->{ description } );
|
||||
$var->{ keywordCloud }
|
||||
|
|
@ -555,6 +593,15 @@ sub view {
|
|||
displayFunc=>"byKeyword",
|
||||
});
|
||||
my $template = $self->{_frontPageTemplate};
|
||||
|
||||
# Get a random featured page
|
||||
my $featuredIds = $self->getFeaturedPageIds;
|
||||
my $featuredId = $featuredIds->[ int( rand @$featuredIds ) - 1 ];
|
||||
my $featured = WebGUI::Asset->newByDynamicClass( $session, $featuredId );
|
||||
if ( $featured ) {
|
||||
$self->appendFeaturedPageVars( $var, $featured );
|
||||
}
|
||||
|
||||
$self->appendSearchBoxVars($var);
|
||||
$self->appendRecentChanges($var, $self->get('recentChangesCountFront'));
|
||||
$self->appendMostPopular($var, $self->get('mostPopularCountFront'));
|
||||
|
|
|
|||
|
|
@ -303,6 +303,13 @@ our $I18N =
|
|||
lastUpdated => 0,
|
||||
context => 'Body text for help page',
|
||||
},
|
||||
|
||||
|
||||
'isFeatured label' => {
|
||||
message => q{Feature this on the front page},
|
||||
lastUpdated => 0,
|
||||
context => 'Label for asset property',
|
||||
},
|
||||
};
|
||||
|
||||
1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue