openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

DocumentElement.class.php (2244B)


      1 <?php
      2 
      3 namespace wikiparser\model;
      4 
      5 use Art;
      6 use Ein;
      7 use wikiparser\model\AbstractElement;
      8 
      9 /**
     10  * Dokument-Objekt.<br>
     11  * Diese Objekt verk�rpert das Root-Objekt in einem DOM-Baum.<br>
     12  * <br>
     13  * Dieses Objekt kann Text parsen und seine Unterobjekte selbst erzeugen.<br>
     14  *
     15  * @author Jan Dankert, $Author$
     16  * @version $Revision$
     17  * @package openrat.text
     18  */
     19 class DocumentElement extends AbstractElement
     20 {
     21 	var $linkedObjectIds = array();
     22 	var $page;
     23 
     24 	/**
     25 	 * Fu�noten.
     26 	 *
     27 	 * @var Array
     28 	 */
     29 	var $footnotes = array();
     30 
     31 	var $encodeHtml = false;
     32 
     33     /**
     34      * @var \cms\generator\PageContext
     35      */
     36     public $pageContext;
     37 
     38     /**
     39 	 * Ein Text wird geparst.<br>
     40 	 * <br>
     41 	 * Zerlegt den Text zeilenweise und erzeugt die Unterobjekte.<br>
     42 	 *
     43 	 * @param Ein- oder mehrzeiliger roher Text
     44 	 * @param Art des Parsens, Default=Wiki
     45 	 */
     46 	function parse($text, $type = 'wiki')
     47 	{
     48 		$parserClass = 'wikiparser\parser\\'.ucfirst(strtolower($type)) . 'Parser';
     49 		$parser = new $parserClass();
     50 
     51 		$this->children = $parser->parse($text);
     52 		$this->linkedObjectIds = $parser->linkedObjectIds;
     53 	}
     54 
     55 
     56 	/**
     57 	 * Rendering des Dokumentes.<br>
     58 	 * Die Art und Weise des Renderns ist in Abh�ngigkeit zum
     59 	 * �bergebenen Mime-Type.
     60 	 *
     61 	 * @param String $mimeType Mime-Type, z.B. "text/html"
     62 	 * @return String
     63 	 */
     64 	function render($mimeType)
     65 	{
     66 
     67 		switch ($mimeType) {
     68 			case 'text/html':
     69 				$this->type = 'html';
     70 				break;
     71 			case 'text/plain':
     72 				$this->type = 'text';
     73 				break;
     74 			case 'application/pdf':
     75 				$this->type = 'pdf';
     76 				break;
     77 			case 'application/html-dom':
     78 				$this->type = 'htmlDom';
     79 				break;
     80 			case 'application/x-latex':
     81 				$this->type = 'latex';
     82 				break;
     83 			case 'text/xhtml':
     84 				$this->type = 'xhtml';
     85 				break;
     86 			case 'application/docbook+xml':
     87 				$this->type = 'docBook';
     88 				break;
     89 			default:
     90 				$this->type = 'html';
     91 		}
     92 
     93 		$rendererClass = 'wikiparser\renderer\\'.ucfirst($this->type) . 'Renderer';
     94 
     95 		$renderer = new $rendererClass();
     96 		$renderer->children = $this->children;
     97 		$renderer->page = $this->page;
     98 		$renderer->pageContext = $this->pageContext;
     99 		$renderer->linkedObjectIds = $this->linkedObjectIds;
    100 		$renderer->encodeHtml = $this->encodeHtml;
    101 
    102 		return $renderer->render();
    103 	}
    104 }
    105 
    106 ?>