From: <de...@de...> - 2013-02-28 10:54:32
|
Author: PeterThoeny Date: 2013-02-28 04:03:34 -0600 (Thu, 28 Feb 2013) New Revision: 25235 Trac url: http://develop.twiki.org/trac/changeset/25235 Modified: twiki/branches/TWikiRelease05x01/WatchlistPlugin/lib/TWiki/Plugins/WatchlistPlugin/Core.pm Log: Item7143: Initial version of WatchlistPlugin - code cleanup, avoiding duplicate code when updating watchlist on topic rename and on watch toggle Modified: twiki/branches/TWikiRelease05x01/WatchlistPlugin/lib/TWiki/Plugins/WatchlistPlugin/Core.pm =================================================================== --- twiki/branches/TWikiRelease05x01/WatchlistPlugin/lib/TWiki/Plugins/WatchlistPlugin/Core.pm 2013-02-28 10:03:16 UTC (rev 25234) +++ twiki/branches/TWikiRelease05x01/WatchlistPlugin/lib/TWiki/Plugins/WatchlistPlugin/Core.pm 2013-02-28 10:03:34 UTC (rev 25235) @@ -156,31 +156,14 @@ } my $web = $1; my $topic = $2; - my $watchlistWeb = $this->{watchlistWeb}; - my $watchlistTopic = $this->{watchlistTopic}; - unless( TWiki::Func::topicExists( $watchlistWeb, $watchlistTopic ) ) { + my $wWeb = $this->{watchlistWeb}; + my $wTopic = $this->{watchlistTopic}; + unless( TWiki::Func::topicExists( $wWeb, $wTopic ) ) { # FIXME: Create topic based on template - $this->{error} .= "Watchlist topic <nop>$web.$topic does not exist."; + $this->{error} .= "Watchlist topic <nop>$wWeb.$wTopic does not exist."; return; } - my( $meta, $text ) = TWiki::Func::readTopic( $watchlistWeb, $watchlistTopic ); - $text ||= ''; - $marker = '__W-A-T-C-H-E-D--T-O-P-I-C-S__'; - unless( $text =~ s/$watchedRegex/$1$marker/ ) { - $this->{error} .= "Watchlist topic <nop>$web.$topic does not have a WATCHLIST."; - return; - } - my $watchedTopics = $2; - $watchedTopics =~ s/\s+$//s; - my @arr = sort split( /[\s,]+/, $watchedTopics ); - if( grep { /^$web.$topic$/ } @arr ) { - $watchedTopics = join( ', ', grep { ! /^$web.$topic$/ } @arr ); - } else { - push( @arr, "$web.$topic" ); - $watchedTopics = join( ', ', sort @arr ); - } - $text =~ s/$marker/$watchedTopics/; - TWiki::Func::saveTopic( $watchlistWeb, $watchlistTopic, $meta, $text, {} ); + $this->_updateWatchlistTopic( $wWeb, $wTopic, "$web.$topic", '' ); $this->{redirect} = "$web, $topic"; } @@ -396,7 +379,7 @@ # ========================= sub _updateWatchlistTopic { - my ( $this, $web, $topic, $rmTopic, $addTopic, $forceUpdate ) = @_; + my ( $this, $web, $topic, $rmTopic, $addTopic ) = @_; unless( TWiki::Func::topicExists( $web, $topic ) ) { $this->{error} .= "Watchlist topic <nop>$web.$topic does not exist."; return; @@ -411,14 +394,18 @@ my $watchedTopics = $2; $watchedTopics =~ s/\s+$//s; my @arr = sort split( /[\s,]+/, $watchedTopics ); - if( $forceUpdate || grep { /^$rmTopic$/ } @arr ) { - TWiki::Func::writeDebug( "- WatchlistPlugin: Remove $rmTopic," - . " add $addTopic from $topic" ) if $debug; - push( @arr, $addTopic ); - $watchedTopics = join( ', ', grep { ! /^$rmTopic$/ } @arr ); - $text =~ s/$marker/$watchedTopics/; - TWiki::Func::saveTopic( $web, $topic, $meta, $text, {} ); + my $rmFound = scalar grep { /^$rmTopic$/ } @arr; + return if( ! $rmFound && $addTopic ); + if( ! $rmFound && ! $addTopic ) { + $addTopic = $rmTopic; + $rmTopic = ''; } + TWiki::Func::writeDebug( "- WatchlistPlugin: Remove $rmTopic," + . " add $addTopic in $topic" ) if $debug; + push( @arr, $addTopic ); + $watchedTopics = join( ', ', grep { ! /^$rmTopic$/ } @arr ); + $text =~ s/$marker/$watchedTopics/; + TWiki::Func::saveTopic( $web, $topic, $meta, $text, {} ); } # ========================= |