--- trunk/Estraier.pm 2006/05/10 13:45:08 139 +++ trunk/Estraier.pm 2006/05/16 16:05:23 154 @@ -4,7 +4,7 @@ use strict; use warnings; -our $VERSION = '0.06_1'; +our $VERSION = '0.08'; =head1 NAME @@ -951,10 +951,7 @@ }; if ($self->{create}) { - eval { - $self->name; - }; - if ($@) { + if (! eval { $self->name } || $@) { my $name = $1 if ($self->{url} =~ m#/node/([^/]+)/*#); croak "can't find node name in '$self->{url}'" unless ($name); my $label = $self->{label} || $name; @@ -1056,7 +1053,7 @@ $node->put_doc( $document_draft ) or die "can't add document"; -Return true on success or false on failture. +Return true on success or false on failure. =cut @@ -1064,11 +1061,15 @@ my $self = shift; my $doc = shift || return; return unless ($self->{url} && $doc->isa('Search::Estraier::Document')); - $self->shuttle_url( $self->{url} . '/put_doc', + if ($self->shuttle_url( $self->{url} . '/put_doc', 'text/x-estraier-draft', $doc->dump_draft, undef - ) == 200; + ) == 200) { + $self->_clear_info; + return 1; + } + return undef; } @@ -1087,11 +1088,15 @@ my $id = shift || return; return unless ($self->{url}); croak "id must be number, not '$id'" unless ($id =~ m/^\d+$/); - $self->shuttle_url( $self->{url} . '/out_doc', + if ($self->shuttle_url( $self->{url} . '/out_doc', 'application/x-www-form-urlencoded', "id=$id", undef - ) == 200; + ) == 200) { + $self->_clear_info; + return 1; + } + return undef; } @@ -1109,11 +1114,15 @@ my $self = shift; my $uri = shift || return; return unless ($self->{url}); - $self->shuttle_url( $self->{url} . '/out_doc', + if ($self->shuttle_url( $self->{url} . '/out_doc', 'application/x-www-form-urlencoded', "uri=" . uri_escape($uri), undef - ) == 200; + ) == 200) { + $self->_clear_info; + return 1; + } + return undef; } @@ -1131,11 +1140,15 @@ my $self = shift; my $doc = shift || return; return unless ($self->{url} && $doc->isa('Search::Estraier::Document')); - $self->shuttle_url( $self->{url} . '/edit_doc', + if ($self->shuttle_url( $self->{url} . '/edit_doc', 'text/x-estraier-draft', $doc->dump_draft, undef - ) == 200; + ) == 200) { + $self->_clear_info; + return 1; + } + return undef; } @@ -1649,7 +1662,7 @@ croak "mode must be number, not '$mode'" unless ($mode =~ m/^\d+$/); $self->shuttle_url( $self->{url} . '/_set_user', - 'text/plain', + 'application/x-www-form-urlencoded', 'name=' . uri_escape($name) . '&mode=' . $mode, undef ) == 200; @@ -1682,9 +1695,10 @@ undef ) == 200) { # refresh node info after adding link - $self->_set_info; + $self->_clear_info; return 1; } + return undef; } =head2 admins @@ -1831,6 +1845,10 @@ ) or confess "shuttle_url failed"; if ($status == $rest->{status}) { + + # refresh node info after sync + $self->_clear_info if ($action eq 'sync' || $action =~ m/^node(?:add|del|clr)$/); + if ($rest->{returns} && wantarray) { my @results; @@ -1888,7 +1906,7 @@ my @lines = split(/[\r\n]/,$resbody); - $self->{inform} = {}; + $self->_clear_info; ( $self->{inform}->{name}, $self->{inform}->{label}, $self->{inform}->{dnum}, $self->{inform}->{wnum}, $self->{inform}->{size} ) = split(/\t/, shift @lines, 5); @@ -1913,6 +1931,25 @@ } +=head2 _clear_info + +Clear information for node + + $node->_clear_info; + +On next call to C, C