[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
fu.
Files modified:
http://bugs.dwscoalition.org/show_bug.cgi?id=2524
Temporary(?) option to reset panels back to default settingsn.
Patch by
![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
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 --------------------------------------------------------------------------------