| 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 | | |