Merge branch 'WebGUI8' into psgi

Conflicts:
	sbin/testEnvironment.pl
This commit is contained in:
Patrick Donelan 2010-06-04 21:01:03 -04:00
commit f16ba76b86
109 changed files with 1546 additions and 2197 deletions

View file

@ -346,8 +346,8 @@ sub www_editSubmission {
my $assetId = $self ? $self->getId : $params->{assetId} || $session->form->get('assetId') || 'new';
if( $assetId ne 'new' ) {
$self ||= WebGUI::Asset->newByDynamicClass($session,$assetId);
if (!defined $self) {
$self ||= eval { WebGUI::Asset->newById($session,$assetId); };
if (Exception::Class->caught()) {
$session->errorHandler->error(__PACKAGE__ . " - failed to instanciate asset with assetId $assetId");
}
}

View file

@ -16,10 +16,70 @@ package WebGUI::Asset::EMSSubmissionForm;
=cut
use strict;
use Moose;
use WebGUI::Definition::Asset;
extends 'WebGUI::Asset';
define assetName => ['assetName','Asset_EMSSubmissionForm'];
define icon => 'EMSSubmissionForm.gif';
define tableName => 'EMSSubmissionForm';
property canSubmitGroupId => (
tab => "security",
fieldType => "group",
default => 2,
label => ["can submit group label", 'Asset_EMSSubmissionForm'],
hoverHelp => ["can submit group label help", 'Asset_EMSSubmissionForm']
);
property daysBeforeCleanup => (
tab => "properties",
fieldType => "integer",
default => 7,
label => ["days before cleanup label", 'Asset_EMSSubmissionForm'],
hoverHelp => ["days before cleanup label help", 'Asset_EMSSubmissionForm']
);
property deleteCreatedItems => (
tab => "properties",
fieldType => "yesNo",
default => undef,
label => ["delete created items label", 'Asset_EMSSubmissionForm'],
hoverHelp => ["delete created items label help", 'Asset_EMSSubmissionForm']
);
property submissionDeadline => (
tab => "properties",
fieldType => "Date",
builder => '_default_submissionDeadline',
label => ["submission deadline label", 'Asset_EMSSubmissionForm'],
hoverHelp => ["submission deadline label help", 'Asset_EMSSubmissionForm']
);
sub _default_submissionDeadline {
return time() + ( 30 * 24 * 60 * 60 ); # 30 days
}
property pastDeadlineMessage => (
tab => "properties",
fieldType => "HTMLArea",
builder => '_default_pastDeadlineMessage',
lazy => 1,
label => ["past deadline label", 'Asset_EMSSubmissionForm'],
hoverHelp => ["past deadline label help", 'Asset_EMSSubmissionForm']
);
sub _default_pastDeadlineMessage {
my $self = shift;
my $i18n = WebGUI::International->new($self->session, 'Asset_EMSSubmissionForm');
return $i18n->get('past deadline message');
}
property formDescription => (
tab => "properties",
fieldType => "textarea",
default => '{ }',
label => ["form dscription label", 'Asset_EMSSubmissionForm'],
hoverHelp => ["form dscription label help", 'Asset_EMSSubmissionForm']
);
use Tie::IxHash;
use base 'WebGUI::Asset';
use JSON;
use WebGUI::Utility;
with 'WebGUI::Role::Asset::AlwaysHidden';
=head1 NAME
@ -84,81 +144,6 @@ sub canSubmit {
#-------------------------------------------------------------------
=head2 definition ( session, definition )
defines asset properties for New Asset instances. You absolutely need
this method in your new Assets.
=head3 session
=head3 definition
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_EMSSubmissionForm" );
tie my %properties, 'Tie::IxHash', (
canSubmitGroupId => {
tab => "security",
fieldType => "group",
defaultValue => 2,
label => $i18n->get("can submit group label"),
hoverHelp => $i18n->get("can submit group label help")
},
daysBeforeCleanup => {
tab => "properties",
fieldType => "integer",
defaultValue => 7,
label => $i18n->get("days before cleanup label"),
hoverHelp => $i18n->get("days before cleanup label help")
},
deleteCreatedItems => {
tab => "properties",
fieldType => "yesNo",
defaultValue => undef,
label => $i18n->get("delete created items label"),
hoverHelp => $i18n->get("delete created items label help")
},
submissionDeadline => {
tab => "properties",
fieldType => "Date",
defaultValue => time + ( 30 * 24 * 60 * 60 ) , # 30 days
label => $i18n->get("submission deadline label"),
hoverHelp => $i18n->get("submission deadline label help")
},
pastDeadlineMessage => {
tab => "properties",
fieldType => "HTMLArea",
defaultValue => $i18n->get('past deadline message'),
label => $i18n->get("past deadline label"),
hoverHelp => $i18n->get("past deadline label help")
},
formDescription => {
tab => "properties",
fieldType => "textarea",
defaultValue => '{ }',
label => $i18n->get("form dscription label"),
hoverHelp => $i18n->get("form dscription label help")
},
);
push @{$definition}, {
assetName => $i18n->get('assetName'),
icon => 'EMSSubmissionForm.gif',
autoGenerateForms => 1,
tableName => 'EMSSubmissionForm',
className => 'WebGUI::Asset::EMSSubmissionForm',
properties => \%properties,
};
return $class->SUPER::definition( $session, $definition );
} ## end sub definition
#-------------------------------------------------------------------
=head2 ems
returns the ems ansestor of this asset
@ -187,131 +172,154 @@ optional set of possibly incorrect submission form params
=cut
sub www_editSubmissionForm {
my $this = shift;
my $self;
my $parent;
if( $this eq __PACKAGE__ ) { # called as constructor or menu
$parent = shift;
} else {
$self = $this;
$parent = $self->getParent;
}
my $params = shift || { };
my $session = $parent->session;
my $i18n = WebGUI::International->new($session,'Asset_EventManagementSystem');
my $assetId = $self ? $self->getId : $params->{assetId} || $session->form->get('assetId');
my $this = shift;
my $self;
my $parent;
if ( $this eq __PACKAGE__ ) { # called as constructor or menu
$parent = shift;
}
else {
$self = $this;
$parent = $self->getParent;
}
my $params = shift || {};
my $session = $parent->session;
my $i18n = WebGUI::International->new( $session, 'Asset_EventManagementSystem' );
my $assetId = $self ? $self->getId : $params->{assetId} || $session->form->get('assetId');
if( ! defined( $assetId ) ) {
my $res = $parent->getLineage(['children'],{ returnObjects => 1,
includeOnlyClasses => ['WebGUI::Asset::EMSSubmissionForm'],
} );
if( scalar(@$res) == 1 ) {
$self = $res->[0];
$assetId = $self->getId;
} else {
my $makeAnchorList =sub{ my $u=shift; my $n=shift; my $d=shift;
return qq{<li><a href='$u' title='$d'>$n</a></li>} } ;
my $listOfLinks = join '', ( map {
$makeAnchorList->(
$_->getQueueUrl,
$_->get('title'),
WebGUI::HTML::filter($_->get('description'),'all')
)
} ( @$res ) );
my $title = $i18n->get('select form to edit') ;
my $content = '<h1>' . $title . '</h1><ul>' . $listOfLinks . '</ul>' ;
if( $params->{asHashRef} ) {
return { text => $content, title => $title, } ;
} elsif( $session->form->get('asJson') ) {
$session->http->setMimeType( 'application/json' );
return JSON->new->encode( { text => $content, title => $title, id => 'list' . rand } );
} else {
$session->http->setMimeType( 'text/html' );
return $parent->ems->processStyle( $content );
}
}
} elsif( $assetId ne 'new' ) {
$self ||= WebGUI::Asset->newByDynamicClass($session,$assetId);
if (!defined($self)) {
$session->errorHandler->error(__PACKAGE__ . " - failed to instanciate asset with assetId $assetId");
}
if ( !defined($assetId) ) {
my $res = $parent->getLineage(
['children'], {
returnObjects => 1,
includeOnlyClasses => ['WebGUI::Asset::EMSSubmissionForm'],
}
);
if ( scalar(@$res) == 1 ) {
$self = $res->[0];
$assetId = $self->getId;
}
my $asset = $self || $parent;
my $url = $asset->getUrl('func=editSubmissionFormSave');
my $newform = WebGUI::HTMLForm->new( $session, action => $url );
$newform->hidden(name => 'assetId', value => $assetId);
my @fieldNames = qw/title description startDate duration seatsAvailable location/;
my $fields;
my @defs = reverse @{WebGUI::Asset::EMSSubmission->definition($session)};
for my $def ( @defs ) {
foreach my $fieldName ( @fieldNames ) {
my $properties = $def->{properties};
if( defined $properties->{$fieldName} ) {
$fields->{$fieldName} = { %{$properties->{$fieldName}} }; # a simple first level copy
# field definitions don't contain their own name, we will need it later on
$fields->{$fieldName}{fieldId} = $fieldName;
};
}
}
for my $metaField ( @{$parent->getEventMetaFields} ) {
push @fieldNames, $metaField->{fieldId};
$fields->{$metaField->{fieldId}} = { %$metaField }; # a simple first level copy
# meta fields call it data type, we copy it to simplify later on
$fields->{$metaField->{fieldId}}{fieldType} = $metaField->{dataType};
$fields->{$metaField->{fieldId}}{hoverHelp} = $metaField->{helpText};
}
$newform->hidden( name => 'fieldNames', value => join( ' ', @fieldNames ) );
@defs = reverse @{WebGUI::Asset::EMSSubmissionForm->definition($session)};
for my $def ( @defs ) {
my $properties = $def->{properties};
for my $fieldName ( qw/title menuTitle url description canSubmitGroupId daysBeforeCleanup
deleteCreatedItems submissionDeadline pastDeadlineMessage/ ) {
if( defined $properties->{$fieldName} ) {
my %fieldParams = %{$properties->{$fieldName}};
$fieldParams{name} = $fieldName;
$fieldParams{value} = $params->{$fieldName} || $self ? $self->get($fieldName) : undef ;
$newform->dynamicField(%fieldParams);
}
}
else {
my $makeAnchorList = sub {
my $u = shift;
my $n = shift;
my $d = shift;
return qq{<li><a href='$u' title='$d'>$n</a></li>};
};
my $listOfLinks = join '', (
map {
$makeAnchorList->(
$_->getQueueUrl, $_->get('title'), WebGUI::HTML::filter( $_->get('description'), 'all' )
)
} (@$res)
);
my $title = $i18n->get('select form to edit');
my $content = '<h1>' . $title . '</h1><ul>' . $listOfLinks . '</ul>';
if ( $params->{asHashRef} ) {
return { text => $content, title => $title, };
}
elsif ( $session->form->get('asJson') ) {
$session->http->setMimeType('application/json');
return JSON->new->encode( { text => $content, title => $title, id => 'list' . rand } );
}
else {
$session->http->setMimeType('text/html');
return $parent->ems->processStyle($content);
}
} ## end else [ if ( scalar(@$res) == ...)]
} ## end if ( !defined($assetId...))
elsif ( $assetId ne 'new' ) {
$self ||= WebGUI::Asset->newById( $session, $assetId );
if ( !defined($self) ) {
$session->errorHandler->error( __PACKAGE__ . " - failed to instanciate asset with assetId $assetId" );
}
}
my $asset = $self || $parent;
my $url = $asset->getUrl('func=editSubmissionFormSave');
my $newform = WebGUI::HTMLForm->new( $session, action => $url );
$newform->hidden( name => 'assetId', value => $assetId );
my @fieldNames = qw/title description startDate duration seatsAvailable location/;
my $fields;
my @defs = reverse @{ WebGUI::Asset::EMSSubmission->definition($session) };
my $formDescription = $params->{formDescription} || $self ? $self->getFormDescription : { };
for my $fieldId ( @fieldNames ) {
next if $fieldId eq 'submissionStatus';
my $field = $fields->{$fieldId};
$newform->yesNo(
label => $field->{label},
name => $field->{fieldId} . '_yesNo',
defaultValue => 0,
value => $formDescription->{$field->{fieldId}},
);
}
$newform->submit;
my $title = $assetId eq 'new' ? $i18n->get('new form') || 'new' : $asset->get('title');
if( $params->{asHashRef} ) {
; # not setting mimie type
} elsif( $session->form->get('asJson') ) {
$session->http->setMimeType( 'application/json' );
} else {
$session->http->setMimeType( 'text/html' );
}
my $content = $asset->processTemplate({
errors => $params->{errors} || [],
isDynamic => $session->form->get('asJson') || 0,
backUrl => $parent->getUrl,
pageTitle => $title,
pageForm => $newform->print,
},$parent->get('eventSubmissionTemplateId'));
WebGUI::Macro::process( $session, \$content );
if( $params->{asHashRef} ) {
return { text => $content, title => $title };
} elsif( $session->form->get('asJson') ) {
return JSON->new->encode( { text => $content, title => $title, id => $assetId ne 'new' ? $assetId : 'new' . rand } );
} else {
return $asset->ems->processStyle( $content );
}
for my $def (@defs) {
foreach my $fieldName (@fieldNames) {
my $properties = $def->{properties};
if ( defined $properties->{$fieldName} ) {
$fields->{$fieldName} = { %{ $properties->{$fieldName} } }; # a simple first level copy
# field definitions don't contain their own name, we will need it later on
$fields->{$fieldName}{fieldId} = $fieldName;
}
}
}
for my $metaField ( @{ $parent->getEventMetaFields } ) {
push @fieldNames, $metaField->{fieldId};
$fields->{ $metaField->{fieldId} } = {%$metaField}; # a simple first level copy
# meta fields call it data type, we copy it to simplify later on
$fields->{ $metaField->{fieldId} }{fieldType} = $metaField->{dataType};
$fields->{ $metaField->{fieldId} }{hoverHelp} = $metaField->{helpText};
}
$newform->hidden( name => 'fieldNames', value => join( ' ', @fieldNames ) );
@defs = reverse @{ WebGUI::Asset::EMSSubmissionForm->definition($session) };
for my $def (@defs) {
my $properties = $def->{properties};
for my $fieldName (
qw/title menuTitle url description canSubmitGroupId daysBeforeCleanup
deleteCreatedItems submissionDeadline pastDeadlineMessage/
)
{
if ( defined $properties->{$fieldName} ) {
my %fieldParams = %{ $properties->{$fieldName} };
$fieldParams{name} = $fieldName;
$fieldParams{value} = $params->{$fieldName} || $self ? $self->get($fieldName) : undef;
$newform->dynamicField(%fieldParams);
}
}
}
}
my $formDescription = $params->{formDescription} || $self ? $self->getFormDescription : {};
for my $fieldId (@fieldNames) {
next if $fieldId eq 'submissionStatus';
my $field = $fields->{$fieldId};
$newform->yesNo(
label => $field->{label},
name => $field->{fieldId} . '_yesNo',
defaultValue => 0,
value => $formDescription->{ $field->{fieldId} },
);
}
$newform->submit;
my $title = $assetId eq 'new' ? $i18n->get('new form') || 'new' : $asset->get('title');
if ( $params->{asHashRef} ) {
; # not setting mimie type
}
elsif ( $session->form->get('asJson') ) {
$session->http->setMimeType('application/json');
}
else {
$session->http->setMimeType('text/html');
}
my $content = $asset->processTemplate( {
errors => $params->{errors} || [],
isDynamic => $session->form->get('asJson') || 0,
backUrl => $parent->getUrl,
pageTitle => $title,
pageForm => $newform->print,
},
$parent->get('eventSubmissionTemplateId')
);
WebGUI::Macro::process( $session, \$content );
if ( $params->{asHashRef} ) {
return { text => $content, title => $title };
}
elsif ( $session->form->get('asJson') ) {
return JSON->new->encode(
{ text => $content, title => $title, id => $assetId ne 'new' ? $assetId : 'new' . rand } );
}
else {
return $asset->ems->processStyle($content);
}
} ## end sub www_editSubmissionForm
#-------------------------------------------------------------------
@ -491,14 +499,15 @@ We overload the update method from WebGUI::Asset in order to handle file system
=cut
sub update {
around update => sub {
my $orig = shift;
my $self = shift;
my $properties = shift;
if( ref $properties->{formDescription} eq 'HASH' ) {
$properties->{formDescription} = JSON->new->encode($properties->{formDescription});
}
$self->SUPER::update({%$properties, isHidden => 1});
}
$self->$orig({%$properties});
};
1;

View file

@ -435,7 +435,7 @@ sub getFirstFile {
my $allFileIds = $self->getParent->getFileIds;
return undef unless @{ $allFileIds };
return WebGUI::Asset->newByDynamicClass( $self->session, shift @{ $allFileIds });
return WebGUI::Asset->newById( $self->session, shift @{ $allFileIds });
}
#----------------------------------------------------------------------------
@ -452,7 +452,7 @@ sub getLastFile {
my $allFileIds = $self->getParent->getFileIds;
return undef unless @{ $allFileIds };
return WebGUI::Asset->newByDynamicClass( $self->session, pop @{ $allFileIds });
return WebGUI::Asset->newById( $self->session, pop @{ $allFileIds });
}
#----------------------------------------------------------------------------
@ -469,7 +469,7 @@ sub getNextFile {
return $self->{_nextFile} if $self->{_nextFile};
my $nextId = $self->getParent->getNextFileId( $self->getId );
return undef unless $nextId;
$self->{_nextFile} = WebGUI::Asset->newByDynamicClass( $self->session, $nextId );
$self->{_nextFile} = WebGUI::Asset->newById( $self->session, $nextId );
return $self->{_nextFile};
}
@ -487,7 +487,7 @@ sub getPreviousFile {
return $self->{_previousFile} if $self->{_previousFile};
my $previousId = $self->getParent->getPreviousFileId( $self->getId );
return undef unless $previousId;
$self->{_previousFile} = WebGUI::Asset->newByDynamicClass( $self->session, $previousId );
$self->{_previousFile} = WebGUI::Asset->newById( $self->session, $previousId );
return $self->{_previousFile};
}

View file

@ -93,7 +93,6 @@ override applyConstraints => sub {
# Update the asset's size and make a thumbnail
my $maxImageSize = $gallery->imageViewSize
|| $self->session->setting->get("maxImageSize");
my $parameters = $self->parameters;
my $storage = $self->getStorageLocation;
my $file = $self->filename;
@ -214,7 +213,7 @@ sub getExifData {
=head2 getResolutions ( )
Get an array reference of download resolutions that exist for this image.
Does not include the web view image or the thumbnail image.
Does not include the web view image or the thumbnail images.
=cut
@ -223,7 +222,7 @@ sub getResolutions {
my $storage = $self->getStorageLocation;
# Return a list not including the web view image.
return [ sort { $a <=> $b } grep { $_ ne $self->filename } @{ $storage->getFiles } ];
return [ sort { $a cmp $b } grep { $_ ne $self->filename } @{ $storage->getFiles } ];
}
#----------------------------------------------------------------------------

View file

@ -93,7 +93,7 @@ override applyConstraints => sub {
my $self = shift;
my $options = shift;
super();
my $maxImageSize = $options->{maxImageSize} || $self->maxImageSize || $self->session->setting->get("maxImageSize");
my $maxImageSize = $options->{maxImageSize} || $self->session->setting->get("maxImageSize");
my $thumbnailSize = $options->{thumbnailSize} || $self->thumbnailSize || $self->session->setting->get("thumbnailSize");
my $storage = $self->getStorageLocation;
my $file = $self->filename;
@ -244,7 +244,7 @@ sub view {
$var{fileIcon} = $self->getFileIconUrl;
$var{thumbnail} = $self->getThumbnailUrl;
$var{annotateJs} = $crop_js . $domMe;
$var{parameters} .= sprintf("id=%s", $self->getId);
$var{parameters} .= sprintf(q{ id="%s"}, $self->getId);
my $out = $self->processTemplate(\%var,undef,$self->{_viewTemplate});
if (!$session->var->isAdminOn && $self->cacheTimeout > 10) {
$cache->set( $cacheKey, $out, $self->get("cacheTimeout") );

View file

@ -410,12 +410,12 @@ Fetches the last post in this thread, otherwise, returns itself.
sub getLastPost {
my $self = shift;
my $lastPostId = $self->lastPostId;
my $lastPost;
if ($lastPostId) {
$lastPost = WebGUI::Asset::Post->newById($self->session, $lastPostId);
}
return $lastPost if (defined $lastPost);
return $self;
return $self unless $lastPostId;
my $lastPost = eval { WebGUI::Asset->newById($self->session, $lastPostId); };
if (Exception::Class->caught()) {
return $self;
}
return $lastPost;
}
#-------------------------------------------------------------------

View file

@ -497,9 +497,9 @@ sub getOverrides {
my $orig = $self->getShortcutOriginal;
if (defined $orig) {
unless ( exists $orig->{_propertyDefinitions}) {
my %properties;
foreach my $definition (@{$orig->definition($self->session)}) {
%properties = (%properties, %{$definition->{properties}});
my %properties;
foreach my $property ($orig->getProperties) {
$properties{$property} = $orig->getFormProperties($property);
}
$orig->{_propertyDefinitions} = \%properties;
}
@ -1150,14 +1150,7 @@ sub www_editOverride {
);
# Fetch the parameters for the dynamic field.
my (%params, %props);
foreach my $def (@{$self->getShortcutOriginal->definition($self->session)}) {
%props = (%props,%{$def->{properties}});
}
foreach my $key (keys %{$props{$fieldName}}) {
next if ($key eq "tab");
$params{$key} = $props{$fieldName}{$key};
}
my %params = %{ $self->getShortcutOriginal->getFormProperties($fieldName) };
$params{value} = $origValue;
$params{name} = $fieldName;
$params{label} = $params{label} || $i18n->get("Edit Field Directly");

View file

@ -59,7 +59,7 @@ property vendorId => (
property taxConfiguration => (
noFormPost => 1,
fieldType => 'hidden',
defaultValue => '{}',
default => '{}',
);
property shipsSeparately => (
tab => 'shop',

View file

@ -34,6 +34,7 @@ property snippet => (
label => ['assetName','Asset_Snippet'],
hoverHelp => ['snippet description','Asset_Snippet'],
default => undef,
trigger => \&_trigger_snippet,
);
sub _trigger_snippet {
my $self = shift;

View file

@ -289,8 +289,8 @@ sub getTemplateVars {
});
PAGE: foreach my $assetId (@{ $paginator->getPageData }) {
next PAGE if $assetId->{assetId} eq $self->getId;
my $asset = WebGUI::Asset->newByDynamicClass($session, $assetId->{assetId});
next PAGE unless $asset;
my $asset = eval { WebGUI::Asset->newById($session, $assetId->{assetId}); };
next PAGE if Exception::Class->caught();
push @keyword_pages, {
title => $asset->getTitle,
url => $asset->getUrl,

View file

@ -836,9 +836,9 @@ sub www_addSubmission {
}
}
}
$form = WebGUI::Asset->newByDynamicClass($session,$formId);
if (!defined $form) {
$session->errorHandler->error(__PACKAGE__ . " - failed to instanciate asset with assetId $formId");
$form = eval { WebGUI::Asset->newById($session, $formId); };
if (Exception::Class->caught()) {
$session->errorHandler->error(__PACKAGE__ . " - failed to instanciate asset with assetId $formId");
}
return $form->www_addSubmission;
}
@ -1351,7 +1351,7 @@ sub www_getAllSubmissions {
$tableInfo->{'records' } = [];
for my $record ( @{ $p->getPageData } ) {
my $asset = WebGUI::Asset->newByDynamicClass( $session, $record->{assetId} );
my $asset = WebGUI::Asset->newById( $session, $record->{assetId} );
my $lastReplyBy = $asset->get("lastReplyBy");
if ($lastReplyBy) {

View file

@ -551,7 +551,7 @@ sub getAlbumIds {
my $orderBy = $options->{ orderBy }
? $options->{ orderBy }
: $self->viewListOrderBy
? join( " ", $self->getviewListOrderBy, $self->viewListOrderDirection )
? join( " ", $self->viewListOrderBy, $self->viewListOrderDirection )
: "lineage ASC"
;

View file

@ -47,7 +47,7 @@ use Carp qw( croak );
use File::Find;
use File::Spec;
use File::Temp qw{ tempdir };
use JSON ();
use JSON qw();
use WebGUI::International;
use WebGUI::HTML;
use WebGUI::ProgressBar;
@ -1171,7 +1171,7 @@ sub www_ajax {
my $result;
# Get arguments encoded in json format
my $args = decode_json($form->get("args"));
my $args = JSON::from_json($form->get("args"));
# Log some debug information
$session->log->debug("Ajax service called with args=" . $form->get("args"));
@ -1198,7 +1198,7 @@ sub www_ajax {
$result->{ err } = -1 if $result->{ errMessage };
# Return results encoded in json format
return encode_json( $result );
return JSON::to_json( $result );
}
@ -1247,10 +1247,10 @@ sub _moveFileAjaxRequest {
# Get Id of target photo and instantiate asset
my $targetId = $args->{target};
my $target = WebGUI::Asset->newByDynamicClass( $session, $targetId );
my $target = eval { WebGUI::Asset->newById( $session, $targetId ); };
# Return if target photo could not be instantiated
unless ( $target ) {
if ( Exception::Class->caught() ) {
$session->log->error("Couldn't move file '$targetId' because we couldn't instantiate it.");
$result{ errMessage } = "ID of target file seems to be invalid.";
return \%result;
@ -1266,10 +1266,10 @@ sub _moveFileAjaxRequest {
# Instantiate file with ID in before/after argument
$destId = $args->{before} ? $args->{before} : $args->{after};
$dest = WebGUI::Asset->newByDynamicClass( $session, $destId );
$dest = eval { WebGUI::Asset->newById( $session, $destId ); };
# Return if destination file could not be instantiated
unless ( $dest ) {
if ( Exception::Class->caught() ) {
$session->log->error("Couldn't move file '$targetId' before/after file '$destId' because we couldn't instantiate the latter.");
$result{ errMessage } = "ID in before/after argument seems to be invalid.";
return \%result;
@ -1286,14 +1286,14 @@ sub _moveFileAjaxRequest {
# Get ID of next sibling
$destId = $self->getNextFileId( $destId );
# Instantiate next sibling
$dest = WebGUI::Asset->newByDynamicClass( $session, $destId );
$dest = WebGUI::Asset->newById( $session, $destId );
}
# Check for use of before argument when increasing the rank
if ( $args->{before} && $target->getRank() < $dest->getRank() ) {
# Get ID of previous sibling
$destId = $self->getPreviousFileId( $destId );
# Instantiate previous sibling
$dest = WebGUI::Asset->newByDynamicClass( $session, $destId );
$dest = WebGUI::Asset->newById( $session, $destId );
}
# Update rank of target photo

View file

@ -265,8 +265,7 @@ part of the C<groupToAdd> group.
=cut
sub canEdit {
my $orig = shift;
override canEdit => sub {
my $self = shift;
my $userId = shift || $self->session->user->userId;
@ -276,14 +275,8 @@ sub canEdit {
&& $form->get( 'class' )->isa( 'WebGUI::Asset::MatrixListing' ) ) {
return $self->canAddMatrixListing();
}
else {
if ($userId eq $self->ownerUserId) {
return 1;
}
my $user = WebGUI::User->new($self->session, $userId);
return $user->isInGroup($self->groupIdEdit);
}
}
return super();
};
#-------------------------------------------------------------------

View file

@ -15,6 +15,7 @@ use HTML::Entities;
use WebGUI::Exception;
use WebGUI::HTML;
use WebGUI::International;
use LWP::UserAgent;
use Moose;
use WebGUI::Definition::Asset;
@ -216,6 +217,7 @@ sub getRssFeedItems {
author => $item->author,
guid => $item->guid,
);
push @items, \%feed_item;
}
return \@items;
}
@ -293,11 +295,12 @@ See WebGUI::Asset::prepareView() for details.
=cut
sub prepareView {
around prepareView => sub {
my $orig = shift;
my $self = shift;
$self->next::method;
my $template = WebGUI::Asset::Template->newById($self->session, $self->templateId);
if (!$template) {
$self->$orig();
my $template = eval { WebGUI::Asset->newById($self->session, $self->templateId); };
if (Exception::Class->caught()) {
WebGUI::Error::ObjectNotFound::Template->throw(
error => qq{Template not found},
templateId => $self->templateId,
@ -306,7 +309,7 @@ sub prepareView {
}
$template->prepare($self->getMetaDataAsTemplateVariables);
$self->{_viewTemplate} = $template;
}
};
#-------------------------------------------------------------------
@ -358,63 +361,11 @@ See WebGUI::Asset::Wobject::www_view() for details.
=cut
sub www_view {
my $self = shift;
$self->session->http->setCacheControl($self->cacheTimeout);
$self->next::method(@_);
}
#-------------------------------------------------------------------
=head2 www_viewRSS090 ( )
Deprecated. Use www_viewRss() instead.
=cut
sub www_viewRSS090 {
my $self = shift;
return $self->www_viewRss;
}
#-------------------------------------------------------------------
=head2 www_viewRSS091 ( )
Deprecated. Use www_viewRss() instead.
=cut
sub www_viewRSS091 {
my $self = shift;
return $self->www_viewRss;
}
#-------------------------------------------------------------------
=head2 www_viewRSS10 ( )
Deprecated. Use www_viewRdf() instead.
=cut
sub www_viewRSS10 {
my $self = shift;
return $self->www_viewRdf;
}
#-------------------------------------------------------------------
=head2 www_viewRSS20 ( )
Deprecated. Use www_viewRss() instead.
=cut
sub www_viewRSS20 {
my $self = shift;
return $self->www_viewRss;
}
override www_view => sub {
my $self = shift;
$self->session->http->setCacheControl($self->cacheTimeout);
super();
};
__PACKAGE__->meta->make_immutable;
1;