Re: Suggestion for new Quickform htmltextarea element AND fckeditor
| From: | Justin Patrin | 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