From 76c78cb334c846fd22ca476a1a3bd2a7fbcf8e51 Mon Sep 17 00:00:00 2001 From: Alex Schroeder Date: Fri, 29 Jul 2005 14:48:35 +0000 Subject: [PATCH] new --- modules/sync.pl | 69 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 modules/sync.pl diff --git a/modules/sync.pl b/modules/sync.pl new file mode 100644 index 00000000..6277f705 --- /dev/null +++ b/modules/sync.pl @@ -0,0 +1,69 @@ +# Copyright (C) 2005 Alex Schroeder +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the +# Free Software Foundation, Inc. +# 59 Temple Place, Suite 330 +# Boston, MA 02111-1307 USA + +$ModulesDescription .= '

$Id: sync.pl,v 1.1 2005/07/29 14:48:35 as Exp $

'; + +push(@MyRules, \&SyncRule); + +sub SyncRule { + # [[copy:http://example.com/wiki]] + if (m/\G\[\[(copy:$FullUrlPattern)\]\]/cog) { + my ($text, $url) = ($1, $2); + return $q->a({-href=>$2, class=>'outside copy'}, $text); + } + return undef; +} + +*SyncOldSave = *Save; +*Save = *SyncNewSave; + +sub SyncNewSave { + my ($id) = @_; + SyncOldSave(@_); + # %Page is now set, but the reply was not yet sent back to the + # browser + my $id = $OpenPageName; + my $data = $Page{text}; + my $user = $Page{username}; + my $summary = $Page{summary}; + my $minor = $Page{minor}; + my @links = (); + while ($data =~ m/\[\[copy:$FullUrlPattern\]\]/g) { + push(@links, $1) unless $1 eq $ScriptName or $1 eq $FullUrl; + } + my $msg = GetParam('msg', ''); + foreach my $uri (@links) { + next if $uri eq $ScriptName or $uri eq $FullUrl; + require LWP::UserAgent; + my $ua = LWP::UserAgent->new; + my %params = ( title=>$id, + text=>$data, + raw=>1, + username=>$user, + summary=>$summary, ); + $params{recent_edit} = 'on' if $minor; + my $response = $ua->post($uri, \%params); + my $status = $response->code . ' ' . $response->message; + warn "Result for $uri: $status"; + $msg .= ' ' if $msg; + $msg .= $response->is_success + ? Tss('Copy to %1 succeeded: %2.', $uri, $status) + : Tss('Copy to %1 failed: %2.', $uri, $status); + } + SetParam('msg', $msg); +}