summaryrefslogtreecommitdiff
path: root/program/include/rcmail_string_replacer.php
diff options
context:
space:
mode:
Diffstat (limited to 'program/include/rcmail_string_replacer.php')
-rw-r--r--program/include/rcmail_string_replacer.php54
1 files changed, 54 insertions, 0 deletions
diff --git a/program/include/rcmail_string_replacer.php b/program/include/rcmail_string_replacer.php
new file mode 100644
index 000000000..4fbc611c9
--- /dev/null
+++ b/program/include/rcmail_string_replacer.php
@@ -0,0 +1,54 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/include/rcmail_string_replacer.php |
+ | |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2012, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Turn URLs and email addresses into clickable links |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+
+/**
+ * Helper class for turning URLs and email addresses in plaintext content
+ * into clickable links.
+ *
+ * @package Core
+ * @subpackage Utils
+ */
+class rcmail_string_replacer extends rcube_string_replacer
+{
+ /**
+ * Callback function used to build mailto: links around e-mail strings
+ *
+ * This also adds an onclick-handler to open the Rouncube compose message screen on such links
+ *
+ * @param array Matches result from preg_replace_callback
+ * @return int Index of saved string value
+ * @see rcube_string_replacer::mailto_callback()
+ */
+ public function mailto_callback($matches)
+ {
+ $href = $matches[1];
+ $suffix = $this->parse_url_brackets($href);
+
+ $i = $this->add(html::a(array(
+ 'href' => 'mailto:' . $href,
+ 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('compose','".rcube::JQ($href)."',this)",
+ ), rcube::Q($href)) . $suffix);
+
+ return $i >= 0 ? $this->get_replacement($i) : '';
+ }
+
+} \ No newline at end of file