From 776b36ecb82abfa13cfae70762b30c5f81499555 Mon Sep 17 00:00:00 2001
From: Andreas Gohr <andi@splitbrain.org>
Date: Sat, 22 Oct 2005 00:34:34 +0200
Subject: [PATCH] fix for double encoding when using mailguard

darcs-hash:20051021223434-7ad00-b6364357c2cc0af50bfdd1490debbb198d3ee5a6.gz
---
 _test/cases/inc/common_obfuscate.test.php | 29 +++++++++++++++++++++++
 inc/parser/xhtml.php                      | 10 ++++----
 2 files changed, 35 insertions(+), 4 deletions(-)
 create mode 100644 _test/cases/inc/common_obfuscate.test.php

diff --git a/_test/cases/inc/common_obfuscate.test.php b/_test/cases/inc/common_obfuscate.test.php
new file mode 100644
index 000000000..60042ac19
--- /dev/null
+++ b/_test/cases/inc/common_obfuscate.test.php
@@ -0,0 +1,29 @@
+<?php
+
+require_once DOKU_INC.'inc/common.php';
+
+class common_obfuscate_test extends UnitTestCase {
+
+    function test_none(){
+        global $conf;
+        $conf['mailguard'] = 'none';
+        $this->assertEqual(obfuscate('jon-doe@example.com'), 'jon-doe@example.com');
+    }
+
+    function test_hex(){
+        global $conf;
+        $conf['mailguard'] = 'hex';
+print obfuscate('andi@foobar.com');
+        $this->assertEqual(obfuscate('jon-doe@example.com'), 
+        '&#x6a;&#x6f;&#x6e;&#x2d;&#x64;&#x6f;&#x65;&#x40;&#x65;&#x78;&#x61;&#x6d;&#x70;&#x6c;&#x65;&#x2e;&#x63;&#x6f;&#x6d;');
+    }
+
+    function test_visible(){
+        global $conf;
+        $conf['mailguard'] = 'visible';
+        $this->assertEqual(obfuscate('jon-doe@example.com'), 'jon [dash] doe [at] example [dot] com');
+    }
+
+
+}
+//Setup VIM: ex: et ts=4 enc=utf-8 :
diff --git a/inc/parser/xhtml.php b/inc/parser/xhtml.php
index d1e7a2354..d0f24d26f 100644
--- a/inc/parser/xhtml.php
+++ b/inc/parser/xhtml.php
@@ -671,9 +671,9 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
         //we just test for image here - we need to encode the title our self
         $this->_getLinkTitle($name, $address, $isImage);
         if ( !$isImage ) {
-            $link['class']='mail';
+            $link['class']='mail JSnocheck';
         } else {
-            $link['class']='media';
+            $link['class']='media JSnocheck';
         }
 
         $address = $this->_xmlEntities($address);
@@ -684,8 +684,10 @@ class Doku_Renderer_xhtml extends Doku_Renderer {
         }else{
             $name = $this->_xmlEntities($name);
         }
-        
-        $link['url']   = 'mailto:'.rawurlencode($address);
+       
+        if($conf['mailguard'] == 'visible') $address = rawurlencode($address);
+ 
+        $link['url']   = 'mailto:'.$address;
         $link['name']  = $name;
         $link['title'] = $title;
 
-- 
GitLab