rev 1931 - in trunk/buscador: . lib/Buscador

[prev] [thread] [next] [lurker] [Date index for 2005/02/21]

From: simon
Subject: rev 1931 - in trunk/buscador: . lib/Buscador
Date: 13:48 on 21 Feb 2005
Author: simon
Date: 2005-02-21 13:48:31 +0000 (Mon, 21 Feb 2005)
New Revision: 1931

Added:
   trunk/buscador/lib/Buscador/HTML.pm
Modified:
   trunk/buscador/MANIFEST
   trunk/buscador/lib/Buscador/Attachment.pm
   trunk/buscador/lib/Buscador/Decorate.pm
Log:
Move the HTML parsing stuff out into a seperate module


Modified: trunk/buscador/MANIFEST
===================================================================
--- trunk/buscador/MANIFEST	2005-02-21 11:01:58 UTC (rev 1930)
+++ trunk/buscador/MANIFEST	2005-02-21 13:48:31 UTC (rev 1931)
@@ -42,6 +42,7 @@
 lib/Buscador/Config.pm
 lib/Buscador/Date.pm
 lib/Buscador/Decorate.pm
+lib/Buscador/HTML.pm
 lib/Buscador/Raw.pm
 lib/Buscador/Recent.pm
 lib/Buscador/Root.pm

Modified: trunk/buscador/lib/Buscador/Attachment.pm
===================================================================
--- trunk/buscador/lib/Buscador/Attachment.pm	2005-02-21 11:01:58 UTC (rev 1930)
+++ trunk/buscador/lib/Buscador/Attachment.pm	2005-02-21 13:48:31 UTC (rev 1931)
@@ -32,8 +32,8 @@
 
 package Email::Store::Attachment;
 use strict;
+use Buscador::HTML;
 use MIME::Base64 qw(decode_base64);
-use HTML::TokeParser::Simple;
 
 sub view :Exported {
     my ($self, $r, $att) = @_;
@@ -46,26 +46,7 @@
     
     return unless $att->content_type eq 'text/html';
 
-    my $mail        = $att->mail;
-    my $id          = $mail->message_id;
-    my @attachments = $mail->attachments;
-    my $base        = Buscador->config->{uri_base}; $base =~ s!/+$!!;
-
-    my $html   = "";
-    my $parser = HTML::TokeParser::Simple->new( string => $r->{output} );
-     while (my $token = $parser->get_token) {
-
-        goto END unless $token->is_start_tag( qr/img/ );
-        my $src = $token->get_attr('src');
-        goto END unless defined $src; 
-
-        if ($src =~ m!^cid:part(\d+)!) {
-            $token->set_attr('src', "${base}/attachment/view/".$attachments[$1]->id);        
-        }
-
-        END: $html .= $token->as_is;
-     }
-    $r->{output} = $html;
+    $r->{output} = Buscador::HTML::fix_cid($att->mail, $r->{output});
     
     
 

Modified: trunk/buscador/lib/Buscador/Decorate.pm
===================================================================
--- trunk/buscador/lib/Buscador/Decorate.pm	2005-02-21 11:01:58 UTC (rev 1930)
+++ trunk/buscador/lib/Buscador/Decorate.pm	2005-02-21 13:48:31 UTC (rev 1931)
@@ -35,6 +35,7 @@
 use Text::Decorator;
 use Text::Autoformat;
 use HTML::Scrubber;
+use Buscador::HTML;
 
 sub format_body {
     my $mail = shift;
@@ -45,7 +46,7 @@
     
     return $mail->body if ($ct =~ m!text/html!i);
     my $html = ($mail->html)[0];
-    return $html->scrubbed if $html;
+    return Buscador::HTML::fix_cid($mail,$html->raw) if $html;
 
 
     my $body = $mail->body;

Added: trunk/buscador/lib/Buscador/HTML.pm
===================================================================
--- trunk/buscador/lib/Buscador/HTML.pm	2005-02-21 11:01:58 UTC (rev 1930)
+++ trunk/buscador/lib/Buscador/HTML.pm	2005-02-21 13:48:31 UTC (rev 1931)
@@ -0,0 +1,56 @@
+package Buscador::HTML;
+use HTML::TokeParser::Simple;
+
+
+sub fix_cid {
+    my ($mail, $body) = @_;
+
+    my $id          = $mail->id;
+    my @attachments = $mail->attachments;
+    my $base        = Buscador->config->{uri_base}; $base =~ s!/+$!!;
+
+    my $html   = "";
+    my $parser = HTML::TokeParser::Simple->new( string => $body );
+     while (my $token = $parser->get_token) {
+
+        goto END unless $token->is_start_tag( qr/img/ );
+        my $src = $token->get_attr('src');
+        goto END unless defined $src;
+
+        if ($src =~ m!^cid:part(\d+)!) {
+            $token->set_attr('src', "${base}/attachment/view/".$attachments[$1]->id);
+        }
+
+        END: $html .= $token->as_is;
+     }
+
+    return $html;
+}
+
+
+1;
+__END__
+
+=pod
+
+=head1 NAME
+
+Buscador::HTML - various html related utilities
+
+=head1 METHODS
+
+=head2 fix_cid <message> <html>
+
+Parse some html and replace all internal C<cid> links with internal Buscador links.
+
+=head1 AUTHOR
+
+Simon Wistow <simon@xxxxxxxxxx.xxx>
+
+=head1 COPYRIGHT
+
+Copyright, 2005 - Simon Wistow
+
+Distributed under the same terms as Perl itself.
+
+=cut

Generated at 14:00 on 21 Feb 2005 by mariachi 0.52