Allow modules to restrict which sections they can go into.

        Patch by afuna. 

diffs (39 lines):

diff -r b969064dd37e -r 07e4a7a86ee3 cgi-bin/LJ/Widget/S2PropGroup.pm
--- a/cgi-bin/LJ/Widget/S2PropGroup.pm  Mon Mar 08 22:57:20 2010 +0000
+++ b/cgi-bin/LJ/Widget/S2PropGroup.pm  Mon Mar 08 23:09:25 2010 +0000
@@ -103,15 +103,34 @@ sub render_body {
         my %prop_in_subheader;
         foreach my $prop_name ( @$groupprops ) {
             next unless $prop_name =~ /_group$/;
- 
+
+            # use module_*_section for the dropdown 
             my $prop_name_section = $prop_name;
             $prop_name_section =~ s/(.*)_group$/\1_section/;
+
+            # module_*_section_override overrides module_*_section;
+            # for use in child layouts since they cannot redefine an existing 
property
+            my $prop_name_section_override = 
$props->{"${prop_name_section}_override"}->{values};
+
+            $prop_name_section = "${prop_name_section}_override"
+                if $prop_name_section_override;
 
             # populate section dropdown values with the layout's list of 
available sections, if not already set
             $props->{$prop_name_section}->{values} ||= $layout_sections_values;
 
             # put this property under the proper subheader
             my %prop_values = LJ::Customize->get_s2_prop_values( 
$prop_name_section, $u, $style );
+
+            if ( $prop_name_section_override ) {
+                my %override_sections = split( /\|/, 
$prop_name_section_override );
+
+                while ( my ( $key, $value ) = each %override_sections ) {
+                    unless ( $subheaders{$key} ) {
+                        $subheaders{$key} = $value;
+                        push @layout_sections_order, $key;
+                    }
+                }
+            }
 
             # see whether a cap is needed for this module and don't show the 
module if the user does not have that cap
             my $cap;
_______________________________________________
dw-changelog mailing list
[email protected]
http://lists.dwscoalition.org/mailman/listinfo/dw-changelog

Reply via email to