Ignore:
Timestamp:
Jun 25, 2004, 10:40:38 PM (17 years ago)
Author:
kake
Message:

Added 'delete a revision' facility.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/lib/OpenGuides.pm

    r428 r429  
    1313use vars qw( $VERSION );
    1414
    15 $VERSION = '0.33';
     15$VERSION = '0.34';
    1616
    1717=head1 NAME
     
    444444        my %node_data = $self->wiki->retrieve_node( name    => $node,
    445445                                                    version => $version );
     446        # $node_data{version} will be zero if this version was deleted.
    446447        push @history, { version  => $version,
    447448                         modified => $node_data{last_modified},
    448449                         username => $node_data{metadata}{username}[0],
    449                          comment  => $node_data{metadata}{comment}[0]   };
     450                         comment  => $node_data{metadata}{comment}[0],
     451                       } if $node_data{version};
    450452    }
    451453    @history = reverse @history;
    452     my %tt_vars = ( node    => $node,
    453                     version => $curr_version,
    454                     history => \@history );
     454    my %tt_vars = ( node          => $node,
     455                    version       => $curr_version,
     456                    not_deletable => 1,
     457                    history       => \@history );
    455458    print $self->process_template(
    456459                                   id       => $node,
     
    458461                                   tt_vars  => \%tt_vars,
    459462                                 );
     463}
     464
     465=item B<delete_node>
     466
     467  $guide->delete_node(
     468                       id       => "FAQ",
     469                       version  => 15,
     470                       password => "beer",
     471                     );
     472
     473C<version> is optional - if it isn't supplied then all versions of the
     474node will be deleted; in other words the node will be entirely
     475removed.
     476
     477If C<password> is not supplied then a form for entering the password
     478will be displayed.
     479
     480=cut
     481
     482sub delete_node {
     483    my ($self, %args) = @_;
     484    my $node = $args{id} or croak "No node ID supplied for deletion";
     485
     486    my %tt_vars = (
     487                    not_editable  => 1,
     488                    not_deletable => 1,
     489                  );
     490    $tt_vars{delete_version} = $args{version} || "";
     491
     492    my $password = $args{password};
     493
     494    if ($password) {
     495        if ($password ne $self->config->{_}->{admin_pass}) {
     496            print $self->process_template(
     497                                     id       => $node,
     498                                     template => "delete_password_wrong.tt",
     499                                     tt_vars  => \%tt_vars,
     500                                   );
     501        } else {
     502            $self->wiki->delete_node(
     503                                      name    => $node,
     504                                      version => $args{version},
     505                                    );
     506            # Check whether any versions of this node remain.
     507            my %check = $self->wiki->retrieve_node( name => $node );
     508            $tt_vars{other_versions_remain} = 1 if $check{version};
     509            print $self->process_template(
     510                                     id       => $node,
     511                                     template => "delete_done.tt",
     512                                     tt_vars  => \%tt_vars,
     513                                   );
     514        }
     515    } else {
     516        print $self->process_template(
     517                                 id       => $node,
     518                                 template => "delete_confirm.tt",
     519                                 tt_vars  => \%tt_vars,
     520                               );
     521    }
    460522}
    461523
Note: See TracChangeset for help on using the changeset viewer.