diff --git a/lib/WebGUI/Asset/Wobject/Navigation.pm b/lib/WebGUI/Asset/Wobject/Navigation.pm
index 6b5e2b66d..9a5372301 100644
--- a/lib/WebGUI/Asset/Wobject/Navigation.pm
+++ b/lib/WebGUI/Asset/Wobject/Navigation.pm
@@ -28,12 +28,15 @@ define tableName => 'Navigation';
property templateId => (
label => ['1096', 'Asset_Navigation'],
hoverHelp => ['1096 description', 'Asset_Navigation'],
+ tab => 'display',
fieldType => "template",
default => 'PBtmpl0000000000000048',
+ namespace => 'Navigation',
);
property mimeType => (
label => ['mimeType', 'Asset_Navigation'],
hoverHelp => ['mimeType description', 'Asset_Navigation'],
+ tab => 'display',
fieldType => "mimeType",
default => 'text/html',
);
@@ -69,21 +72,25 @@ property showSystemPages => (
label => [30, 'Asset_Navigation'],
fieldType => 'yesNo',
default => 0,
+ tab => "display",
);
property showHiddenPages => (
label => [31, 'Asset_Navigation'],
fieldType => 'yesNo',
default => 0,
+ tab => "display",
);
property showUnprivilegedPages => (
label => [32, 'Asset_Navigation'],
fieldType => 'yesNo',
default => 0,
+ tab => "display",
);
property reversePageLoop => (
label => ['reverse page loop', 'Asset_Navigation'],
fieldType => 'yesNo',
default => 0,
+ tab => "display",
);
#-------------------------------------------------------------------
@@ -95,190 +102,197 @@ Manually build the edit form due to javascript elements.
=cut
override getEditForm => sub {
- my $self = shift;
- my $tabform = super();
- my $i18n = WebGUI::International->new($self->session, "Asset_Navigation");
- $tabform->getTab("display")->template(
- -value=>$self->templateId,
- -namespace=>"Navigation",
- -label=>$i18n->get(1096),
- -hoverHelp=>$i18n->get('1096 description'),
- );
- $tabform->getTab("display")->mimeType(
- -value=>$self->mimeType,
- -name=>"mimeType",
- -label=>$i18n->get('mimeType'),
- -hoverHelp=>$i18n->get('mimeType description'),
- );
- $tabform->hidden({
- name=>"returnUrl",
- value=>$self->session->form->process("returnUrl")
- });
- my ($descendantsChecked, $ancestorsChecked, $selfChecked, $pedigreeChecked, $siblingsChecked);
- my @assetsToInclude = split("\n",$self->assetsToInclude);
- my $afterScript;
- foreach my $item (@assetsToInclude) {
- if ($item eq "self") {
- $selfChecked = 1;
- } elsif ($item eq "descendants") {
- $descendantsChecked = 1;
- $afterScript = "displayNavEndPoint = false;";
- } elsif ($item eq "ancestors") {
- $ancestorsChecked = 1;
- } elsif ($item eq "siblings") {
- $siblingsChecked = 1;
- } elsif ($item eq "pedigree") {
- $pedigreeChecked = 1;
- }
- }
- $tabform->getTab("properties")->selectBox(
- -name=>"startType",
- -options=>{
- specificUrl=>$i18n->get('Specific URL'),
- relativeToCurrentUrl=>$i18n->get('Relative To Current URL'),
- relativeToRoot=>$i18n->get('Relative To Root')
- },
- -value=>[$self->startType],
- -label=>$i18n->get("Start Point Type"),
- -hoverHelp=>$i18n->get("Start Point Type description"),
- -id=>"navStartType",
- -extras=>'onchange="changeStartPoint()"'
- );
- $tabform->getTab("properties")->readOnly(
- -label=>$i18n->get("Start Point"),
- -hoverHelp=>$i18n->get("Start Point description"),
- -value=>'
'
- );
- my %options = ();
- tie %options, 'Tie::IxHash';
- %options = (
- '1'=>'../ (-1)',
- '2'=>'../../ (-2)',
- '3'=>'../../../ (-3)',
- '4'=>'../../../../ (-4)',
- '5'=>'../../../../../ (-5)',
- '55'=>$i18n->get('Infinity')
- );
- $tabform->getTab("properties")->raw(
- '| '.$i18n->get("Ancestor End Point").' | '
- .WebGUI::Form::selectBox($self->session,{
- name=>"ancestorEndPoint",
- value=>[$self->ancestorEndPoint],
- options=>\%options
- })
- .' |
'
- );
- $tabform->getTab("properties")->readOnly(
- -label=>$i18n->get("Relatives To Include"),
- -hoverHelp=>$i18n->get("Relatives To Include description"),
- -value=>WebGUI::Form::checkbox($self->session,{
- checked=>$ancestorsChecked,
- name=>"assetsToInclude",
- extras=>'onchange="toggleAncestorEndPoint()"',
- value=>"ancestors"
- }).$i18n->get('Ancestors').'
'
- .WebGUI::Form::checkbox($self->session,{
- checked=>$selfChecked,
- name=>"assetsToInclude",
- value=>"self"
- }).$i18n->get('Self').'
'
- .WebGUI::Form::checkbox($self->session,{
- checked=>$siblingsChecked,
- name=>"assetsToInclude",
- value=>"siblings"
- }).$i18n->get('Siblings').'
'
- .WebGUI::Form::checkbox($self->session,{
- checked=>$descendantsChecked,
- name=>"assetsToInclude",
- value=>"descendants",
- extras=>'onchange="toggleDescendantEndPoint()"'
- }).$i18n->get('Descendants').'
'
- .WebGUI::Form::checkbox($self->session,{
- checked=>$pedigreeChecked,
- name=>"assetsToInclude",
- value=>"pedigree"
- }).$i18n->get('Pedigree').'
'
- );
- %options = ();
- tie %options, 'Tie::IxHash';
- %options = (
- '1'=>'./a/ (+1)',
- '2'=>'./a/b/ (+2)',
- '3'=>'./a/b/c/ (+3)',
- '4'=>'./a/b/c/d/ (+4)',
- '5'=>'./a/b/c/d/e/ (+5)',
- '55'=>$i18n->get('Infinity')
- );
- $tabform->getTab("properties")->raw(
- '| '.$i18n->get('Descendant End Point').' | '
- .WebGUI::Form::selectBox($self->session,{
- name=>"descendantEndPoint",
- value=>[$self->descendantEndPoint],
- options=>\%options
- })
- .' |
'
- );
- $tabform->getTab("display")->yesNo(
- -name=>'showSystemPages',
- -label=>$i18n->get(30),
- -hoverHelp=>$i18n->get('30 description'),
- -value=>$self->showSystemPages
- );
- $tabform->getTab("display")->yesNo(
- -name=>'showHiddenPages',
- -label=>$i18n->get(31),
- -hoverHelp=>$i18n->get('31 description'),
- -value=>$self->showHiddenPages
- );
- $tabform->getTab("display")->yesNo(
- -name=>'showUnprivilegedPages',
- -label=>$i18n->get(32),
- -hoverHelp=>$i18n->get('32 description'),
- -value=>$self->showUnprivilegedPages
- );
- $tabform->getTab("display")->yesNo(
- -name=>'reversePageLoop',
- -label=>$i18n->get('reverse page loop'),
- -hoverHelp => $i18n->get('reverse page loop description'),
- -value=>$self->reversePageLoop,
- );
- my $start = $self->startPoint;
- $tabform->getTab("properties")->raw("");
- return $tabform;
+ my $self = shift;
+ my $fb = super();
+ my $i18n = WebGUI::International->new($self->session, "Navigation");
+ my ( $descendantsChecked, $ancestorsChecked, $selfChecked, $pedigreeChecked, $siblingsChecked );
+ my @assetsToInclude = split( "\n", $self->assetsToInclude );
+ my $afterScript;
+ foreach my $item (@assetsToInclude) {
+ if ( $item eq "self" ) {
+ $selfChecked = 1;
+ }
+ elsif ( $item eq "descendants" ) {
+ $descendantsChecked = 1;
+ $afterScript = "displayNavEndPoint = false;";
+ }
+ elsif ( $item eq "ancestors" ) {
+ $ancestorsChecked = 1;
+ }
+ elsif ( $item eq "siblings" ) {
+ $siblingsChecked = 1;
+ }
+ elsif ( $item eq "pedigree" ) {
+ $pedigreeChecked = 1;
+ }
+ } ## end foreach my $item (@assetsToInclude)
+ $fb->getTab("properties")->addField( "selectBox",
+ name => "startType",
+ options => {
+ specificUrl => $i18n->get('Specific URL'),
+ relativeToCurrentUrl => $i18n->get('Relative To Current URL'),
+ relativeToRoot => $i18n->get('Relative To Root')
+ },
+ value => [ $self->startType ],
+ label => $i18n->get("Start Point Type"),
+ hoverHelp => $i18n->get("Start Point Type description"),
+ id => "navStartType",
+ extras => 'onchange="changeStartPoint()"'
+ );
+ $fb->getTab("properties")->addField( "ReadOnly",
+ label => $i18n->get("Start Point"),
+ hoverHelp => $i18n->get("Start Point description"),
+ value => ''
+ );
+ tie my %ancestorEndPointOptions, 'Tie::IxHash', (
+ '1' => '../ (-1)',
+ '2' => '../../ (-2)',
+ '3' => '../../../ (-3)',
+ '4' => '../../../../ (-4)',
+ '5' => '../../../../../ (-5)',
+ '55' => $i18n->get('Infinity')
+ );
+ $fb->getTab("properties")->addField( "SelectBox" =>
+ name => "ancestorEndPoint",
+ value => [ $self->ancestorEndPoint ],
+ options => \%ancestorEndPointOptions,
+ label => $i18n->get('Ancestor End Point'),
+ rowClass => 'navAncestorEnd',
+ );
+ $fb->getTab("properties")->addField( "ReadOnly" =>
+ label => $i18n->get("Relatives To Include"),
+ hoverHelp => $i18n->get("Relatives To Include description"),
+ value => WebGUI::Form::checkbox(
+ $self->session, {
+ checked => $ancestorsChecked,
+ name => "assetsToInclude",
+ extras => 'onchange="toggleAncestorEndPoint()"',
+ value => "ancestors"
+ }
+ )
+ . $i18n->get('Ancestors')
+ . '
'
+ . WebGUI::Form::checkbox(
+ $self->session, {
+ checked => $selfChecked,
+ name => "assetsToInclude",
+ value => "self"
+ }
+ )
+ . $i18n->get('Self')
+ . '
'
+ . WebGUI::Form::checkbox(
+ $self->session, {
+ checked => $siblingsChecked,
+ name => "assetsToInclude",
+ value => "siblings"
+ }
+ )
+ . $i18n->get('Siblings')
+ . '
'
+ . WebGUI::Form::checkbox(
+ $self->session, {
+ checked => $descendantsChecked,
+ name => "assetsToInclude",
+ value => "descendants",
+ extras => 'onchange="toggleDescendantEndPoint()"'
+ }
+ )
+ . $i18n->get('Descendants')
+ . '
'
+ . WebGUI::Form::checkbox(
+ $self->session, {
+ checked => $pedigreeChecked,
+ name => "assetsToInclude",
+ value => "pedigree"
+ }
+ )
+ . $i18n->get('Pedigree')
+ . '
'
+ );
+ tie my %descendantEndPointOptions, 'Tie::IxHash', (
+ '1' => './a/ (+1)',
+ '2' => './a/b/ (+2)',
+ '3' => './a/b/c/ (+3)',
+ '4' => './a/b/c/d/ (+4)',
+ '5' => './a/b/c/d/e/ (+5)',
+ '55' => $i18n->get('Infinity')
+ );
+ $fb->getTab("properties")->addField( "selectBox",
+ name => "descendantEndPoint",
+ label => $i18n->get('Descendant End Point'),
+ value => [ $self->descendantEndPoint ],
+ options => \%descendantEndPointOptions,
+ rowClass => "navDescendantEnd",
+ );
+ my $start = $self->startPoint;
+ $fb->addField( "ReadOnly",
+ value =>
+ ""
+ );
+ return $fb;
};
diff --git a/lib/WebGUI/FormBuilder/Role/HasFields.pm b/lib/WebGUI/FormBuilder/Role/HasFields.pm
index 47509487a..1503f7cd7 100644
--- a/lib/WebGUI/FormBuilder/Role/HasFields.pm
+++ b/lib/WebGUI/FormBuilder/Role/HasFields.pm
@@ -119,9 +119,17 @@ sub getFieldsRecursive {
if ( $self->DOES('WebGUI::FormBuilder::Role::HasFieldsets') ) {
# Add $self->{_fieldsets} fields
+ for my $fs ( @{$self->fieldsets} ) {
+ push @$fields, $fs->getFieldsRecursive;
+ }
}
if ( $self->DOES('WebGUI::FormBuilder::Role::HasTabs') ) {
# Add $self->{_tabs} fields
+ for my $tabset ( @{$self->tabsets} ) {
+ for my $tab ( @{$tabset->tabs} ) {
+ push @$fields, $tab->getFieldsRecursive;
+ }
+ }
}
return $fields;
diff --git a/t/tests/Test/WebGUI/Asset.pm b/t/tests/Test/WebGUI/Asset.pm
index 25aed9271..565c0a339 100644
--- a/t/tests/Test/WebGUI/Asset.pm
+++ b/t/tests/Test/WebGUI/Asset.pm
@@ -308,23 +308,7 @@ 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 {
+sub t_10_addRevision : Tests {
note "addRevision";
my ( $test ) = @_;
my $session = $test->session;
@@ -340,7 +324,7 @@ sub addRevision : Tests {
$newRevision->purgeRevision;
}
-sub getEditForm : Tests {
+sub t_11_getEditForm : Tests {
note "getEditForm";
my ( $test ) = @_;
my $session = $test->session;
@@ -351,21 +335,35 @@ sub getEditForm : Tests {
isa_ok( $f, 'WebGUI::FormBuilder' );
# assetId, className, keywords
- isa_ok( $f->getField('assetId'), 'WebGUI::Form::Guid' );
- isa_ok( $f->getField('className'), 'WebGUI::Form::ClassName' );
- isa_ok( $f->getField('keywords'), 'WebGUI::Form::Keywords' );
+ isa_ok( $f->getTab('meta')->getField('assetId'), 'WebGUI::Form::Guid' );
+ isa_ok( $f->getTab('meta')->getField('class'), 'WebGUI::Form::ClassName' );
+ isa_ok( $f->getTab('meta')->getField('keywords'), 'WebGUI::Form::Keywords' );
+
+ # Tabs
+ isa_ok( $f->getTab('properties'), 'WebGUI::FormBuilder::Tab' );
+ isa_ok( $f->getTab('display'), 'WebGUI::FormBuilder::Tab' );
+ isa_ok( $f->getTab('security'), 'WebGUI::FormBuilder::Tab' );
+ isa_ok( $f->getTab('meta'), 'WebGUI::FormBuilder::Tab' );
# Properties
+ my $properties = map { !$asset->meta->find_attribute_by_name( $_ )->noFormPost } $asset->getProperties;
+ use Data::Dumper;
+ note( Dumper $f->getFieldsRecursive );
+ exit;
+ cmp_deeply(
+ $f->getFieldsRecursive,
+ bag( map { superhashof( $asset->getFormProperties( $_ ) ) } @$properties ),
+ );
# Metadata
# Property overrides
- not_ok( $f->getField('func'), 'form must not contain "func"' );
+ ok( !$f->getField('func'), 'form must not contain "func"' );
}
-sub www_editSave : Tests {
+sub t_20_www_editSave : Tests {
note "www_editSave";
my ( $test ) = @_;
my $session = $test->session;