HTML_QuickForm c fckeditor

  • Автор темы polygris
  • Дата начала

polygris

Guest
HTML_QuickForm c fckeditor

Народ ктонибудь реализовывал element с fckeditor для HTML_quickform?
 

buddy

Новичок
в fckeditor есть метод, который заменяет textarea на окно редактора. всё что тебе нужно - это создать элемент textarea c помощью HTML_quickform с нужным id.
Код:
<script type="text/javascript" src="fckeditor/fckeditor.js"></script>
<script type="text/javascript">
window.onload = function()
{
    var oFCKeditor = new FCKeditor('textarea_id', 'width', 'height') ;
    oFCKeditor.ReplaceTextarea() ;
}
</script>

<textarea id="textarea_id"></textarea>
 

polygris

Guest
А более красивого решения никто не видел? Например зарегестрировать element со свойствами fckeditor...
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: polygris
А более красивого решения никто не видел? Например зарегестрировать element со свойствами fckeditor...
на тебе более красивое решение... написано за 15 минут на базе PHP'шного класса из поставки FCKEditor и элемента textarea из QuickForm:
PHP:
require_once 'HTML/QuickForm/textarea.php';


class Backoffice_Form_fckeditor extends HTML_QuickForm_textarea
{
    protected $options = array(
        'basePath'   => '/FCKeditor/',
        'width'      => '100%',
        'height'     => '200',
        'toolbarSet' => 'Default',
        'config'     => array()
    );


    public function Backoffice_Form_fckeditor($elementName = null, $elementLabel = null, $attributes = null, $options = null)
    {
        parent::HTML_QuickForm_textarea($elementName, $elementLabel, $attributes);
        $this->_type = 'fckeditor';
        if (null !== $options) {
            $this->options = array_merge($this->options, $options);
        }
    }


    public function toHtml()
    {
        if ($this->isFrozen() || !$this->isBrowserSupported()) {
            return parent::toHtml();
        } else {
            $name  = $this->getName();
            $value = htmlspecialchars($this->getValue());
            $link  = $this->options['basePath'] . 'editor/fckeditor.html?InstanceName=' . $name .
                    ('' == $this->options['toolbarSet']? '': '&amp;Toolbar=' . $this->options['toolbarSet']);

            return '<input type="hidden" id="' . $name . '" name="' . $name . '" value="' . $value . '" />' .
                   '<input type="hidden" id="' . $name . '___Config" value="' . $this->getConfigString() . '" />' .
                   '<iframe id="' . $name . '___Frame" src="' . $link . '" width="' . $this->options['width'] . 
                   '" height="' . $this->options['height'] . '" frameborder="no" scrolling="no"></iframe>';
        }
    }


    protected function isBrowserSupported()
    {
        $sAgent = $_SERVER['HTTP_USER_AGENT'];
        if (strpos($sAgent, 'MSIE') !== false && strpos($sAgent, 'mac') === false && strpos($sAgent, 'Opera') === false) {
            $iVersion = (float)substr($sAgent, strpos($sAgent, 'MSIE') + 5, 3);
            return ($iVersion >= 5.5) ;
        } elseif (strpos($sAgent, 'Gecko') !== false) {
            $iVersion = (int)substr($sAgent, strpos($sAgent, 'Gecko/') + 6, 8) ;
            return ($iVersion >= 20030210) ;
        }
        return false;
    }


    protected function getConfigString()
    {
        $params = array();
        foreach ($this->options['config'] as $key => $value) {
            if (true === $value) {
                $hValue = 'true';
            } elseif (false === $value) {
                $hValue = 'false';
            } else {
                $hValue = htmlspecialchars($value);
            }
            $params[] = htmlspecialchars($key) . '=' . $hValue;
        }
        return implode('&amp;', $params);
    }
}
 

polygris

Guest
извини не успел поблагодарить... Спасибо :) да нет просто интересно я еще не работал с PHP5.
 

Sad Spirit

мизантроп (Старожил PHPClub)
Команда форума
Автор оригинала: polygris
да нет просто интересно я еще не работал с PHP5.
да тут ничего специфичного для php5 вроде нету, если выкинуть все "public" и "protected", должно под php4 заработать...
 
Сверху