1 <?php
2
3 class SimpleHTMLEditorField extends TextareaField
4 {
5 protected $css;
6 protected $controls = array (
7 'strikeThrough' => false,
8 'underline' => true,
9 'insertOrderedList' => true,
10 'insertUnorderedList' => true,
11 'insertImage' => false,
12 'createLink' => true,
13 'justifyLeft' => true,
14 'justifyRight' => true,
15 'justifyCenter' => true,
16 'justifyFull' => false,
17 'cut' => false,
18 'copy' => false,
19 'paste' => false,
20 'increaseFontSize' => false,
21 'decreaseFontSize' => false,
22 'h1' => false,
23 'h2' => false,
24 'h3' => true,
25 'h4' => true,
26 'h5' => true,
27 'h6' => false,
28 'separator08' => false,
29 'separator09' => false,
30 'html' => true,
31 'removeFormat' => true,
32
33
34 );
35
36 function __construct($name, $title = null, $config = array(), $rows = 5, $cols = 50, $value = "", $form = null) {
37 parent::__construct($name, $title, $rows, $cols, $value, $form);
38 $this->extraClasses = array('hidden');
39 if(!empty($config)) {
40 foreach($config as $k => $v) {
41 if($k == "css") $this->css = $v;
42 else if(array_key_exists($k, $this->controls))
43 $this->controls[$k] = $v;
44 }
45 }
46 }
47
48 private function getCss()
49 {
50 return $this->css ? "css : '{$this->css}'" : "css : ''";
51 }
52
53 private function getControls()
54 {
55 $controls = "controls : {\n";
56 $first = true;
57 foreach($this->controls as $var => $value) {
58 $controls .= $first ? "" : ",";
59 if((strlen($var) == 2 && $var[0] == "h")
60 && stristr($_SERVER['HTTP_USER_AGENT'], "Mozilla")
61 && stristr($_SERVER['HTTP_USER_AGENT'], "Safari") === false
62 ) {
63 $var.="mozilla";
64 }
65 $controls .= $var . " : ";
66 $title = _t("SimpleHTMLEditorField.{$var}_title");
67 $controls .= $value ? "{visible : true, title : '{$title}'}" : "{visible : false}";
68 $controls .= "\n";
69 $first = false;
70 }
71 $controls .= "},\n";
72 return $controls;
73 }
74
75 private function getConfig()
76 {
77 return $this->getControls().$this->getCss();
78 }
79
80 public function FieldHolder()
81 {
82 Requirements::javascript('dataobject_manager/javascript/jquery.wysiwyg.js');
83 Requirements::css('dataobject_manager/css/jquery.wysiwyg.css');
84 Requirements::customScript("
85 jQuery(function() {
86 jQuery('#{$this->id()}').wysiwyg({
87 {$this->getConfig()}
88 }).parents('.simplehtmleditor').removeClass('hidden');
89
90 });
91 ");
92 return parent::FieldHolder();
93 }
94
95 }
96
97
98
99
100 ?>
[Raise a SilverStripe Framework issue/bug](https://github.com/silverstripe/silverstripe-framework/issues/new)
- [Raise a SilverStripe CMS issue/bug](https://github.com/silverstripe/silverstripe-cms/issues/new)
- Please use the
Silverstripe Forums to ask development related questions.
-