Re: Suggestion for new Quickform htmltextarea element AND fckeditor

From: 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.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 --PEAR General Mailing List (http://pear.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php


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