Ignore:
Timestamp:
Aug 24, 2004, 12:21:05 PM (17 years ago)
Author:
kake
Message:

Split commit_node out into OpenGuides.pm in preparation for spam filtering option.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/OpenGuides.pm

    r465 r466  
    1313use vars qw( $VERSION );
    1414
    15 $VERSION = '0.38';
     15$VERSION = '0.39';
    1616
    1717=head1 NAME
     
    481481}
    482482
     483=item B<commit_node>
     484
     485  $guide->commit_node(
     486                       id      => $node,
     487                       cgi_obj => $q,
     488                     );
     489
     490As with other methods, parameters C<return_tt_vars> and
     491C<return_output> can be used to return these things instead of
     492printing the output to STDOUT.
     493
     494=cut
     495
     496sub commit_node {
     497    my ($self, %args) = @_;
     498    my $node = $args{id};
     499    my $q = $args{cgi_obj};
     500    my $wiki = $self->wiki;
     501    my $config = $self->config;
     502
     503    my $content  = $q->param("content");
     504    $content =~ s/\r\n/\n/gs;
     505    my $checksum = $q->param("checksum");
     506
     507    my %metadata = OpenGuides::Template->extract_metadata_vars(
     508        wiki    => $wiki,
     509        config  => $config,
     510        cgi_obj => $q
     511    );
     512
     513    $metadata{opening_hours_text} = $q->param("hours_text") || "";
     514
     515    # Check to make sure all the indexable nodes are created
     516    foreach my $type (qw(Category Locale)) {
     517        my $lctype = lc($type);
     518        foreach my $index (@{$metadata{$lctype}}) {
     519            $index =~ s/(.*)/\u$1/;
     520            my $node = $type . " " . $index;
     521            # Uppercase the node name before checking for existence
     522            $node =~ s/ (\S+)/ \u$1/g;
     523            unless ( $wiki->node_exists($node) ) {
     524                my $category = $type eq "Category" ? "Category" : "Locales";
     525                $wiki->write_node( $node,
     526                                   "\@INDEX_LINK [[$node]]",
     527                                   undef,
     528                                   { username => "Auto Create",
     529                                     comment  => "Auto created $lctype stub page",
     530                                     category => $category
     531                                   }
     532                );
     533            }
     534        }
     535    }
     536       
     537    foreach my $var ( qw( username comment edit_type ) ) {
     538        $metadata{$var} = $q->param($var) || "";
     539    }
     540    $metadata{host} = $ENV{REMOTE_ADDR};
     541
     542    my $written = $wiki->write_node($node, $content, $checksum, \%metadata );
     543
     544    if ($written) {
     545        print $self->redirect_to_node($node);
     546    } else {
     547        my %node_data = $wiki->retrieve_node($node);
     548        my %tt_vars = ( checksum       => $node_data{checksum},
     549                        new_content    => $content,
     550                        stored_content => $node_data{content} );
     551        foreach my $mdvar ( keys %metadata ) {
     552            if ($mdvar eq "locales") {
     553                $tt_vars{"stored_$mdvar"} = $node_data{metadata}{locale};
     554                $tt_vars{"new_$mdvar"}    = $metadata{locale};
     555            } elsif ($mdvar eq "categories") {
     556                $tt_vars{"stored_$mdvar"} = $node_data{metadata}{category};
     557                $tt_vars{"new_$mdvar"}    = $metadata{category};
     558            } elsif ($mdvar eq "username" or $mdvar eq "comment"
     559                      or $mdvar eq "edit_type" ) {
     560                $tt_vars{$mdvar} = $metadata{$mdvar};
     561            } else {
     562                $tt_vars{"stored_$mdvar"} = $node_data{metadata}{$mdvar}[0];
     563                $tt_vars{"new_$mdvar"}    = $metadata{$mdvar};
     564            }
     565        }
     566        return %tt_vars if $args{return_tt_vars};
     567        my $output = $self->process_template(
     568                                              id       => $node,
     569                                              template => "edit_conflict.tt",
     570                                              tt_vars  => \%tt_vars,
     571                                            );
     572        return $output if $args{return_output};
     573        print $output;
     574    }
     575}
     576
     577
    483578=item B<delete_node>
    484579
Note: See TracChangeset for help on using the changeset viewer.