Changeset 928 for trunk/wiki.cgi

Show
Ignore:
Timestamp:
03/10/07 23:49:39 (21 months ago)
Author:
kake
Message:

Write tests for and fix bugs #48 and #173; in the process, move preview_node() and edit_node() from wiki.cgi into OpenGuides.pm, and add more functionality to OpenGuides::Test.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/wiki.cgi

    r920 r928  
    6565                           ); 
    6666    } elsif ($preview) { 
    67         preview_node($node); 
     67        $guide->preview_edit( 
     68                              id      => $node, 
     69                              cgi_obj => $q, 
     70                            ); 
    6871    } elsif ($action eq 'edit') { 
    69         edit_node($node); 
     72        $guide->display_edit_form( id => $node ); 
    7073    } elsif ($action eq 'search') { 
    7174        do_search($search_terms); 
     
    254257} 
    255258 
    256 sub preview_node { 
    257     my $node = shift; 
    258     my $content  = $q->param('content'); 
    259     $content     =~ s/\r\n/\n/gs; 
    260     my $checksum = $q->param('checksum'); 
    261  
    262     my %tt_metadata_vars = OpenGuides::Template->extract_metadata_vars( 
    263                                                wiki                 => $wiki, 
    264                            config               => $config, 
    265                            cgi_obj              => $q, 
    266                                                set_coord_field_vars => 1, 
    267     ); 
    268     foreach my $var ( qw( username comment edit_type ) ) { 
    269         $tt_metadata_vars{$var} = $q->escapeHTML($q->param($var)); 
    270     } 
    271  
    272     if ($wiki->verify_checksum($node, $checksum)) { 
    273         my $moderate = $wiki->node_required_moderation($node); 
    274         my %tt_vars = ( 
    275             %tt_metadata_vars, 
    276             config                 => $config, 
    277             content                => $q->escapeHTML($content), 
    278             preview_html           => $wiki->format($content), 
    279             preview_above_edit_box => get_cookie( "preview_above_edit_box" ), 
    280             checksum               => $q->escapeHTML($checksum), 
    281             moderate               => $moderate 
    282         ); 
    283         process_template("edit_form.tt", $node, \%tt_vars); 
    284     } else { 
    285         my %node_data = $wiki->retrieve_node($node); 
    286         my %tt_vars = ( checksum       => $node_data{checksum}, 
    287                         config         => $config, 
    288                         new_content    => $content, 
    289                         stored_content => $node_data{content} ); 
    290         foreach my $mdvar ( keys %tt_metadata_vars ) { 
    291             if ($mdvar eq "locales") { 
    292                 $tt_vars{"stored_$mdvar"} = $node_data{metadata}{locale}; 
    293                 $tt_vars{"new_$mdvar"}    = $tt_metadata_vars{locale}; 
    294             } elsif ($mdvar eq "categories") { 
    295                 $tt_vars{"stored_$mdvar"} = $node_data{metadata}{category}; 
    296                 $tt_vars{"new_$mdvar"}    = $tt_metadata_vars{category}; 
    297             } elsif ($mdvar eq "username" or $mdvar eq "comment" 
    298                       or $mdvar eq "edit_type" ) { 
    299                 $tt_vars{$mdvar} = $tt_metadata_vars{$mdvar}; 
    300             } else { 
    301                 $tt_vars{"stored_$mdvar"} = $node_data{metadata}{$mdvar}[0]; 
    302                 $tt_vars{"new_$mdvar"}    = $tt_metadata_vars{$mdvar}; 
    303             } 
    304         } 
    305         process_template("edit_conflict.tt", $node, \%tt_vars); 
    306     } 
    307 } 
    308  
    309 sub edit_node { 
    310     my $node = shift; 
    311     my %node_data = $wiki->retrieve_node($node); 
    312     my ($content, $checksum) = @node_data{ qw( content checksum ) }; 
    313     my $username = get_cookie( "username" ); 
    314     my $edit_type = get_cookie( "default_edit_type" ) eq "normal" ? 
    315                         "Normal edit" : "Minor tidying"; 
    316  
    317     my %metadata_vars = OpenGuides::Template->extract_metadata_vars( 
    318                              wiki     => $wiki, 
    319                              config   => $config, 
    320                  metadata => $node_data{metadata} ); 
    321  
    322     $metadata_vars{website} ||= 'http://'; 
    323     my $moderate = $wiki->node_required_moderation($node); 
    324  
    325     my %tt_vars = ( content         => $q->escapeHTML($content), 
    326                     checksum        => $q->escapeHTML($checksum), 
    327                     %metadata_vars, 
    328                     config          => $config, 
    329                     username        => $username, 
    330                     edit_type       => $edit_type, 
    331                     moderate        => $moderate, 
    332                     deter_robots    => 1, 
    333     ); 
    334  
    335     process_template("edit_form.tt", $node, \%tt_vars); 
    336 } 
    337  
    338259sub get_cookie { 
    339260    my $pref_name = shift or return "";