Added "sortOrder" to Folder assets
Added "canAddFile" and "canEdit" to Folder template variables
This commit is contained in:
parent
427993edc5
commit
fc7fbfbd0c
5 changed files with 175 additions and 77 deletions
|
|
@ -52,6 +52,8 @@
|
|||
- fixed: DataForms can now export all non-default fields
|
||||
- rfe: Search results now return with keywords highlighted.
|
||||
- rfe: After committing a version there is now a back to site link
|
||||
- rfe: Added sort order to Folder assets
|
||||
- rfe: Added canEdit and canAddFile template vars to Folder assets
|
||||
|
||||
7.5.22
|
||||
- fixed: Layout template now gets prepared correctly
|
||||
|
|
|
|||
|
|
@ -31,6 +31,7 @@ my $session = start(); # this line required
|
|||
addUrlToAssetHistory ( $session ); ##This sub MUST GO FIRST
|
||||
removeDoNothingOnDelete( $session );
|
||||
fixIsPublicOnTemplates ( $session );
|
||||
addSortOrderToFolder( $session );
|
||||
addEMSBadgeTemplate ( $session );
|
||||
|
||||
finish($session); # this line required
|
||||
|
|
@ -58,6 +59,14 @@ sub addUrlToAssetHistory {
|
|||
print "Done.\n" unless $quiet;
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
sub addSortOrderToFolder {
|
||||
my $session = shift;
|
||||
print "\tAdding Sort Order to Folder... " unless $quiet;
|
||||
$session->db->write( 'alter table Folder add column sortOrder ENUM("ASC","DESC") DEFAULT "ASC"' );
|
||||
print "Done.\n" unless $quiet;
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
sub removeDoNothingOnDelete {
|
||||
my $session = shift;
|
||||
|
|
|
|||
|
|
@ -55,46 +55,60 @@ A hash reference passed in from a subclass definition.
|
|||
=cut
|
||||
|
||||
sub definition {
|
||||
my $class = shift;
|
||||
my $session = shift;
|
||||
my $definition = shift;
|
||||
my $i18n = WebGUI::International->new($session,"Asset_Folder");
|
||||
push(@{$definition}, {
|
||||
assetName => $i18n->get("assetName"),
|
||||
uiLevel => 5,
|
||||
icon => 'folder.gif',
|
||||
tableName => 'Folder',
|
||||
className => 'WebGUI::Asset::Wobject::Folder',
|
||||
my $class = shift;
|
||||
my $session = shift;
|
||||
my $definition = shift;
|
||||
my $i18n = WebGUI::International->new($session,"Asset_Folder");
|
||||
|
||||
my %optionsSortOrder = (
|
||||
ASC => $i18n->get( "editForm sortOrder ascending" ),
|
||||
DESC => $i18n->get( "editForm sortOrder descending" ),
|
||||
);
|
||||
|
||||
push @{ $definition }, {
|
||||
assetName => $i18n->get("assetName"),
|
||||
uiLevel => 5,
|
||||
icon => 'folder.gif',
|
||||
tableName => 'Folder',
|
||||
className => 'WebGUI::Asset::Wobject::Folder',
|
||||
autoGenerateForms => 1,
|
||||
properties => {
|
||||
properties => {
|
||||
visitorCacheTimeout => {
|
||||
tab => "display",
|
||||
fieldType => "interval",
|
||||
defaultValue => 3600,
|
||||
uiLevel => 8,
|
||||
label => $i18n->get("visitor cache timeout"),
|
||||
hoverHelp => $i18n->get("visitor cache timeout help")
|
||||
},
|
||||
|
||||
tab => "display",
|
||||
fieldType => "interval",
|
||||
defaultValue => 3600,
|
||||
uiLevel => 8,
|
||||
label => $i18n->get("visitor cache timeout"),
|
||||
hoverHelp => $i18n->get("visitor cache timeout help"),
|
||||
},
|
||||
# TODO: This should probably be a proper "sortBy" with multiple possible fields
|
||||
sortAlphabetically => {
|
||||
fieldType => "yesNo",
|
||||
defaultValue => 0,
|
||||
tab => 'display',
|
||||
label => $i18n->get('sort alphabetically'),
|
||||
hoverHelp => $i18n->get('sort alphabetically help'),
|
||||
},
|
||||
|
||||
fieldType => "yesNo",
|
||||
defaultValue => 0,
|
||||
tab => 'display',
|
||||
label => $i18n->get('sort alphabetically'),
|
||||
hoverHelp => $i18n->get('sort alphabetically help'),
|
||||
},
|
||||
sortOrder => {
|
||||
tab => 'display',
|
||||
fieldType => "selectBox",
|
||||
options => \%optionsSortOrder,
|
||||
defaultValue => "ASC",
|
||||
label => $i18n->get( "editForm sortOrder label" ),
|
||||
hoverHelp => $i18n->get( "editForm sortOrder description" ),
|
||||
},
|
||||
templateId => {
|
||||
fieldType => "template",
|
||||
defaultValue => 'PBtmpl0000000000000078',
|
||||
namespace => 'Folder',
|
||||
tab => 'display',
|
||||
label => $i18n->get('folder template title'),
|
||||
hoverHelp => $i18n->get('folder template description'),
|
||||
}
|
||||
}
|
||||
});
|
||||
return $class->SUPER::definition($session, $definition);
|
||||
fieldType => "template",
|
||||
defaultValue => 'PBtmpl0000000000000078',
|
||||
namespace => 'Folder',
|
||||
tab => 'display',
|
||||
label => $i18n->get('folder template title'),
|
||||
hoverHelp => $i18n->get('folder template description'),
|
||||
},
|
||||
},
|
||||
};
|
||||
|
||||
return $class->SUPER::definition($session, $definition);
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -123,6 +137,26 @@ sub getEditForm {
|
|||
return $tabform;
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------
|
||||
|
||||
=head2 getTemplateVars ( )
|
||||
|
||||
Get the shared template vars for all views of the Folder.
|
||||
|
||||
=cut
|
||||
|
||||
sub getTemplateVars {
|
||||
my $self = shift;
|
||||
my $vars = $self->get;
|
||||
my $i18n = WebGUI::International->new($self->session, 'Asset_Folder');
|
||||
|
||||
$vars->{ 'addFile.label' } = $i18n->get('add file label');
|
||||
$vars->{ 'addFile.url' } = $self->getUrl('func=add;class=WebGUI::Asset::FilePile');
|
||||
$vars->{ canEdit } = $self->canEdit;
|
||||
$vars->{ canAddFile } = $self->canEdit;
|
||||
|
||||
return $vars;
|
||||
}
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
|
|
@ -157,21 +191,30 @@ sub purgeCache {
|
|||
|
||||
#-------------------------------------------------------------------
|
||||
sub view {
|
||||
my $self = shift;
|
||||
|
||||
my $i18n = WebGUI::International->new($self->session, 'Asset_Folder');
|
||||
my $self = shift;
|
||||
|
||||
# Use cached version for visitors
|
||||
if ($self->session->user->userId eq '1') {
|
||||
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
|
||||
return $out if $out;
|
||||
}
|
||||
my %rules = ( returnObjects => 1);
|
||||
$rules{orderByClause} = 'assetData.title' if ($self->get("sortAlphabetically"));
|
||||
my $children = $self->getLineage( ["children"], \%rules);
|
||||
my %vars;
|
||||
foreach my $child (@{$children}) {
|
||||
if (ref($child) eq "WebGUI::Asset::Wobject::Folder") {
|
||||
push(@{$vars{"subfolder_loop"}}, {
|
||||
|
||||
my $vars = $self->getTemplateVars;
|
||||
# TODO: Getting the children template vars should be a seperate method.
|
||||
|
||||
my %rules = ( returnObjects => 1);
|
||||
if ( $self->get( "sortAlphabetically" ) ) {
|
||||
$rules{ orderByClause } = "assetData.title " . $self->get( "sortOrder" );
|
||||
}
|
||||
else {
|
||||
$rules{ orderByClause } = "asset.lineage " . $self->get( "sortOrder" );
|
||||
}
|
||||
|
||||
my $children = $self->getLineage( ["children"], \%rules);
|
||||
foreach my $child ( @{ $children } ) {
|
||||
# TODO: Instead of this it should be using $child->getTemplateVars || $child->get
|
||||
if ( ref $child eq "WebGUI::Asset::Wobject::Folder" ) {
|
||||
push @{ $vars->{ "subfolder_loop" } }, {
|
||||
id => $child->getId,
|
||||
url => $child->getUrl,
|
||||
title => $child->get("title"),
|
||||
|
|
@ -179,42 +222,48 @@ sub view {
|
|||
canView => $child->canView(),
|
||||
"icon.small" => $child->getIcon(1),
|
||||
"icon.big" => $child->getIcon,
|
||||
});
|
||||
} else {
|
||||
my $isImage = (ref($child) =~ /^WebGUI::Asset::File::Image/);
|
||||
my $thumbnail = $child->getThumbnailUrl if ($isImage);
|
||||
my $isFile = (ref($child) =~ /^WebGUI::Asset::File/);
|
||||
my $file = $child->getFileUrl if ($isFile);
|
||||
push(@{$vars{"file_loop"}},{
|
||||
id=>$child->getId,
|
||||
canView => $child->canView(),
|
||||
title=>$child->get("title"),
|
||||
menuTitle=>$child->get("menuTitle"),
|
||||
synopsis=>$child->get("synopsis") || '',
|
||||
size=>WebGUI::Utility::formatBytes($child->get("assetSize")),
|
||||
"date.epoch"=>$child->get("revisionDate"),
|
||||
"icon.small"=>$child->getIcon(1),
|
||||
"icon.big"=>$child->getIcon,
|
||||
type=>$child->getName,
|
||||
url=>$child->getUrl,
|
||||
isImage=>$isImage,
|
||||
canEdit=>$child->canEdit,
|
||||
controls=>$child->getToolbar,
|
||||
isFile=>$isFile,
|
||||
"thumbnail.url"=>$thumbnail,
|
||||
"file.url"=>$file
|
||||
});
|
||||
};
|
||||
}
|
||||
else {
|
||||
my $childVars = {
|
||||
id => $child->getId,
|
||||
canView => $child->canView(),
|
||||
title => $child->get("title"),
|
||||
menuTitle => $child->get("menuTitle"),
|
||||
synopsis => $child->get("synopsis") || '',
|
||||
size => WebGUI::Utility::formatBytes($child->get("assetSize")),
|
||||
"date.epoch" => $child->get("revisionDate"),
|
||||
"icon.small" => $child->getIcon(1),
|
||||
"icon.big" => $child->getIcon,
|
||||
type => $child->getName,
|
||||
url => $child->getUrl,
|
||||
canEdit => $child->canEdit,
|
||||
controls => $child->getToolbar,
|
||||
};
|
||||
|
||||
if ( ref $child =~ /^WebGUI::Asset::File::Image/ ) {
|
||||
$child->{ "isImage" } = 1;
|
||||
$child->{ "thumbnail.url" } = $child->getThumbnailUrl;
|
||||
}
|
||||
|
||||
if ( ref $child =~ /^WebGUI::Asset::File/ ) {
|
||||
$child->{ "isFile" } = 1;
|
||||
$child->{ "file.url" } = $child->getFileUrl;
|
||||
}
|
||||
|
||||
push @{ $vars->{ "file_loop" } }, $childVars;
|
||||
}
|
||||
}
|
||||
|
||||
$vars{'addFile.label'} = $i18n->get('add file label');
|
||||
$vars{'addFile.url'} = $self->getUrl('func=add;class=WebGUI::Asset::FilePile');
|
||||
|
||||
my $out = $self->processTemplate(\%vars,undef,$self->{_viewTemplate});
|
||||
my $out = $self->processTemplate( $vars, undef, $self->{_viewTemplate} );
|
||||
|
||||
# Update the cache
|
||||
if ($self->session->user->userId eq '1') {
|
||||
WebGUI::Cache->new($self->session,"view_".$self->getId)->set($out,$self->get("visitorCacheTimeout"));
|
||||
WebGUI::Cache->new($self->session,"view_".$self->getId)
|
||||
->set($out,$self->get("visitorCacheTimeout"));
|
||||
}
|
||||
return $out;
|
||||
|
||||
return $out;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -15,6 +15,8 @@ our $HELP = {
|
|||
variables => [
|
||||
{ name => 'addFile.url', },
|
||||
{ name => "addFile.label", },
|
||||
{ name => "canAddFile", description => 'helpvar canAddFile', },
|
||||
{ name => "canEdit", description => 'helpvar canEdit', },
|
||||
{ name => "subfolder_loop",
|
||||
variables => [
|
||||
{ name => "id",
|
||||
|
|
|
|||
|
|
@ -253,6 +253,42 @@ be useful, others may not.|,
|
|||
message => q|In seconds, how long output from this Asset will be cached.|,
|
||||
lastUpdated => 1167416930
|
||||
},
|
||||
|
||||
'editForm sortOrder label' => {
|
||||
message => q{Sort Order},
|
||||
lastUpdated => 0,
|
||||
context => q{Label for asset property},
|
||||
},
|
||||
|
||||
'editForm sortOrder description' => {
|
||||
message => q{The order in which to sort the files and folders.},
|
||||
lastUpdated => 0,
|
||||
context => q{Description of asset property},
|
||||
},
|
||||
|
||||
'editForm sortOrder ascending' => {
|
||||
message => q{Ascending},
|
||||
lastUpdated => 0,
|
||||
context => q{Label for sort order},
|
||||
},
|
||||
|
||||
'editForm sortOrder descending' => {
|
||||
message => q{Descending},
|
||||
lastUpdated => 0,
|
||||
context => q{Label for sort order},
|
||||
},
|
||||
|
||||
'helpvar canAddFile' => {
|
||||
message => q{Is true if the user can add a file to the Folder},
|
||||
lastUpdated => 0,
|
||||
context => q{Help for template variable},
|
||||
},
|
||||
|
||||
'helpvar canEdit' => {
|
||||
message => q{Is true if the user can edit the folder},
|
||||
lastUpdated => 0,
|
||||
context => q{Help for template variable},
|
||||
},
|
||||
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue