Skip to content

Commit

Permalink
Fixed reordering code for subelements. The select list for subelement…
Browse files Browse the repository at this point in the history
…s should

now always have an appropriate value. I'm not sure how they can get out of
order, but when they do, it can lead to problems. This should correct it. If I
find a way to duplicate the problem -- to make a story with the subelement
ordering all screwed up, I'll fix that, too!
  • Loading branch information
theory committed Dec 6, 2002
1 parent 286bad5 commit 7647e9c
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 27 deletions.
25 changes: 9 additions & 16 deletions comp/widgets/container_prof/edit.html
Expand Up @@ -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;

</%perl>
Expand Down Expand Up @@ -181,23 +183,14 @@
% # ORDER TABLE CELL
<td valign="middle" align="center" colspan=2>

% 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
Expand All @@ -211,9 +204,9 @@
&nbsp;
% } elsif ($dt->is_container) {
% # START IF CONTAINER
<input type="checkbox" name="container_prof|delete_cont<% $dt->get_id()%>" value="1">
<input type="checkbox" name="container_prof|delete_cont<% $dt->get_id %>" value="1">
% } else {
<input type="checkbox" name="container_prof|delete_data<% $dt->get_id()%>" value="1">
<input type="checkbox" name="container_prof|delete_data<% $dt->get_id %>" value="1">
% }
</td>
</tr>
Expand Down
5 changes: 5 additions & 0 deletions lib/Bric/Changes.pod
Expand Up @@ -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
Expand Down
26 changes: 15 additions & 11 deletions lib/Bric/SOAP/Util.pm
Expand Up @@ -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
Expand Down Expand Up @@ -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,
));
}

Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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);
}
}

Expand Down

0 comments on commit 7647e9c

Please sign in to comment.