0b94f320 |
1 | <?php |
2 | global $CFG; |
3 | require_once("$CFG->libdir/form/textarea.php"); |
4 | |
5 | /** |
6 | * HTML class for htmleditor type element |
7 | * |
8 | * @author Jamie Pratt |
9 | * @access public |
10 | */ |
11 | class MoodleQuickForm_htmleditor extends MoodleQuickForm_textarea{ |
12 | var $_type; |
13 | var $_canUseHtmlEditor; |
14 | var $_options=array('canUseHtmlEditor'=>'detect','rows'=>10, 'cols'=>45, 'width'=>0,'height'=>0, 'filearea'=>''); |
15 | function MoodleQuickForm_htmleditor($elementName=null, $elementLabel=null, $options=array(), $attributes=null){ |
16 | parent::MoodleQuickForm_textarea($elementName, $elementLabel, $attributes); |
17 | // set the options, do not bother setting bogus ones |
18 | if (is_array($options)) { |
19 | foreach ($options as $name => $value) { |
20 | if (array_key_exists($name, $this->_options)) { |
21 | if (is_array($value) && is_array($this->_options[$name])) { |
22 | $this->_options[$name] = @array_merge($this->_options[$name], $value); |
23 | } else { |
24 | $this->_options[$name] = $value; |
25 | } |
26 | } |
27 | } |
28 | } |
29 | if ($this->_options['canUseHtmlEditor']=='detect'){ |
30 | $this->_options['canUseHtmlEditor']=can_use_html_editor(); |
31 | } |
32 | if ($this->_options['canUseHtmlEditor']){ |
33 | $this->_type='htmleditor'; |
34 | //$this->_elementTemplateType='wide'; |
35 | }else{ |
36 | $this->_type='textarea'; |
37 | } |
38 | $this->_canUseHtmlEditor = $this->_options['canUseHtmlEditor']; |
39 | } |
40 | /** |
41 | * set html for help button |
42 | * |
43 | * @access public |
44 | * @param array $help array of arguments to make a help button |
45 | * @param string $function function name to call to get html |
46 | */ |
47 | function setHelpButton($helpbuttonargs, $function='helpbutton'){ |
48 | if (!$this->_canUseHtmlEditor){ |
49 | if ('editorhelpbutton' == $function){ |
50 | $key = array_search('richtext2', $helpbuttonargs); |
51 | if ($key !== FALSE){ |
52 | array_splice($helpbuttonargs, $key, 1, array('text2', 'emoticons2')); |
53 | } |
54 | } elseif ('helpbutton' == $function && $helpbuttonargs[0] == 'richtext2' && ((!isset($helpbuttonargs[2])) || $helpbuttonargs[2] == 'moodle')){ |
55 | //replace single 'richtext' help button with text and emoticon button when htmleditor off. |
56 | return $this->setHelpButton(array('text2', 'emoticons2'), 'editorhelpbutton'); |
57 | } |
58 | } |
59 | return parent::setHelpButton($helpbuttonargs, $function); |
60 | } |
61 | |
62 | function toHtml(){ |
63 | //if ($this->_canUseHtmlEditor && !$this->_flagFrozen){ |
64 | // $script = ''; |
65 | //} else { |
66 | // $script=''; |
67 | //} |
68 | if ($this->_flagFrozen) { |
69 | return $this->getFrozenHtml(); |
70 | } else { |
71 | return $this->_getTabs() . |
72 | '<input type="hidden" name="filearea" value="'. $this->_options['filearea'] .'" />'."\n". |
73 | print_textarea($this->_canUseHtmlEditor, |
74 | $this->_options['rows'], |
75 | $this->_options['cols'], |
76 | $this->_options['width'], |
77 | $this->_options['height'], |
78 | $this->getName(), |
79 | preg_replace("/(\r\n|\n|\r)/", '
',$this->getValue()), |
80 | 0, // unused anymore |
81 | true, |
82 | $this->getAttribute('id')); |
83 | } |
84 | } //end func toHtml |
85 | |
86 | /** |
87 | * What to display when element is frozen. |
88 | * |
89 | * @access public |
90 | * @return string |
91 | */ |
92 | function getFrozenHtml() |
93 | { |
94 | $html = format_text($this->getValue()); |
95 | return $html . $this->_getPersistantData(); |
96 | } //end func getFrozenHtml |
97 | } |
98 | ?> |