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
|
- fixed: DataForms can now export all non-default fields
|
||||||
- rfe: Search results now return with keywords highlighted.
|
- rfe: Search results now return with keywords highlighted.
|
||||||
- rfe: After committing a version there is now a back to site link
|
- 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
|
7.5.22
|
||||||
- fixed: Layout template now gets prepared correctly
|
- fixed: Layout template now gets prepared correctly
|
||||||
|
|
|
||||||
|
|
@ -31,6 +31,7 @@ my $session = start(); # this line required
|
||||||
addUrlToAssetHistory ( $session ); ##This sub MUST GO FIRST
|
addUrlToAssetHistory ( $session ); ##This sub MUST GO FIRST
|
||||||
removeDoNothingOnDelete( $session );
|
removeDoNothingOnDelete( $session );
|
||||||
fixIsPublicOnTemplates ( $session );
|
fixIsPublicOnTemplates ( $session );
|
||||||
|
addSortOrderToFolder( $session );
|
||||||
addEMSBadgeTemplate ( $session );
|
addEMSBadgeTemplate ( $session );
|
||||||
|
|
||||||
finish($session); # this line required
|
finish($session); # this line required
|
||||||
|
|
@ -58,6 +59,14 @@ sub addUrlToAssetHistory {
|
||||||
print "Done.\n" unless $quiet;
|
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 {
|
sub removeDoNothingOnDelete {
|
||||||
my $session = shift;
|
my $session = shift;
|
||||||
|
|
|
||||||
|
|
@ -55,46 +55,60 @@ A hash reference passed in from a subclass definition.
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
sub definition {
|
sub definition {
|
||||||
my $class = shift;
|
my $class = shift;
|
||||||
my $session = shift;
|
my $session = shift;
|
||||||
my $definition = shift;
|
my $definition = shift;
|
||||||
my $i18n = WebGUI::International->new($session,"Asset_Folder");
|
my $i18n = WebGUI::International->new($session,"Asset_Folder");
|
||||||
push(@{$definition}, {
|
|
||||||
assetName => $i18n->get("assetName"),
|
my %optionsSortOrder = (
|
||||||
uiLevel => 5,
|
ASC => $i18n->get( "editForm sortOrder ascending" ),
|
||||||
icon => 'folder.gif',
|
DESC => $i18n->get( "editForm sortOrder descending" ),
|
||||||
tableName => 'Folder',
|
);
|
||||||
className => 'WebGUI::Asset::Wobject::Folder',
|
|
||||||
|
push @{ $definition }, {
|
||||||
|
assetName => $i18n->get("assetName"),
|
||||||
|
uiLevel => 5,
|
||||||
|
icon => 'folder.gif',
|
||||||
|
tableName => 'Folder',
|
||||||
|
className => 'WebGUI::Asset::Wobject::Folder',
|
||||||
autoGenerateForms => 1,
|
autoGenerateForms => 1,
|
||||||
properties => {
|
properties => {
|
||||||
visitorCacheTimeout => {
|
visitorCacheTimeout => {
|
||||||
tab => "display",
|
tab => "display",
|
||||||
fieldType => "interval",
|
fieldType => "interval",
|
||||||
defaultValue => 3600,
|
defaultValue => 3600,
|
||||||
uiLevel => 8,
|
uiLevel => 8,
|
||||||
label => $i18n->get("visitor cache timeout"),
|
label => $i18n->get("visitor cache timeout"),
|
||||||
hoverHelp => $i18n->get("visitor cache timeout help")
|
hoverHelp => $i18n->get("visitor cache timeout help"),
|
||||||
},
|
},
|
||||||
|
# TODO: This should probably be a proper "sortBy" with multiple possible fields
|
||||||
sortAlphabetically => {
|
sortAlphabetically => {
|
||||||
fieldType => "yesNo",
|
fieldType => "yesNo",
|
||||||
defaultValue => 0,
|
defaultValue => 0,
|
||||||
tab => 'display',
|
tab => 'display',
|
||||||
label => $i18n->get('sort alphabetically'),
|
label => $i18n->get('sort alphabetically'),
|
||||||
hoverHelp => $i18n->get('sort alphabetically help'),
|
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 => {
|
templateId => {
|
||||||
fieldType => "template",
|
fieldType => "template",
|
||||||
defaultValue => 'PBtmpl0000000000000078',
|
defaultValue => 'PBtmpl0000000000000078',
|
||||||
namespace => 'Folder',
|
namespace => 'Folder',
|
||||||
tab => 'display',
|
tab => 'display',
|
||||||
label => $i18n->get('folder template title'),
|
label => $i18n->get('folder template title'),
|
||||||
hoverHelp => $i18n->get('folder template description'),
|
hoverHelp => $i18n->get('folder template description'),
|
||||||
}
|
},
|
||||||
}
|
},
|
||||||
});
|
};
|
||||||
return $class->SUPER::definition($session, $definition);
|
|
||||||
|
return $class->SUPER::definition($session, $definition);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -123,6 +137,26 @@ sub getEditForm {
|
||||||
return $tabform;
|
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 {
|
sub view {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
|
|
||||||
my $i18n = WebGUI::International->new($self->session, 'Asset_Folder');
|
|
||||||
|
|
||||||
|
# Use cached version for visitors
|
||||||
if ($self->session->user->userId eq '1') {
|
if ($self->session->user->userId eq '1') {
|
||||||
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
|
my $out = WebGUI::Cache->new($self->session,"view_".$self->getId)->get;
|
||||||
return $out if $out;
|
return $out if $out;
|
||||||
}
|
}
|
||||||
my %rules = ( returnObjects => 1);
|
|
||||||
$rules{orderByClause} = 'assetData.title' if ($self->get("sortAlphabetically"));
|
my $vars = $self->getTemplateVars;
|
||||||
my $children = $self->getLineage( ["children"], \%rules);
|
# TODO: Getting the children template vars should be a seperate method.
|
||||||
my %vars;
|
|
||||||
foreach my $child (@{$children}) {
|
my %rules = ( returnObjects => 1);
|
||||||
if (ref($child) eq "WebGUI::Asset::Wobject::Folder") {
|
if ( $self->get( "sortAlphabetically" ) ) {
|
||||||
push(@{$vars{"subfolder_loop"}}, {
|
$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,
|
id => $child->getId,
|
||||||
url => $child->getUrl,
|
url => $child->getUrl,
|
||||||
title => $child->get("title"),
|
title => $child->get("title"),
|
||||||
|
|
@ -179,42 +222,48 @@ sub view {
|
||||||
canView => $child->canView(),
|
canView => $child->canView(),
|
||||||
"icon.small" => $child->getIcon(1),
|
"icon.small" => $child->getIcon(1),
|
||||||
"icon.big" => $child->getIcon,
|
"icon.big" => $child->getIcon,
|
||||||
});
|
};
|
||||||
} else {
|
}
|
||||||
my $isImage = (ref($child) =~ /^WebGUI::Asset::File::Image/);
|
else {
|
||||||
my $thumbnail = $child->getThumbnailUrl if ($isImage);
|
my $childVars = {
|
||||||
my $isFile = (ref($child) =~ /^WebGUI::Asset::File/);
|
id => $child->getId,
|
||||||
my $file = $child->getFileUrl if ($isFile);
|
canView => $child->canView(),
|
||||||
push(@{$vars{"file_loop"}},{
|
title => $child->get("title"),
|
||||||
id=>$child->getId,
|
menuTitle => $child->get("menuTitle"),
|
||||||
canView => $child->canView(),
|
synopsis => $child->get("synopsis") || '',
|
||||||
title=>$child->get("title"),
|
size => WebGUI::Utility::formatBytes($child->get("assetSize")),
|
||||||
menuTitle=>$child->get("menuTitle"),
|
"date.epoch" => $child->get("revisionDate"),
|
||||||
synopsis=>$child->get("synopsis") || '',
|
"icon.small" => $child->getIcon(1),
|
||||||
size=>WebGUI::Utility::formatBytes($child->get("assetSize")),
|
"icon.big" => $child->getIcon,
|
||||||
"date.epoch"=>$child->get("revisionDate"),
|
type => $child->getName,
|
||||||
"icon.small"=>$child->getIcon(1),
|
url => $child->getUrl,
|
||||||
"icon.big"=>$child->getIcon,
|
canEdit => $child->canEdit,
|
||||||
type=>$child->getName,
|
controls => $child->getToolbar,
|
||||||
url=>$child->getUrl,
|
};
|
||||||
isImage=>$isImage,
|
|
||||||
canEdit=>$child->canEdit,
|
if ( ref $child =~ /^WebGUI::Asset::File::Image/ ) {
|
||||||
controls=>$child->getToolbar,
|
$child->{ "isImage" } = 1;
|
||||||
isFile=>$isFile,
|
$child->{ "thumbnail.url" } = $child->getThumbnailUrl;
|
||||||
"thumbnail.url"=>$thumbnail,
|
}
|
||||||
"file.url"=>$file
|
|
||||||
});
|
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');
|
my $out = $self->processTemplate( $vars, undef, $self->{_viewTemplate} );
|
||||||
$vars{'addFile.url'} = $self->getUrl('func=add;class=WebGUI::Asset::FilePile');
|
|
||||||
|
# Update the cache
|
||||||
my $out = $self->processTemplate(\%vars,undef,$self->{_viewTemplate});
|
|
||||||
if ($self->session->user->userId eq '1') {
|
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 => [
|
variables => [
|
||||||
{ name => 'addFile.url', },
|
{ name => 'addFile.url', },
|
||||||
{ name => "addFile.label", },
|
{ name => "addFile.label", },
|
||||||
|
{ name => "canAddFile", description => 'helpvar canAddFile', },
|
||||||
|
{ name => "canEdit", description => 'helpvar canEdit', },
|
||||||
{ name => "subfolder_loop",
|
{ name => "subfolder_loop",
|
||||||
variables => [
|
variables => [
|
||||||
{ name => "id",
|
{ name => "id",
|
||||||
|
|
|
||||||
|
|
@ -253,6 +253,42 @@ be useful, others may not.|,
|
||||||
message => q|In seconds, how long output from this Asset will be cached.|,
|
message => q|In seconds, how long output from this Asset will be cached.|,
|
||||||
lastUpdated => 1167416930
|
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