1<?php 2/** 3 * XOOPS Form Class Elements 4 * 5 * You may not change or alter any portion of this comment or credits 6 * of supporting developers from this source code or any supporting source code 7 * which is considered copyrighted (c) material of the original comment or credit authors. 8 * This program is distributed in the hope that it will be useful, 9 * but WITHOUT ANY WARRANTY; without even the implied warranty of 10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 11 * 12 * @copyright (c) 2000-2016 XOOPS Project (www.xoops.org) 13 * @license GNU GPL 2 (http://www.gnu.org/licenses/gpl-2.0.html) 14 * @package kernel 15 * @subpackage form 16 * @since 2.0.0 17 * @author Taiwen Jiang <phppp@users.sourceforge.net> 18 */ 19defined('XOOPS_ROOT_PATH') || exit('Restricted access'); 20 21xoops_load('XoopsFormTextArea'); 22 23/** 24 * XOOPS Form Editor 25 * 26 */ 27class XoopsFormEditor extends XoopsFormTextArea 28{ 29 public $editor; 30 31 /** 32 * Constructor 33 * 34 * @param string $caption Caption 35 * @param string $name Name for textarea field 36 * @param array $configs configures: editor - editor identifier; name - textarea field name; width, height - dimensions for textarea; value - text content 37 * @param bool $nohtml use non-WYSIWYG editor onfailure 38 * @param string $OnFailure editor to be used if current one failed 39 * 40 */ 41 public function __construct($caption, $name, $configs = null, $nohtml = false, $OnFailure = '') 42 { 43 // Backward compatibility: $name -> editor name; $configs['name'] -> textarea field name 44 if (!isset($configs['editor'])) { 45 $configs['editor'] = $name; 46 $name = $configs['name']; 47 // New: $name -> textarea field name; $configs['editor'] -> editor name; $configs['name'] -> textarea field name 48 } else { 49 $configs['name'] = $name; 50 } 51 parent::__construct($caption, $name); 52 xoops_load('XoopsEditorHandler'); 53 $editor_handler = XoopsEditorHandler::getInstance(); 54 $this->editor = $editor_handler->get($configs['editor'], $configs, $nohtml, $OnFailure); 55 } 56 57 /** 58 * renderValidationJS 59 * TEMPORARY SOLUTION to 'override' original renderValidationJS method 60 * with custom XoopsEditor's renderValidationJS method 61 */ 62 public function renderValidationJS() 63 { 64 if (is_object($this->editor) && $this->isRequired()) { 65 if (method_exists($this->editor, 'renderValidationJS')) { 66 $this->editor->setName($this->getName()); 67 $this->editor->setCaption($this->getCaption()); 68 $this->editor->_required = $this->isRequired(); 69 $ret = $this->editor->renderValidationJS(); 70 71 return $ret; 72 } else { 73 parent::renderValidationJS(); 74 } 75 } 76 77 return false; 78 } 79 80 /** 81 * XoopsFormEditor::render() 82 * 83 * @return string|null 84 */ 85 public function render() 86 { 87 if (is_object($this->editor)) { 88 return $this->editor->render(); 89 } 90 return null; 91 } 92} 93