diff --git a/src/IDF/Template/Markdown.php b/src/IDF/Template/Markdown.php
index 8363014..6c09be4 100644
--- a/src/IDF/Template/Markdown.php
+++ b/src/IDF/Template/Markdown.php
@@ -36,19 +36,6 @@ class IDF_Template_Markdown extends Pluf_Template_Tag
{
$this->project = $request->project;
$this->request = $request;
- $filter = new IDF_Template_MarkdownPrefilter();
- $text = $filter->go($text);
- // The filter has replace < and > also in the code blocks so
- // we need to revert them
- $tmp = array();
- foreach (preg_split("/\015\012|\015|\012/", $text, -1) as $s) {
- if (0 === strpos($s, ' ')) {
- $s = str_replace(array('<', '>'),
- array('<', '>'), $s);
- }
- $tmp[] = $s;
- }
- $text = implode("\n", $tmp);
// Replace like in the issue text
$tag = new IDF_Template_IssueComment();
$text = $tag->start($text, $request, false, false, false, false);
@@ -57,7 +44,8 @@ class IDF_Template_Markdown extends Pluf_Template_Tag
$text = preg_replace_callback('#\[\[([A-Za-z0-9\-]+)\]\]#im',
array($this, 'callbackWikiPage'),
$text);
- echo Pluf_Text_MarkDown_parse($text);
+ $filter = new IDF_Template_MarkdownPrefilter();
+ echo $filter->go(Pluf_Text_MarkDown_parse($text));
}
function callbackWikiPage($m)
diff --git a/src/IDF/Template/MarkdownPrefilter.php b/src/IDF/Template/MarkdownPrefilter.php
index 5e56f82..4ca389d 100644
--- a/src/IDF/Template/MarkdownPrefilter.php
+++ b/src/IDF/Template/MarkdownPrefilter.php
@@ -1,34 +1,31 @@
array('src', 'class', 'alt', 'height', 'width'),
+ 'strong' => array(),
+ 'em' => array(),
+ 'b' => array(),
+ 'i' => array(),
+ 'ul' => array(),
+ 'ol' => array(),
+ 'li' => array(),
+ 'p' => array('align', 'class'),
+ 'div' => array('align', 'class'),
+ 'br' => array(),
+ 'pre' => array(),
+ 'table' => array('summary'),
+ 'caption' => array(),
+ 'tr' => array(),
+ 'td' => array('style'),
+ 'h1' => array(),
+ 'h2' => array(),
+ 'h3' => array(),
+ 'hr' => array(),
+ 'address' => array(),
+ 'a' => array('href', 'title', 'rel'),
+ 'blockquote' => array(),
+ );
+ // tags which should always be self-closing (e.g. "")
+ public $no_close = array(
+ 'img',
+ 'br',
+ 'hr',
+ );
+
+ // tags which must always have seperate opening and closing tags
+ // (e.g. "")
+ public $always_close = array(
+ 'strong',
+ 'em',
+ 'b',
+ 'i',
+ 'ul',
+ 'ol',
+ 'li',
+ 'p',
+ 'table',
+ 'caption',
+ 'tr',
+ 'td',
+ 'span',
+ 'a',
+ 'blockquote',
+ 'pre',
+ 'iframe',
+ 'h1', 'h2', 'h3', 'address'
+ );
+ // attributes which should be checked for valid protocols
+ public $protocol_attributes = array(
+ 'src',
+ 'href',
+ );
+ // protocols which are allowed
+ public $allowed_protocols = array(
+ 'http',
+ 'https',
+ 'ftp',
+ 'mailto',
+ );
+ // tags which should be removed if they contain no content
+ // (e.g. "" or "")
+ public $remove_blanks = array(
+ 'p',
+ 'strong',
+ 'em',
+ 'caption',
+ 'li',
+ 'span',
+ );
}