Re: Suggestion for new Quickform htmltextarea element AND fckeditor

From: Date: Mon, 10 Oct 2005 17:09:55 +0000
Subject: Re: Suggestion for new Quickform htmltextarea element AND fckeditor
References: 1  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-21324@lists.php.net to get a copy of this message
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.php It'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: > array( 'baserep' => "/fckeditor/", // path to fckeditor > 'toolbar' => "Standard", // toolbar preset - > see fckeditor.ini or fckeditor help > 'width' =>510, //width in PIXEL (not > like textarea) > 'height' =>300, //height in PIXEL (not > lije 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 an > associative 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 config > file) > * @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, value > is 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 > > -- Justin Patrin

« previous php.pear.general (#21324) next »