diff --git a/comp/widgets/container_prof/edit.html b/comp/widgets/container_prof/edit.html index dba3b9f36..093864f6e 100644 --- a/comp/widgets/container_prof/edit.html +++ b/comp/widgets/container_prof/edit.html @@ -12,6 +12,8 @@ # COUNT FOR REORDER JAVA SCRIPT my $total = scalar @tiles; +my $diff = $total ? $tiles[-1]->get_place - $total + 1 : 0; +my $ord_vals = [ map { [ $_ - 1, $_ ] } 1..$total ]; my $x=0; @@ -181,23 +183,14 @@ % # ORDER TABLE CELL -% my $f_key; -% if ($dt->is_container) { -% $f_key = "$widget|reorder_con" . $dt->get_id(); -% } else { -% $f_key = "$widget|reorder_dat" . $dt->get_id(); -% } -% my $vals = []; -% foreach (1 .. $total) { -% my $val = $_ - 1; -% push @$vals, [$val, $_]; -%} +% my $f_key = "$widget|reorder_" . ($dt->is_container ? 'con' : 'dat') . +% $dt->get_id; -<& '/widgets/profile/displayFormElement.mc', +<& /widgets/profile/displayFormElement.mc, key => $f_key, - vals => { value => $dt->get_place(), + vals => { value => $dt->get_place - $diff, props => { type => 'select', - vals => $vals, }, + vals => $ord_vals, }, js => 'onChange="reorder(this, \'theForm\')"' }, useTable => 0 @@ -211,9 +204,9 @@   % } elsif ($dt->is_container) { % # START IF CONTAINER - + % } else { - + % } diff --git a/lib/Bric/Changes.pod b/lib/Bric/Changes.pod index c21376b3a..b3ca211d5 100644 --- a/lib/Bric/Changes.pod +++ b/lib/Bric/Changes.pod @@ -97,6 +97,11 @@ The installer now checks to make sure that mod_perl is statically compiled into Apache, since weird things tend to happen when Bricolage uses a DSO mod_perl. [David] +=item * + +Fixed reordering code for subelements. The select list for subelements should +now always have an appropriate value. [David] + =back =head1 VERSION 1.4.5 diff --git a/lib/Bric/SOAP/Util.pm b/lib/Bric/SOAP/Util.pm index 336ab0842..f7a71174b 100644 --- a/lib/Bric/SOAP/Util.pm +++ b/lib/Bric/SOAP/Util.pm @@ -31,15 +31,15 @@ Bric::SOAP::Util - utility class for the Bric::SOAP classes =head1 VERSION -$Revision: 1.11.2.7 $ +$Revision: 1.11.2.8 $ =cut -our $VERSION = (qw$Revision: 1.11.2.7 $ )[-1]; +our $VERSION = (qw$Revision: 1.11.2.8 $ )[-1]; =head1 DATE -$Date: 2002-11-21 20:38:11 $ +$Date: 2002-12-06 06:50:31 $ =head1 SYNOPSIS @@ -174,23 +174,26 @@ sub serialize_elements { # output element data $writer->startTag("elements"); my $element = $object->get_tile(); - my @e = $element->get_elements; + my $elems = $element->get_elements; + my $diff = $elems->[-1]->get_place - scalar @$elems + 1; # first serialize all data elements - foreach my $e (@e) { + foreach my $e (@$elems) { next if $e->is_container; push(@related, _serialize_tile(writer => $writer, element => $e, args => $options{args}, + diff => $diff, )); } # then all containers - foreach my $e (@e) { + foreach my $e (@$elems) { next unless $e->is_container; push(@related, _serialize_tile(writer => $writer, - element => $e, - args => $options{args}, + element => $e, + args => $options{args}, + diff => $diff, )); } @@ -345,11 +348,12 @@ sub _serialize_tile { my %options = @_; my $element = $options{element}; my $writer = $options{writer}; + my $diff = $options{diff} || 0; my @related; if ($element->is_container) { my %attr = (element => $element->get_element_name, - order => $element->get_place); + order => $element->get_place - $diff); my @e = $element->get_elements(); # look for related stuff and tag relative if we'll include in @@ -410,11 +414,11 @@ sub _serialize_tile { if (defined $data and length $data) { $writer->dataElement("data", $data, element => $element->get_element_name, - order => $element->get_place); + order => $element->get_place - $diff); } else { $writer->emptyTag("data", element => $element->get_element_name, - order => $element->get_place); + order => $element->get_place - $diff); } }