fixes to content wizard

This commit is contained in:
Doug Bell 2010-05-06 22:51:06 -05:00
parent 3c17dafeb4
commit ea1a020ab5
2 changed files with 81 additions and 39 deletions

View file

@ -2053,50 +2053,42 @@ anything.
=cut
sub processEditForm {
my $self = shift;
my %data;
my $form = $self->session->form;
my $overrides = $self->session->config->get("assets/".$self->get("className")."/fields");
my $self = shift;
my %data;
my $form = $self->session->form;
my $overrides = $self->session->config->get( "assets/" . $self->get("className") . "/fields" );
foreach my $property ($self->getProperties) {
my %params = %{$self->getFormProperties($property)};
foreach my $property ( $self->getProperties ) {
my $fieldType = $self->meta->find_attribute_by_name($property)->fieldType;
my $fieldOverrides = $overrides->{$property} || {};
my $fieldHash = {
tab => "properties",
%{ $self->getFormProperties($property) },
%{$overrides},
name => $property,
value => $self->$property,
};
next if ( $fieldHash->{noFormPost} );
# process the form element
$data{$property} = $form->process( $property, $fieldType, $fieldHash->{defaultValue}, $fieldHash );
} ## end foreach my $property ( $self...)
# apply config file changes
foreach my $key (keys %{$overrides->{$property}}) {
$params{$key} = $overrides->{$property}{$key};
}
# deal with properties that can't be posted through the form
if ($params{noFormPost}) {
if ($form->process("assetId") eq "new" && $self->get($property) eq "") {
$data{$property} = $params{defaultValue};
}
next;
}
# process the form element
$params{name} = $property;
$params{value} = $self->$property;
$data{$property} = $form->process(
$property,
$params{fieldType},
$params{defaultValue},
\%params
);
}
$data{keywords} = $form->process("keywords");
if ($self->session->setting->get("metaDataEnabled")) {
if ( $self->session->setting->get("metaDataEnabled") ) {
my $meta = $self->getMetaDataFields;
foreach my $field (keys %{$meta}) {
my $value = $form->process("metadata_".$field, $meta->{$field}{fieldType}, $meta->{$field}{defaultValue});
$self->updateMetaData($field, $value);
}
foreach my $field ( keys %{$meta} ) {
my $value
= $form->process( "metadata_" . $field, $meta->{$field}{fieldType}, $meta->{$field}{defaultValue} );
$self->updateMetaData( $field, $value );
}
}
$self->session->db->beginTransaction;
$self->update(\%data);
$self->session->db->commit;
$self->session->db->beginTransaction;
$self->update( \%data );
$self->session->db->commit;
return undef;
}
} ## end sub processEditForm
#-------------------------------------------------------------------
@ -2601,7 +2593,7 @@ sub www_editSave {
##If this is a new asset (www_add), the parent may be locked. We should still be able to add a new asset.
my $isNewAsset = $session->form->process("assetId") eq "new" ? 1 : 0;
return $session->privilege->locked() if (!$self->canEditIfLocked and !$isNewAsset);
return $session->privilege->insufficient() unless $self->canEdit && $session->form->validToken;
return $session->privilege->insufficient() unless $self->canEdit;
if ($self->session->config("maximumAssets")) {
my ($count) = $self->session->db->quickArray("select count(*) from asset");
my $i18n = WebGUI::International->new($self->session, "Asset");

View file

@ -308,6 +308,56 @@ sub t_05_purge : Test(3) {
ok ! $exists_in_table, 'assetId removed from all asset tables';
}
sub cut_paste : Test(5) {
note "cut";
my $test = shift;
my $session = $test->session;
my ($tag, $asset, @parents) = $test->getAnchoredAsset();
ok $asset->cut, 'cut returns true if it was cut';
is $asset->state, 'clipboard', 'asset state updated';
my $session_asset = $session->asset();
$session->asset($parents[-1]);
ok $asset->canPaste, 'canPaste: allowed to paste here';
ok $parents[-1]->paste($asset->assetId), 'paste returns true when it pastes';
$asset_prime = $asset->cloneFromDb;
is $asset_prime->state, 'published', 'asset state updated';
$session->asset($session_asset);
}
sub addRevision : Tests {
note "addRevision";
my ( $test ) = @_;
my $session = $test->session;
my ( $tag, $asset, @parents ) = $test->getAnchoredAsset();
$tag->setWorking;
my $newRevision = $asset->addRevision( { title => "Newly Revised Title" }, $asset->revisionDate+2 );
isa_ok( $newRevision, Scalar::Util::blessed( $asset ), "addRevision returns new revision of asset object" );
is( $newRevision->title, "Newly Revised Title", "properties set correctly" );
is( $newRevision->revisionDate, $asset->revisionDate+2, 'revisionDate set correctly' );
is( $newRevision->tagId, $tag->getId, "Added to existing working tag" );
$newRevision->purgeRevision;
}
sub www_editSave : Tests {
note "www_editSave";
my ( $test ) = @_;
my $session = $test->session;
my ( $tag, $asset, @parents ) = $test->getAnchoredAsset();
$tag->setWorking;
$session->request->setup_body({
title => "Newly Saved Title",
} );
$asset->www_editSave;
# Get the newly-created revision of the asset
my $newRevision = WebGUI::Asset->newPending( $session, $asset->getId );
ok( $newRevision->tagId, 'new revision has a tag' );
is( $newRevision->tagId, $tag->getId, 'new revision tagId is current working tag' );
}
1;
__END__