mark: A photo of Mark kneeling on top of the Taal Volcano in the Philippines. It was a long hike. (Default)
Mark Smith ([staff profile] mark) wrote in [site community profile] changelog2009-10-26 01:58 am

[dw-free] Allow propgroups in multiple layers to be merged

[commit: http://hg.dwscoalition.org/dw-free/rev/346f5cb7669a]

http://bugs.dwscoalition.org/show_bug.cgi?id=1921

Allow property groups in multiple layers to be merged.

Patch by [personal profile] afuna.

Files modified:
  • cgi-bin/LJ/Customize.pm
--------------------------------------------------------------------------------
diff -r 41b7798135b5 -r 346f5cb7669a cgi-bin/LJ/Customize.pm
--- a/cgi-bin/LJ/Customize.pm	Sun Oct 25 09:41:51 2009 +0000
+++ b/cgi-bin/LJ/Customize.pm	Mon Oct 26 01:58:14 2009 +0000
@@ -561,21 +561,27 @@ sub get_propgroups {
     }
 
     my @groups = S2::get_property_groups($lyr_layout->{'s2lid'});
+    my @merged_groups;
     my $misc_group;
     my %groupprops;  # gname -> [ propname ]
     my %propgroup;   # pname -> gname;
 
     foreach my $gname (@groups) {
         if ($gname eq "misc" || $gname eq "other") { $misc_group = $gname; }
+        my $gname_merge = $gname;
+        $gname_merge =~ s/_child$//;
+        push @merged_groups, $gname if $gname_merge eq $gname;
+
         foreach my $pname (S2::get_property_group_props($lyr_layout->{'s2lid'}, $gname)) {
             my $prop = $prop{$pname};
             next if ! $prop || $prop->{noui} || $propgroup{$pname};
-            $propgroup{$pname} = $gname;
-            push @{$groupprops{$gname}}, $pname;
+            $propgroup{$pname} = $gname_merge;
+            push @{$groupprops{$gname_merge}}, $pname;
         }
     }
+
     # put unsorted props into an existing or new unsorted/misc group
-    if (@groups) {
+    if (@merged_groups) {
         my @unsorted;
         foreach my $pname (@propnames) {
             my $prop = $prop{$pname};
@@ -585,13 +591,13 @@ sub get_propgroups {
         if (@unsorted) {
             unless ($misc_group) {
                 $misc_group = "misc";
-                push @groups, "misc";
+                push @merged_groups, "misc";
             }
             push @{$groupprops{$misc_group}}, @unsorted;
         }
     }
 
-    return ( props => \%prop, groups => \@groups, groupprops => \%groupprops, propgroup => \%propgroup );
+    return ( props => \%prop, groups => \@merged_groups, groupprops => \%groupprops, propgroup => \%propgroup );
 }
 
 sub propgroup_name {
--------------------------------------------------------------------------------