Package: libwww-mediawiki-client-perl Version: 0.31-2+wuth3 Severity: normal Tags: patch
Dear Maintainer, Mediawiki allows a page to be deleted and subsequently recreated. In order to make changes to such pages, the server provides and requires the client to keep track of the "start date" of the page. mvs does not do this, so cannot edit these pages. The attached patch resolves this problem. -- System Information: Debian Release: 7.0 APT prefers stable-updates APT policy: (500, 'stable-updates'), (500, 'stable') Architecture: i386 (i686) Kernel: Linux 3.2.0-0.bpo.2-686-pae (SMP w/2 CPU cores) Locale: LANG=en_CA.UTF-8, LC_CTYPE=en_CA.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash Versions of packages libwww-mediawiki-client-perl depends on: ii libexception-class-perl 1.32-1 ii libvcs-lite-perl 0.09-1 ii libwww-perl 6.04-1 ii libxml-libxml-perl 2.0001+dfsg-1 ii perl 5.14.2-21 libwww-mediawiki-client-perl recommends no packages. libwww-mediawiki-client-perl suggests no packages. -- no debconf information
Index: libwww-mediawiki-client-perl-0.31/lib/WWW/Mediawiki/Client.pm =================================================================== --- libwww-mediawiki-client-perl-0.31.orig/lib/WWW/Mediawiki/Client.pm 2012-09-09 03:35:48.000000000 -0600 +++ libwww-mediawiki-client-perl-0.31/lib/WWW/Mediawiki/Client.pm 2012-09-09 03:35:57.000000000 -0600 @@ -258,6 +258,7 @@ use constant EDIT_SUBMIT_VALUE => 'Save Page'; use constant EDIT_PREVIEW_NAME => 'wpPreview'; use constant EDIT_PREVIEW_VALUE => 'Show preview'; +use constant EDIT_START_NAME => 'wpStarttime'; use constant EDIT_TIME_NAME => 'wpEdittime'; use constant EDIT_TOKEN_NAME => 'wpEditToken'; use constant EDIT_WATCH_NAME => 'wpWatchthis'; @@ -1242,6 +1243,7 @@ ) unless $res->is_success; my $doc = $res->decoded_content; my $text = $self->_get_wiki_text($doc); + $self->{edit}->{start} = $self->_get_start_date($doc); $self->{edit}->{date} = $self->_get_edit_date($doc); $self->{edit}->{token} = $self->_get_edit_token($doc); $self->{edit}->{watch_now} = $self->_get_edit_is_watching($doc); @@ -1505,6 +1507,18 @@ return $text; } +sub _get_start_date { + my ($self, $doc) = @_; + my $p = HTML::TokeParser->new(\$doc); + my $date; + while (my $tag = $p->get_tag('input')) { + next unless exists $tag->[1]->{type} and $tag->[1]->{type} eq 'hidden'; + next unless $tag->[1]->{name} eq EDIT_START_NAME; + $date = $tag->[1]->{value}; + } + return $date; +} + sub _get_edit_date { my ($self, $doc) = @_; my $p = HTML::TokeParser->new(\$doc); @@ -1723,6 +1737,7 @@ $act_name => $act_value, &TEXTAREA_NAME => $text, &COMMENT_NAME => $self->{commit_message}, + &EDIT_START_NAME => $self->{edit}->{start}, &EDIT_TIME_NAME => $self->{edit}->{date}, &EDIT_TOKEN_NAME => $self->{edit}->{token}, @params,