1<?php 2 3namespace dokuwiki\plugin\struct\types; 4 5class LongText extends AbstractMultiBaseType 6{ 7 use TraitFilterPrefix; 8 9 protected $config = [ 10 'prefix' => '', 11 'postfix' => '', 12 'rows' => '5', 13 'cols' => '50' 14 ]; 15 16 17 /** 18 * Output the stored data 19 * 20 * @param string|int $value the value stored in the database 21 * @param \Doku_Renderer $R the renderer currently used to render the data 22 * @param string $mode The mode the output is rendered in (eg. XHTML) 23 * @return bool true if $mode could be satisfied 24 */ 25 public function renderValue($value, \Doku_Renderer $R, $mode) 26 { 27 if ($mode === 'xhtml') { 28 $valueWithBR = nl2br(hsc($value)); 29 $R->doc .= hsc($this->config['prefix']) . $valueWithBR . hsc($this->config['postfix']); 30 } else { 31 $R->cdata($this->config['prefix'] . $value . $this->config['postfix']); 32 } 33 return true; 34 } 35 36 /** 37 * Clean line endings 38 * 39 * @param int|string $rawvalue 40 * @return int|string 41 */ 42 public function validate($rawvalue) 43 { 44 $rawvalue = rtrim($rawvalue); 45 $rawvalue = cleanText($rawvalue); 46 return $rawvalue; 47 } 48 49 /** 50 * Use a text area for input 51 * 52 * @param string $name 53 * @param string $rawvalue 54 * @param string $htmlID 55 * 56 * @return string 57 */ 58 public function valueEditor($name, $rawvalue, $htmlID) 59 { 60 $rawvalue = formText($rawvalue); 61 $params = [ 62 'name' => $name, 63 'class' => 'struct_' . strtolower($this->getClass()), 64 'id' => $htmlID, 65 'rows' => $this->config['rows'], 66 'cols' => $this->config['cols'] 67 ]; 68 $attributes = buildAttributes($params, true); 69 70 return "<textarea $attributes>$rawvalue</textarea>"; 71 } 72} 73