Sfoglia il codice sorgente

Implemented new Zend_Filter features in Zend_Markup.

git-svn-id: http://framework.zend.com/svn/framework/standard/trunk@20283 44c647ce-9c0f-0410-b52a-842ac1e357ba
kokx 16 anni fa
parent
commit
9cd2d4842b

+ 0 - 4
library/Zend/Markup/Renderer/Html.php

@@ -334,10 +334,6 @@ class Zend_Markup_Renderer_Html extends Zend_Markup_Renderer_RendererAbstract
         ));
 
         parent::__construct($options);
-
-        if (!isset($options['addDefaultFilters']) || ($options['addDefaultFilters'] == false)) {
-            $this->addDefaultFilters();
-        }
     }
 
     /**

+ 21 - 4
library/Zend/Markup/Renderer/RendererAbstract.php

@@ -124,11 +124,20 @@ abstract class Zend_Markup_Renderer_RendererAbstract
         if (isset($options['parser'])) {
             $this->setParser($options['parser']);
         }
-        if (isset($options['useDefaultTags']) && ($options['useDefaultTags'] == false)) {
+        if (isset($options['prependFilter'])) {
+            $this->addFilter($options['prependFilter']);
+        }
+        if (isset($options['useDefaultTags']) && ($options['useDefaultTags'] === false)) {
             $this->removeDefaultTags();
         }
+        if (!isset($options['useDefaultFilters']) || ($options['useDefaultFilters'] === true)) {
+            $this->addDefaultFilters();
+        }
         if (isset($options['filter'])) {
-            $this->getFilterChain()->addFilter($options['filter']);
+            $this->addFilter($options['filter']);
+        }
+        if (isset($options['appendFilter'])) {
+            $this->addFilter($options['appendFilter']);
         }
     }
 
@@ -182,12 +191,13 @@ abstract class Zend_Markup_Renderer_RendererAbstract
      * Add a filter
      *
      * @param Zend_Filter_Interface $filter
+     * @param string $filter
      *
      * @return void
      */
-    public function addFilter(Zend_Filter_Interface $filter)
+    public function addFilter(Zend_Filter_Interface $filter, $placement = Zend_Filter::CHAIN_APPEND)
     {
-        $this->getFilterChain()->addFilter($filter);
+        $this->getFilterChain()->addFilter($filter, $placement);
     }
 
     /**
@@ -489,4 +499,11 @@ abstract class Zend_Markup_Renderer_RendererAbstract
         return $tag['replace'];
     }
 
+    /**
+     * Initialize the default filters
+     *
+     * @return void
+     */
+    abstract public function addDefaultFilters();
+
 }

+ 10 - 0
tests/Zend/Markup/BbcodeAndHtmlTest.php

@@ -27,6 +27,7 @@ if (!defined("PHPUnit_MAIN_METHOD")) {
 }
 
 require_once 'Zend/Markup.php';
+require_once 'Zend/Filter/StringToUpper.php';
 
 /**
  * @category   Zend
@@ -385,6 +386,15 @@ BBCODE;
         $this->assertEquals('[i]foo[/i]', $this->_markup->render('[i]foo[/i]'));
     }
 
+    public function testAddFilters()
+    {
+        $m = $this->_markup;
+
+        $m->addFilter(new Zend_Filter_StringToUpper());
+
+        $this->assertEquals('<strong>HELLO</strong>', $m->render('[b]hello[/b]'));
+    }
+
 }
 
 // Call Zend_Markup_BbcodeAndHtmlTest::main()

+ 2 - 2
tests/Zend/Markup/Test/Renderer/MockRenderer.php

@@ -42,8 +42,8 @@ require_once 'Zend/Markup/Renderer/RendererAbstract.php';
 class Zend_Markup_Test_Renderer_MockRenderer extends Zend_Markup_Renderer_RendererAbstract
 {
 
-    public function _filter($text)
+    public function addDefaultFilters()
     {
-        return $text;
+        // we don't do anything here
     }
 }