openrat-cms

# OpenRat Content Management System
git clone http://git.code.weiherhei.de/openrat-cms.git
Log | Files | Refs

DocumentElement.class.php (2031B)


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