Re: Suggestion for new Quickform htmltextarea element AND fckeditor
| From: | Dan Rossi | Date: | Tue, 11 Oct 2005 01:53:48 +0000 |
| Subject: | Re: Suggestion for new Quickform htmltextarea element AND fckeditor | ||
| References: | 1 2 | Groups: | php.pear.general |
| Request: | Send a blank email to pear-general+get-21334@lists.php.net to get a copy of this message | ||
I had a look at Xinha and the setup is alot more complex than HtmlArea in terms of embedding it cleanly into a quickform element, all elements require to be started up in a xinha_editors js array variable, instead of starting the editor when each element is loaded.
Here was my first implementation for htmlarea , i was also attempting to only include the js file once on the page in terms of multiple editor elements and if it buggered things up.
http://www.electroteque.org/pear/QuickForm/htmltextarea/htmltextarea.phps
If an element was available i wouldnt really be trying to reinvent the wheel, i did make a suggestion earlier this year, if people find it useful i could have a shot at making an element for xinha, the plugins look insane especially the file browser , however im gonna modify the file browser to use the jupload applet for handling more than one file at a time :D
Ok i assume this is the element you are talking about ?
http://helios.wh2.tu-dresden.de/~skywalker/fckeditor/
Could someone suggest to propose it, as standard element would be nice, ok my idea is def way off scale i was sending the configs via the constructor rather setting the element vairables.
On 11/10/2005, at 3:09 AM, Justin Patrin wrote:
On 10/10/05, Denis Willems <deniswillems@yahoo.fr> wrote:I use fckeditor (http://www.fckeditor.net) like this (after typical fckeditor install): 1. Modify peardir/html/quickform/textarea.php and save it as fckeditor.php (see source below): 2. Update html/quickform.php, adding a line on #50 ($GLOBALS['HTML_QUICKFORM_ELEMENT_TYPES'] array definition): 'fckeditor' =>array('HTML/QuickForm/fckeditor.php','HTML_QuickForm_fckeditor'),html/quickform/fckeditor.phpIt's not a good idea to alter your QuickForm.php. Instead, put something like this at the bottom of fckeditor.php: if (class_exists('HTML_QuickForm')) {HTML_QuickForm::registerElementType('subForm', __FILE__,'HTML_QuickForm_SubForm'); } This way people can include your new element and it will register itself.3. Use it like textarea elem; but attributes are:-- Justin Patrin --PEAR General Mailing List (http://pear.php.net/) To unsubscribe, visit: http://www.php.net/unsub.phparray( 'baserep' => "/fckeditor/", // path to fckeditor 'toolbar' => "Standard", // toolbar preset -see fckeditor.ini or fckeditor help'width' =>510, //width in PIXEL (notlike textarea)'height' =>300, //height in PIXEL (notlije textarea) ), What do you think about it ? Denis. fckeditor.php: THIS IS (working but) TEMPORARY CODE, BASED ON textarea.php, NOT FULLY UPDATED: <?php /* vim: set expandtab tabstop=4 shiftwidth=4: */ // +----------------------------------------------------------------------+// | PHP version 4.0 | // +----------------------------------------------------------------------+ // | Copyright (c) 1997, 1998, 1999, 2000, 2001 The PHP Group | // +----------------------------------------------------------------------+ // | This source file is subject to version 2.0 of the PHP license, | // | that is bundled with this package in the file LICENSE, and is | // | available at through the world-wide-web at | // | http://www.php.net/license/2_02.txt. | // | If you did not receive a copy of the PHP license and are unable to | // | obtain it through the world-wide-web, please send a note to | // | license@php.net so we can mail you a copy immediately. | // +----------------------------------------------------------------------+ // | Authors: Adam Daniel <adaniel1@eesus.jnj.com> | // | Bertrand Mansion <bmansion@mamasam.com> | // +----------------------------------------------------------------------+// // $Id: textarea.php,v 1.11 2004/02/28 22:10:16 avb Exp $ require_once("HTML/QuickForm/element.php"); /** * HTML class for a textarea type field ** @author Adam Daniel <adaniel1@eesus.jnj.com> * @author Bertrand Mansion <bmansion@mamasam.com> * @version 1.0 * @since PHP4.04pl1 * @access public*/ class HTML_QuickForm_fckeditor extends HTML_QuickForm_element {// {{{ properties/** * Field value * @var string * @since 1.0 * @access private */ var $_value = null;// }}} // {{{ constructor/** * Class constructor * * @param string Input field name attribute * @param mixed Label(s) for a field * @param mixed Either a typical HTML attribute string or anassociative array* @since 1.0 * @access public * @return void */ function HTML_QuickForm_fckeditor($elementName=null,$elementLabel=null, $attributes=null){ HTML_QuickForm_element::HTML_QuickForm_element($elementName,$elementLabel, $attributes);$this->_persistantFreeze = true; $this->_type = 'fckeditor'; } //end constructor// }}} // {{{ setName()/** * Sets the input field name * * @param string $name Input field name attribute * @since 1.0 * @access public * @return void */ function setName($name) { $this->updateAttributes(array('name'=>$name)); } //end func setName// }}} // {{{ getName()/** * Returns the element name * * @since 1.0 * @access public * @return string */ function getName() { return $this->getAttribute('name'); } //end func getName// }}} // {{{ setValue()/** * Sets value for textarea element * * @param string $value Value for textarea element * @since 1.0 * @access public * @return void */ function setValue($value) { $this->_value = $value; } //end func setValue// }}} // {{{ getValue()/** * Returns the value of the form element * * @since 1.0 * @access public * @return string */ function getValue() { return $this->_value; } // end func getValue// }}} // {{{ setBasedir()/** * Sets basedir for fckeditor scripts * * @param string $baserep Baserep * @since 1.0 * @access public * @return void */ function setBasedir($baserep) { $this->updateAttributes(array('baserep' => $baserep)); } //end func setWrap// }}} // {{{ setToolbar()/** * Sets toolbar for fckeditor * * @param string $toolbar Toolbar name (see fckeditor configfile)* @since 1.0 * @access public * @return void */ function setToolbar($toolbar) { $this->updateAttributes(array('toolbar' => $toolbar)); } //end func setRows// }}} // {{{ setWidth()/** * Sets width for fckeditor element * * @param string $width Width expressed in pixel * @since 1.0 * @access public * @return void */ function setWidth($width) { $this->updateAttributes(array('width' => $width)); } //end func setCols// }}} // {{{ setHeight()/** * Sets height for fckeditor element * * @param string $height Height expressed in pixel * @since 1.0 * @access public * @return void */ function setHeight($height) { $this->updateAttributes(array('height' => $height)); } //end func setCols// }}} // {{{ toHtml()/** * Returns the textarea element in HTML * * @since 1.0 * @access public * @return string */ function toHtml() { if ($this->_flagFrozen) { return $this->getFrozenHtml(); // a faire ! } else { $contenu = ereg_replace("(\n|\r|\r\n)", "",addslashes($this->_value));return $this->_getTabs() . '<script type="text/javascript" src="'.$this->_attributes["baserep"].'fckeditor.js"></script><script type="text/javascript"> var oFCKeditor = new FCKeditor("'.$this->getName().'" ) ;oFCKeditor.BasePath ="'.$this->_attributes["baserep"].'";oFCKeditor.ToolbarSet ="'.$this->_attributes["toolbar"].'";oFCKeditor.Width ="'.$this->_attributes["width"].'" ;oFCKeditor.Height ="'.$this->_attributes["height"].'" ;oFCKeditor.Value = "'.$contenu.'"; oFCKeditor.Create() ; </script>';} } //end func toHtml// }}} // {{{ getFrozenHtml()/** * Returns the value of field without HTML tags (in this case, valueis changed to a mask)* * @since 1.0 * @access public * @return string */ function getFrozenHtml() { $value = htmlspecialchars($this->getValue()); if ($this->getAttribute('wrap') == 'off') { $html = $this->_getTabs() . '<pre>' . $value."</pre>\n"; } else { $html = nl2br($value)."\n"; } return $html . $this->_getPersistantData(); } //end func getFrozenHtml// }}}} //end class HTML_QuickForm_textarea ?> ___________________________________________________________________________ Appel audio GRATUIT partout dans le monde avec le nouveau Yahoo! Messenger Téléchargez cette version sur http://fr.messenger.yahoo.com -- PEAR General Mailing List (http://pear.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php