Restore addAttachments and restoreAttachments to the 7.x series. In 8.x, the object property will act like an arrayref, so they won't be necessary. Fixes bug #11861.

This commit is contained in:
Colin Kuskie 2010-09-14 10:42:59 -07:00
parent 1131a5b4bc
commit 2eed74891a
3 changed files with 84 additions and 1 deletions

View file

@ -6,6 +6,7 @@
- fixed #11788: Calendar - Can't enter Midnight - Broke page layout - fixed #11788: Calendar - Can't enter Midnight - Broke page layout
- fixed #11855: Purging Shortcut from Trash causes loop - fixed #11855: Purging Shortcut from Trash causes loop
- fixed #11865: URL with slash no longer works. - fixed #11865: URL with slash no longer works.
- fixed #11861: addAttachment method removed from WebGUI 7 thus breaking the API
7.10.0 7.10.0
- fixed #11812: Checking www_ajaxSave's response in the cart js, urlencoding post parameters - fixed #11812: Checking www_ajaxSave's response in the cart js, urlencoding post parameters

View file

@ -48,6 +48,34 @@ These methods are available from this class:
#------------------------------------------------------------------- #-------------------------------------------------------------------
=head2 addAttachments ( new_attachments )
Adds attachments to this template. New attachments are added to the end of the current set of
attachments.
=head3 new_attachments
An arrayref of hashrefs, where each hashref should have at least url and type. All
other keys will be ignored.
=cut
sub addAttachments {
my ($self, $new_attachments) = @_;
my $attachments = $self->getAttachments();
foreach my $a (@{ $new_attachments }) {
push @{ $attachments }, {
url => $a->{url},
type => $a->{type},
};
}
my $json = JSON->new->encode( $attachments );
$self->update({ attachmentsJson => $json, });
}
#-------------------------------------------------------------------
=head2 cut ( ) =head2 cut ( )
Extend the base method to handle cutting the User Function Style template and destroying your site. Extend the base method to handle cutting the User Function Style template and destroying your site.
@ -704,6 +732,32 @@ sub purge {
#------------------------------------------------------------------- #-------------------------------------------------------------------
=head2 removeAttachments ( urls )
Removes attachments.
=head3 urls
C<urls> is an arrayref of URLs to remove. If C<urls>
is not defined, will remove all attachments for this revision.
=cut
sub removeAttachments {
my ($self, $urls) = @_;
my @attachments = ();
if ($urls) {
@attachments = grep { !isIn($_->{url}, @{ $urls }) } @{ $self->getAttachments() };
}
my $json = JSON->new->encode( \@attachments );
$self->update({ attachmentsJson => $json, });
}
#-------------------------------------------------------------------
=head2 update =head2 update
Override update from Asset.pm to handle backwards compatibility with the old Override update from Asset.pm to handle backwards compatibility with the old

View file

@ -16,7 +16,7 @@ use WebGUI::Test;
use WebGUI::Session; use WebGUI::Session;
use WebGUI::Asset::Template; use WebGUI::Asset::Template;
use Exception::Class; use Exception::Class;
use Test::More tests => 53; # increment this value for each test you create use Test::More tests => 57; # increment this value for each test you create
use Test::Deep; use Test::Deep;
use Data::Dumper; use Data::Dumper;
use Test::Exception; use Test::Exception;
@ -133,6 +133,34 @@ is($att4->[1]->{url}, 'bar', 'rev still has bar');
is($att4->[2]->{url}, 'baz', 'rev does have new thing') or diag( $template3rev->get('attachmentsJson') ); is($att4->[2]->{url}, 'baz', 'rev does have new thing') or diag( $template3rev->get('attachmentsJson') );
is(@$att4, 3, 'rev is proper size'); is(@$att4, 3, 'rev is proper size');
$template3rev->addAttachments([{ url => 'box', type => 'headScript', }, { url => 'bux', type => 'headScript', }, ]);
cmp_deeply(
[ map { $_->{url} } @{ $template3rev->getAttachments('headScript') } ],
[qw/foo bar baz box bux/],
'addAttachments appends to the end'
) or diag $template3rev->get('attachmentsJson');
$template3rev->removeAttachments(['box']);
cmp_deeply(
[ map { $_->{url} } @{ $template3rev->getAttachments('headScript') } ],
[qw/foo bar baz bux/],
'removeAttachments will remove urls by exact URL match'
) or diag $template3rev->get('attachmentsJson');
$template3rev->removeAttachments(['bu']);
cmp_deeply(
[ map { $_->{url} } @{ $template3rev->getAttachments('headScript') } ],
[qw/foo bar baz bux/],
'... checking that it is not treated like a wildcard'
) or diag $template3rev->get('attachmentsJson');
$template3rev->removeAttachments();
cmp_deeply(
[ map { $_->{url} } @{ $template3rev->getAttachments('headScript') } ],
[ ],
'... checking that all attachments are removed'
) or diag $template3rev->get('attachmentsJson');
$template3rev->purgeRevision(); $template3rev->purgeRevision();
## Check how templates in the trash and clipboard are handled. ## Check how templates in the trash and clipboard are handled.