OpenPKG CVS Repository
  http://cvs.openpkg.org/
  ____________________________________________________________________________

  Server: cvs.openpkg.org                  Name:   Ralf S. Engelschall
  Root:   /e/openpkg/cvs                   Email:  [EMAIL PROTECTED]
  Module: openpkg-src                      Date:   31-Jan-2005 21:27:16
  Branch: HEAD                             Handle: 2005013120271600

  Added files:
    openpkg-src/kwiki       kwiki-spamwhitelist.pm
  Modified files:
    openpkg-src/kwiki       kwiki-plugins.txt kwiki.spec

  Log:
    add a local version of the never released (on CPAN)
    Kwiki::SpamWhitelist module

  Summary:
    Revision    Changes     Path
    1.10        +1  -0      openpkg-src/kwiki/kwiki-plugins.txt
    1.1         +68 -0      openpkg-src/kwiki/kwiki-spamwhitelist.pm
    1.28        +13 -0      openpkg-src/kwiki/kwiki.spec
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: openpkg-src/kwiki/kwiki-plugins.txt
  ============================================================================
  $ cvs diff -u -r1.9 -r1.10 kwiki-plugins.txt
  --- openpkg-src/kwiki/kwiki-plugins.txt       31 Jan 2005 19:20:07 -0000      
1.9
  +++ openpkg-src/kwiki/kwiki-plugins.txt       31 Jan 2005 20:27:16 -0000      
1.10
  @@ -61,6 +61,7 @@
   #Kwiki::VimMode
   
   #   Optional Authorization Extensions
  +#Kwiki::SpamWhitelist
   #Kwiki::PagePrivacy
   #Kwiki::User::Remote
   #Kwiki::Edit::RequireUserName
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/kwiki/kwiki-spamwhitelist.pm
  ============================================================================
  $ cvs diff -u -r0 -r1.1 kwiki-spamwhitelist.pm
  --- /dev/null 2005-01-31 21:27:16 +0100
  +++ kwiki-spamwhitelist.pm    2005-01-31 21:27:16 +0100
  @@ -0,0 +1,68 @@
  +##
  +##  Homepage: http://www.kwiki.org/?KwikiSpamWhitelist
  +##  Source:   http://www.kwiki.org/?CodeKwikiSpamWhitelist
  +##
  +
  +package Kwiki::SpamWhitelist;
  +use Kwiki::Plugin -Base;
  +use Kwiki::Formatter;
  +our $VERSION = '0.0';
  +
  +const class_id => 'spam_whitelist';
  +
  +sub register {
  +    my $registry = shift;
  +    $registry->add(preload => $self->class_id);
  +}
  +
  +package Kwiki::SpamWhitelist::Mixin;
  +use mixin 'Spoon::IndexList';
  +use IO::All;
  +
  +sub spam_link {
  +    my ($url, $title) = @_;
  +    return unless $url =~ s/^https?:\/\/([^\/]+)/spam:\/\/$1/i;
  +    my $domain = $1;
  +    my $whitelist =
  +      $self->hub->spam_whitelist->plugin_directory . '/whitelist';
  +    my $index = $self->index_list($whitelist);
  +    my $ok = eval { $index->{$domain} };
  +    return 'spam' if $@;
  +    return if $ok;
  +    my $spam_link = qq{<span style="font-weight: bold; background-color: 
red">&lt;$url&gt;</span>};
  +    $spam_link = qq{<span>$title</span>$spam_link}
  +      unless $title =~ /^http/i;
  +    return $spam_link;
  +}
  +
  +package Kwiki::Formatter::TitledHyperLink;
  +use mixin 'Kwiki::SpamWhitelist::Mixin';
  +no warnings;
  +
  +sub html {
  +    my $text = $self->escape_html($self->matched);
  +    my ($title1, $target, $title2) = ($text =~ $self->pattern_start);
  +    $title1 = '' unless defined $title1;
  +    $title2 = '' unless defined $title2;
  +    $target =~ s{^\w+:(?!//)}{};
  +    my $title = $title1 . ' ' . $title2;
  +    $title =~ s/^\s*(.*?)\s*$/$1/;
  +    $title = $target
  +      unless $title =~ /\S/;
  +    return $self->spam_link($target, $title) ||
  +           qq(<a href="$target">$title</a>);
  +}
  +
  +package Kwiki::Formatter::HyperLink;
  +use mixin 'Kwiki::SpamWhitelist::Mixin';
  +
  +sub html {
  +    my $text = $self->escape_html($self->matched);
  +    return $text if $text =~ s/^!//;
  +    return qq(<img src="$text" />)
  +      if $text =~ /(?:jpe?g|gif|png)$/i;
  +    my $target = $text;
  +    return $self->spam_link($target, $text) ||
  +           qq(<a href="$target">$text</a>);
  +}
  +
  @@ .
  patch -p0 <<'@@ .'
  Index: openpkg-src/kwiki/kwiki.spec
  ============================================================================
  $ cvs diff -u -r1.27 -r1.28 kwiki.spec
  --- openpkg-src/kwiki/kwiki.spec      31 Jan 2005 19:20:07 -0000      1.27
  +++ openpkg-src/kwiki/kwiki.spec      31 Jan 2005 20:27:16 -0000      1.28
  @@ -158,6 +158,7 @@
   Source102:    kwiki-rules.wiki
   Source103:    kwiki-sandbox.wiki
   Source104:    kwiki-openpkg.pm
  +Source105:    kwiki-spamwhitelist.pm
   Patch0:       kwiki.patch
   
   #   build information
  @@ -600,6 +601,18 @@
       cp %{SOURCE kwiki-openpkg.pm} Kwiki-Theme-OpenPKG/OpenPKG.pm
       %{l_prefix}/bin/perl-openpkg -d Kwiki-Theme-OpenPKG configure build 
install
   
  +    #   manually install Anti-Spam extensions
  +    mkdir Kwiki-SpamWhitelist
  +    ( echo "use ExtUtils::MakeMaker;"
  +      echo "WriteMakefile("
  +      echo "    NAME         => 'Kwiki::SpamWhitelist',"
  +      echo "    VERSION_FROM => 'SpamWhitelist.pm',"
  +      echo "    NO_META      => 1,"
  +      echo ");"
  +    ) >Kwiki-SpamWhitelist/Makefile.PL
  +    cp %{SOURCE kwiki-spamwhitelist.pm} Kwiki-SpamWhitelist/SpamWhitelist.pm
  +    %{l_prefix}/bin/perl-openpkg -d Kwiki-SpamWhitelist configure build 
install
  +
       #   finalize Perl module installation
       %{l_prefix}/bin/perl-openpkg -F perl-openpkg-files fixate cleanup
   
  @@ .
______________________________________________________________________
The OpenPKG Project                                    www.openpkg.org
CVS Repository Commit List                     openpkg-cvs@openpkg.org

Reply via email to