0byt3m1n1
Path:
/
data
/
applications
/
aps
/
xoops
/
2.3.2b-6
/
standard
/
htdocs
/
class
/
xoopsform
/
[
Home
]
File: formdhtmltextarea.php
<?php /** * Formatted textarea form * * You may not change or alter any portion of this comment or credits * of supporting developers from this source code or any supporting source code * which is considered copyrighted (c) material of the original comment or credit authors. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * * @copyright The XOOPS Project http://sourceforge.net/projects/xoops/ * @license http://www.fsf.org/copyleft/gpl.html GNU public license * @package kernel * @subpackage form * @since 2.0.0 * @author Kazumi Ono <onokazu@xoops.org> * @author Taiwen Jiang <phppp@users.sourceforge.net> * @author Vinod <smartvinu@gmail.com> * @version $Id: formdhtmltextarea.php 2208 2008-10-01 04:33:58Z phppp $ */ if (!defined('XOOPS_ROOT_PATH')) { die("XOOPS root path not defined"); } /** * @package kernel * @subpackage form * * @author Kazumi Ono <onokazu@xoops.org> * @author Taiwen Jiang <phppp@users.sourceforge.net> */ /** * base class */ xoops_load('xoopsformtextarea'); /** * A textarea with xoopsish formatting and smilie buttons * * @author Kazumi Ono <onokazu@xoops.org> * @copyright copyright (c) 2000-2003 XOOPS.org * * @package kernel * @subpackage form */ class XoopsFormDhtmlTextArea extends XoopsFormTextArea { /** * Extended HTML editor * * <p>If an extended HTML editor is set, the renderer will be replaced by the specified editor, usually a visual or WYSIWYG editor.</p> * * <ul>Developer and user guide: * <li><ul>For run-time settings per call * <li>To use an editor pre-configured by {@link XoopsEditor}, e.g. 'fckeditor': <code>$options['editor'] = 'fckeditor';</code></li> * <li>To use a custom editor, e.g. 'MyEditor' class located in "/modules/myeditor/myeditor.php": <code>$options['editor'] = array('MyEditor', XOOPS_ROOT_PATH . "/modules/myeditor/myeditor.php");</code></li> * </ul></li> * <li><ul>For pre-configured settings, which will force to use a editor if no specific editor is set for call * <li><ul>Set up custom configs: in XOOPS_VAR_PATH . '/configs/xoopsconfig.php' set a editor as default, e.g. * <li>a pre-configured editor 'fckeditor': <code>return array('editor' => 'fckeditor');</code></li> * <li>a custom editor 'MyEditor' class located in "/modules/myeditor/myeditor.php": <code>return array('editor' => array('MyEditor', XOOPS_ROOT_PATH . "/modules/myeditor/myeditor.php");</code></li> * </ul></li> * <li>To disable the default editor, in XOOPS_VAR_PATH . '/configs/xoopsconfig.php': <code>return array();</code></li> * <li>To disable the default editor for a specific call: <code>$options['editor'] = 'dhtmltextarea';</code></li> * </ul></li> * </ul> */ var $htmlEditor = array(); /** * Hidden text * @var string * @access private */ var $_hiddenText; var $skipPreview = false; var $doHtml = false; var $js = ''; /** * Constructor * * @param string $caption Caption * @param string $name "name" attribute * @param string $value Initial text * @param int $rows Number of rows * @param int $cols Number of columns * @param string $hiddentext Identifier for hidden Text * @param array $options Extra options */ function XoopsFormDhtmlTextArea($caption, $name, $value = "", $rows = 5, $cols = 50, $hiddentext = "xoopsHiddenText", $options = array() ) { static $inLoop = 0; $inLoop ++; // Second loop, invalid, return directly if ($inLoop > 2) { return; } // Else, initialize $this->XoopsFormTextArea($caption, $name, $value, $rows, $cols); $this->_hiddenText = $hiddentext; if ($inLoop > 1) { return; } if (!isset($options['editor'])) { $configs =@ include $GLOBALS['xoops']->path( "var/configs/xoopsconfig.php" ); if (!empty($configs['editor'])) $options['editor'] = $configs['editor']; } if ( !empty( $this->htmlEditor ) || !empty($options['editor']) ) { $options['name'] = $this->getName(); $options['value'] = $this->getValue(); if ( !empty($options['editor']) ) { $this->htmlEditor = is_array($options['editor']) ? $options['editor'] : array($options['editor']); } if ( count( $this->htmlEditor ) == 1 ) { xoops_load('XoopsEditorHandler'); $editor_handler =& XoopsEditorHandler::getInstance(); $this->htmlEditor = $editor_handler->get($this->htmlEditor[0], $options); if ($inLoop > 1) { $this->htmlEditor = null; } } else { list( $class, $path ) = $this->htmlEditor; include_once XOOPS_ROOT_PATH . $path; if ( class_exists( $class ) ) { $this->htmlEditor = new $class( $options ); } if ($inLoop > 1) { $this->htmlEditor = null; } } } $inLoop = 0; } /** * Prepare HTML for output * * @return string HTML */ function render() { if ( $this->htmlEditor && is_object( $this->htmlEditor ) ) { if ( !isset( $this->htmlEditor->isEnabled ) || $this->htmlEditor->isEnabled ) { return $this->htmlEditor->render(); } } static $js_loaded; xoops_loadLanguage("formdhtmltextarea"); $ret = ""; // actions $ret .= $this->codeIcon() . "<br />\n"; // fonts $ret .= $this->fontArray(); // length checker $ret .= "<input type='button' onclick=\"XoopsCheckLength('" . $this->getName() . "', '" . @$this->configs['maxlength'] . "', '" . _XOOPS_FORM_ALT_LENGTH . "', '" . _XOOPS_FORM_ALT_LENGTH_MAX . "');\" value=' ? ' title='" . _XOOPS_FORM_ALT_CHECKLENGTH . "' />"; $ret .= "<br />\n"; // the textarea box $ret .= "<textarea id='" . $this->getName() . "' name='" . $this->getName() . "' onselect=\"xoopsSavePosition('" . $this->getName() . "');\" onclick=\"xoopsSavePosition('" . $this->getName() . "');\" onkeyup=\"xoopsSavePosition('" . $this->getName() . "');\" cols='" . $this->getCols() . "' rows='" . $this->getRows() . "'" . $this->getExtra() . ">" . $this->getValue() . "</textarea><br />\n"; if (empty($this->skipPreview)) { if (empty($GLOBALS['xoTheme'])) { $this->js .= implode("", file(XOOPS_ROOT_PATH . "/class/textsanitizer/image/image.js")); } else { $GLOBALS['xoTheme']->addScript( '/class/textsanitizer/image/image.js', array( 'type' => 'text/javascript' ) ); } $button = //"<br />" . "<input " . " id='" . $this->getName() . "_preview_button'" . " type='button' " . " value='" . _PREVIEW . "' " . " onclick=\"form_instantPreview('" . XOOPS_URL . "', '" . $this->getName() . "','" . XOOPS_URL . "/images', " . intval($this->doHtml) .")\"" . " />"; $ret .= "<br />" . "<div id='" . $this->getName() . "_hidden' style='display: block;'> " . " <fieldset>" . " <legend>" . $button . "</legend>" . " <div id='" . $this->getName() . "_hidden_data'>" . _XOOPS_FORM_PREVIEW_CONTENT . "</div>" . " </fieldset>" . "</div>"; } // Load javascript if (empty($js_loaded)) { $javascript = ( ($this->js) ? '<script language="JavaScript" type="text/javascript">' . $this->js . '</script>' : '' ) . '<script language="JavaScript" type="text/javascript" src="' . XOOPS_URL . '/include/formdhtmltextarea.js"></script>'; $ret = $javascript . $ret; $js_loaded = true; } return $ret; } function codeIcon() { $textarea_id = $this->getName(); $code = "<a name='moresmiley'></a>" . "<img src='" . XOOPS_URL . "/images/url.gif' alt='" . _XOOPS_FORM_ALT_URL . "' title='" . _XOOPS_FORM_ALT_URL . "' onclick='xoopsCodeUrl(\"{$textarea_id}\", \"" . htmlspecialchars(_ENTERURL, ENT_QUOTES) . "\", \"" . htmlspecialchars(_ENTERWEBTITLE, ENT_QUOTES) . "\");' onmouseover='style.cursor=\"hand\"'/> " . "<img src='" . XOOPS_URL . "/images/email.gif' alt='" . _XOOPS_FORM_ALT_EMAIL . "' title='" . _XOOPS_FORM_ALT_EMAIL . "' onclick='xoopsCodeEmail(\"{$textarea_id}\", \"" . htmlspecialchars(_ENTEREMAIL, ENT_QUOTES) . "\");' onmouseover='style.cursor=\"hand\"'/> " . "<img src='" . XOOPS_URL . "/images/imgsrc.gif' alt='" . _XOOPS_FORM_ALT_IMG . "' title='" . _XOOPS_FORM_ALT_IMG . "' onclick='xoopsCodeImg(\"{$textarea_id}\", \"" . htmlspecialchars(_ENTERIMGURL, ENT_QUOTES) . "\", \"" . htmlspecialchars(_ENTERIMGPOS, ENT_QUOTES) . "\", \"" . htmlspecialchars(_IMGPOSRORL, ENT_QUOTES) . "\", \"" . htmlspecialchars(_ERRORIMGPOS, ENT_QUOTES) . "\", \"" . htmlspecialchars(_XOOPS_FORM_ALT_ENTERWIDTH, ENT_QUOTES) . "\");' onmouseover='style.cursor=\"hand\"'/> " . "<img src='" . XOOPS_URL . "/images/image.gif' alt='" . _XOOPS_FORM_ALT_IMAGE . "' title='" . _XOOPS_FORM_ALT_IMAGE . "' onclick='openWithSelfMain(\"" . XOOPS_URL . "/imagemanager.php?target={$textarea_id}\",\"imgmanager\",400,430);' onmouseover='style.cursor=\"hand\"'/> " . "<img src='" . XOOPS_URL . "/images/smiley.gif' alt='" . _XOOPS_FORM_ALT_SMILEY . "' title='" . _XOOPS_FORM_ALT_SMILEY . "' onclick='openWithSelfMain(\"" . XOOPS_URL . "/misc.php?action=showpopups&type=smilies&target={$textarea_id}\",\"smilies\",300,475);' onmouseover='style.cursor=\"hand\"'/> "; $myts =& MyTextSanitizer::getInstance(); $extensions = array_filter($myts->config['extensions']); foreach (array_keys($extensions) as $key) { $extension = $myts->loadExtension($key); @list($encode, $js) = $extension->encode($textarea_id); if (empty($encode)) continue; $code .= $encode; if (!empty($js)) { $this->js .= $js; } } $code .= "<img src='" . XOOPS_URL . "/images/code.gif' alt='" . _XOOPS_FORM_ALT_CODE . "' title='" . _XOOPS_FORM_ALT_CODE . "' onclick='xoopsCodeCode(\"{$textarea_id}\", \"" . htmlspecialchars(_ENTERCODE, ENT_QUOTES) . "\");' onmouseover='style.cursor=\"hand\"'/> " . "<img src='" . XOOPS_URL . "/images/quote.gif' alt='" . _XOOPS_FORM_ALT_QUOTE . "' title='" . _XOOPS_FORM_ALT_QUOTE . "' onclick='xoopsCodeQuote(\"{$textarea_id}\", \"" . htmlspecialchars(_ENTERQUOTE, ENT_QUOTES) . "\");' onmouseover='style.cursor=\"hand\"'/>"; return $code; } function fontArray() { $textarea_id = $this->getName(); $hiddentext = $this->_hiddenText; $fontStr = "<script type=\"text/javascript\" language=\"JavaScript\">" . "var _editor_dialog = ''" . "+ '<select id=\'{$textarea_id}Size\' onchange=\'xoopsSetElementAttribute(\"size\", this.options[this.selectedIndex].value, \"{$textarea_id}\", \"{$hiddentext}\");\'>'" . "+ '<option value=\'SIZE\'>" . _SIZE . "</option>'"; foreach ($GLOBALS["formtextdhtml_sizes"] as $_val => $_name) { $fontStr .= " + '<option value=\'{$_val}\'>{$_name}</option>'"; }; $fontStr .= " + '</select> '"; $fontStr .= "+ '<select id=\'{$textarea_id}Font\' onchange=\'xoopsSetElementAttribute(\"font\", this.options[this.selectedIndex].value, \"{$textarea_id}\", \"{$hiddentext}\");\'>'" . "+ '<option value=\'FONT\'>" . _FONT . "</option>'"; $fontarray = !empty($GLOBALS["formtextdhtml_fonts"]) ? $GLOBALS["formtextdhtml_fonts"] : array("Arial", "Courier", "Georgia", "Helvetica", "Impact", "Verdana", "Haettenschweiler"); foreach ($fontarray as $font) { $fontStr .= " + '<option value=\'{$font}\'>{$font}</option>'"; }; $fontStr .= " + '</select> '"; $fontStr .= "+ '<select id=\'{$textarea_id}Color\' onchange=\'xoopsSetElementAttribute(\"color\", this.options[this.selectedIndex].value, \"{$textarea_id}\", \"{$hiddentext}\");\'>'" . "+ '<option value=\'COLOR\'>" . _COLOR . "</option>';" . "var _color_array = new Array('00', '33', '66', '99', 'CC', 'FF'); for(var i = 0; i < _color_array.length; i ++) { for(var j = 0; j < _color_array.length; j ++) { for(var k = 0; k < _color_array.length; k ++) { var _color_ele = _color_array[i] + _color_array[j] + _color_array[k]; _editor_dialog += '<option value=\''+_color_ele+'\' style=\'background-color:#'+_color_ele+';color:#'+_color_ele+';\'>#'+_color_ele+'</option>'; } } } _editor_dialog += '</select>';"; $fontStr .= "document.write(_editor_dialog); </script>"; $styleStr = "<img src='" . XOOPS_URL . "/images/bold.gif' alt='" . _XOOPS_FORM_ALT_BOLD . "' title='" . _XOOPS_FORM_ALT_BOLD . "' onmouseover='style.cursor=\"hand\"' onclick='xoopsMakeBold(\"{$hiddentext}\", \"{$textarea_id}\");' /> "; $styleStr .= "<img src='" . XOOPS_URL . "/images/italic.gif' alt='" . _XOOPS_FORM_ALT_ITALIC . "' title='" . _XOOPS_FORM_ALT_ITALIC . "' onmouseover='style.cursor=\"hand\"' onclick='xoopsMakeItalic(\"{$hiddentext}\", \"{$textarea_id}\");' /> "; $styleStr .= "<img src='" . XOOPS_URL . "/images/underline.gif' alt='" . _XOOPS_FORM_ALT_UNDERLINE . "' title='" . _XOOPS_FORM_ALT_UNDERLINE . "' onmouseover='style.cursor=\"hand\"' onclick='xoopsMakeUnderline(\"{$hiddentext}\", \"{$textarea_id}\");'/> "; $styleStr .= "<img src='" . XOOPS_URL . "/images/linethrough.gif' alt='" . _XOOPS_FORM_ALT_LINETHROUGH . "' title='" . _XOOPS_FORM_ALT_LINETHROUGH . "' onmouseover='style.cursor=\"hand\"' onclick='xoopsMakeLineThrough(\"{$hiddentext}\", \"{$textarea_id}\");' /></a> "; $alignStr = "<img src='" . XOOPS_URL . "/images/alignleft.gif' alt='" . _XOOPS_FORM_ALT_LEFT . "' title='" . _XOOPS_FORM_ALT_LEFT . "' onmouseover='style.cursor=\"hand\"' onclick='xoopsMakeLeft(\"{$hiddentext}\", \"{$textarea_id}\");' /> "; $alignStr .= "<img src='" . XOOPS_URL . "/images/aligncenter.gif' alt='" . _XOOPS_FORM_ALT_CENTER . "' title='" . _XOOPS_FORM_ALT_CENTER . "' onmouseover='style.cursor=\"hand\"' onclick='xoopsMakeCenter(\"{$hiddentext}\", \"{$textarea_id}\");' /> "; $alignStr .= "<img src='" . XOOPS_URL . "/images/alignright.gif' alt='" . _XOOPS_FORM_ALT_RIGHT . "' title='" . _XOOPS_FORM_ALT_RIGHT . "' onmouseover='style.cursor=\"hand\"' onclick='xoopsMakeRight(\"{$hiddentext}\", \"{$textarea_id}\");' /> "; //$fontStr = $fontStr . "<br />\n{$styleStr} <span id='{$hiddentext}'>" . _EXAMPLE . "</span>\n"; $fontStr = $fontStr . "<br />\n{$styleStr} {$alignStr} \n"; return $fontStr; } function renderValidationJS() { if ( $this->htmlEditor && is_object( $this->htmlEditor ) && method_exists( $this->htmlEditor, "renderValidationJS" ) ) { if ( !isset( $this->htmlEditor->isEnabled ) || $this->htmlEditor->isEnabled ) { return $this->htmlEditor->renderValidationJS(); } } return ''; } } ?>