fu: Close-up of Fu, bringing a scoop of water to her mouth (Default)
fu ([personal profile] fu) wrote in [site community profile] changelog2011-10-31 12:06 pm

[dw-free] Revamp /update

[commit: http://hg.dwscoalition.org/dw-free/rev/143caca9524b]

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

Temporary(?) option to reset panels back to default settingsn.

Patch by [personal profile] fu.

Files modified:
  • cgi-bin/DW/Controller/Entry.pm
  • views/entry/options.tt
  • views/entry/options.tt.text
--------------------------------------------------------------------------------
diff -r 0c2da8bf43e8 -r 143caca9524b cgi-bin/DW/Controller/Entry.pm
--- a/cgi-bin/DW/Controller/Entry.pm	Mon Oct 31 20:04:45 2011 +0800
+++ b/cgi-bin/DW/Controller/Entry.pm	Mon Oct 31 20:05:58 2011 +0800
@@ -1071,6 +1071,21 @@
     return DW::Template->render_template( 'entry/options.tt', $vars, { no_sitescheme => 1, status => $status } );
 }
 
+sub _load_visible_panels {
+    my $u = $_[0];
+
+    my $user_panels = $u->entryform_panels;
+
+    my @panels;
+    foreach my $panel_group ( @{$user_panels->{order}} ) {
+        foreach my $panel ( @$panel_group ) {
+            push @panels, $panel if $user_panels->{show}->{$panel};
+        }
+    }
+
+    return \@panels;
+}
+
 sub _options {
     my ( $ok, $rv ) = controller();
     return $rv unless $ok;
@@ -1099,31 +1114,37 @@
         $vars->{formdata} = $post;
 
         if ( LJ::check_form_auth( $post->{lj_form_auth} ) ) {
-            $u->set_prop( entryform_width => $post->{entry_field_width} );
+            if ( $post->{reset_panels} ) {
+                $vars->{formdata}->remove( "reset_panels" );
+                $u->set_prop( "entryform_panels" => undef );
+                $vars->{formdata}->set( $panel_element_name => @{_load_visible_panels( $u )||[]} );
+            } else {
+                $u->set_prop( entryform_width => $post->{entry_field_width} );
 
-            my %panels;
-            my %post_panels = map { $_ => 1 } $post->get_all( $panel_element_name );
-            foreach my $panel ( @panel_options ) {
-                my $name = $panel->{panel_name};
-                $panels{$name} = $post_panels{$name} ? 1 : 0;
+                my %panels;
+                my %post_panels = map { $_ => 1 } $post->get_all( $panel_element_name );
+                foreach my $panel ( @panel_options ) {
+                    my $name = $panel->{panel_name};
+                    $panels{$name} = $post_panels{$name} ? 1 : 0;
+                }
+                $u->entryform_panels_visibility( \%panels );
+
+
+                my @columns;
+                foreach my $column_index ( 0...2 ) {
+                    my @col;
+
+                    foreach ( $post->get_all( "column_$column_index" ) ) {
+                        my ( $order, $panel ) = m/(\d+):(.+)_component/;
+                        $col[$order] = $panel;
+
+                    }
+
+                    # remove any in-betweens in case we managed to skip a number in the order somehow
+                    $columns[$column_index] = [ grep { $_ } @col];
+                }
+                $u->entryform_panels_order( \@columns );
             }
-            $u->entryform_panels_visibility( \%panels );
-
-
-            my @columns;
-            foreach my $column_index ( 0...2 ) {
-                my @col;
-
-                foreach ( $post->get_all( "column_$column_index" ) ) {
-                    my ( $order, $panel ) = m/(\d+):(.+)_component/;
-                    $col[$order] = $panel;
-
-                }
-
-                # remove any in-betweens in case we managed to skip a number in the order somehow
-                $columns[$column_index] = [ grep { $_ } @col];
-            }
-            $u->entryform_panels_order( \@columns );
 
             $u->set_prop( js_animations_minimal => $post->{minimal_animations} );
         } else {
@@ -1137,15 +1158,7 @@
             minimal_animations  => $u->prop( "js_animations_minimal" ) ? 1 : 0,
         };
 
-        my $user_panels = $u->entryform_panels;
-
-        my @panels;
-        foreach my $panel_group ( @{$user_panels->{order}} ) {
-            foreach my $panel ( @$panel_group ) {
-                push @panels, $panel if $user_panels->{show}->{$panel};
-            }
-        }
-        $default->{$panel_element_name} = \@panels;
+        $default->{$panel_element_name} = _load_visible_panels( $u );
 
         $vars->{formdata} = $default;
     }
diff -r 0c2da8bf43e8 -r 143caca9524b views/entry/options.tt
--- a/views/entry/options.tt	Mon Oct 31 20:04:45 2011 +0800
+++ b/views/entry/options.tt	Mon Oct 31 20:05:58 2011 +0800
@@ -84,6 +84,20 @@
     </li>
     <li class="odd">
         <fieldset>
+        <legend><span>[% '.panels.reset.header' | ml %]</span></legend>
+        <ul>
+            <li>[%- reset_label = '.panels.reset.label' | ml;
+                form.checkbox(
+                    label = reset_label
+                    id = "reset_panels"
+                    name = "reset_panels"
+                    value = "1"
+                )
+            -%]</li>
+        </ul>
+    </li>
+    <li class="even">
+        <fieldset>
             <legend><span>[% '.animations.header' | ml %]</span></legend>
             <ul>
                 <li>
diff -r 0c2da8bf43e8 -r 143caca9524b views/entry/options.tt.text
--- a/views/entry/options.tt.text	Mon Oct 31 20:04:45 2011 +0800
+++ b/views/entry/options.tt.text	Mon Oct 31 20:05:58 2011 +0800
@@ -8,6 +8,10 @@
 
 .panels.header=Show panels
 
+.panels.reset.header=Reset panels
+
+.panels.reset.label=Reset panels to original settings
+
 .submit=Save
 
 .title=Entry Form Options
--------------------------------------------------------------------------------