место в рейтинге
  • 210984
  • 2580
  • 153
Нравится блог?
Подписывайтесь!

FCKeditor и Zend Framework

Оживим сообщество Zend Framework. :)

Сегодня об интегрировании визуального редактора FCKeditor в ZF.

Существует множество способов это сделать. Расскажу о самом, на мой взгляд, простом.

 

 

 

 

 

Реализуем это сделав FCKeditor элементом Zend_Form.

 

 

 

 

 

Для этого создадим класс formwysiwyg.

Вариант 1. Некошерный.

Файл класса создаем в папке library/Zend/Form/Element. Можно для этого скопировать имеющийся там файл Textarea.php, переименовав его в FormWysiwyg.php и отредактировать следующим образом:

 

/**

 

 * Zend Framework

 

 *

 

 * LICENSE

 

 *

 

 * This source file is subject to the new BSD license that is bundled

 

 * with this package in the file LICENSE.txt.

 

 * It is also available through the world-wide-web at this URL:

 

 * http://framework.zend.com/license/new-bsd

 

 * If you did not receive a copy of the license and are unable to

 

 * obtain it through the world-wide-web, please send an email

 

 * to license@zend.com so we can send you a copy immediately.

 

 *

 

 * @category   Zend

 

 * @package    Zend_Form

 

 * @subpackage Element

 

 * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)

 

 * @license    http://framework.zend.com/license/new-bsd     New BSD License

 

 */

 

/** Zend_Form_Element_Xhtml */

 

require_once 'Zend/Form/Element/Xhtml.php';

 

/**

 

 * Textarea form element

 

 *

 

 * @category   Zend

 

 * @package    Zend_Form

 

 * @subpackage Element

 

 * @copyright  Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)

 

 * @license    http://framework.zend.com/license/new-bsd     New BSD License

 

 * @version    $Id: Textarea.php 16218 2009-06-21 19:44:04Z thomas $

 

 */

 

class Zend_Form_Element_FormWysiwyg extends Zend_Form_Element_Xhtml

 

{

 

    /**

 

     * Use formTextarea view helper by default

 

     * @var string

 

     */

 

    public $helper = 'formWysiwyg';

 

}

 

Вариант 2. Кошерный.

Создаем файл класса в папке для собственных плагинов. У меня этот папка App в папке library. Подключается она строчкой

 

autoloaderNamespaces[] = "App_"

 

в файле application.ini.
В этой папке создаем папку FormElement и в ней файл FormWysiwyg.php

 

require_once 'Zend/Form/Element/Xhtml.php';

class App_FormElement_FormWysiwyg extends Zend_Form_Element_Xhtml
{
public $helper = 'formWysiwyg';
}

 

Далее надо создать хэлпер FormWysiwyg.php в папке хэлперов. У меня это в папке application/views/helpers/.

 

/**  * Abstract class for extension
*/
require_once 'Zend/View/Helper/FormElement.php';

require_once 'js/fckeditor/fckeditor.php'; // папка где лежит редактор

/**
* Helper to generate a "textarea" element
*
* @category Zend
* @package Zend_View
* @subpackage Helper
* @copyright Copyright (c) 2005-2009 Zend Technologies USA Inc. (http://www.zend.com)
* @license http://framework.zend.com/license/new-bsd New BSD License
*/

class Zend_View_Helper_FormWysiwyg extends Zend_View_Helper_FormElement
{
/**
* @access public
*
* @param string|array $name If a string, the element name. If an
* array, all other parameters are ignored, and the array elements
* are extracted in place of added parameters.
*
* @param mixed $value The element value.
*
* @param array $attribs Attributes for the element tag.
*
* @return string The element XHTML.
*/

public function formWysiwyg($name = null, $value = null, $attribs = null)
{
if(is_null($name) && is_null($value) && is_null($attribs)) {
return $this;
}
$info = $this->_getInfo($name, $value, $attribs);
extract($info); // name, value, attribs, options, listsep, disable
$editor = new FCKeditor($name);
// настройка параметров редактора
$editor->BasePath = '/js/fckeditor/' ;
$editor->ToolbarSet = empty($attribs['ToolbarSet']) ? 'Default' : $attribs['ToolbarSet'];
$editor->Width = empty($attribs['Width']) ? '70%' : $attribs['Width'];
$editor->Height = empty($attribs['Height']) ? 200 : $attribs['Height'];
$editor->Value = $value;
$editor->Config['BaseHref'] = $editor->BasePath;
$editor->Config['CustomConfigurationsPath'] = $editor->BasePath.'editor/fckconfig.js';
$editor->Config['SkinPath'] = $editor->BasePath.'editor/skins/office2003/';

return $editor->createHtml();
}
}

 

Всё. Теперь вы можете добавлять его как элемент Zend_Form. Например:

 

$content = new App_FormElement_FormWysiwyg('content');  //new Zend_Form_Element_FormWysiwyg('content'); для некошерного случая
$content->setLabel('Текст');
$content->setRequired(true);
$content->addFilter('StringTrim');
$this->addElement($content);

 

Данный пост не претендует на мегакрутость, просто один из способов. :)

30 августа 2009, 21:10
2045

Загрузка...

Комментарии

xapon
0
0
хыхыыы, круто. уже видел подобное, правда не знаю таким ли способом делали.
не понимаю зачем класть formwysiwyg в папку с зендом, лучше в свою или вообще в другое место. какбэ зенд редактирует зенд, логично же.
tinymce я тупо прикручивал в лэйауте, получилось совсем не по правилам "расширямости и повторноиспольуемости", зато всего две строчки.
и да, наверняка у эдитора мильон настроек, помимо высоты-ширины-типа тулбара.
однако спасибо за пост=)
xlbo
0
0
> уже видел подобное, правда не знаю таким ли способом делали.
Давай ссылку. :)

> зачем класть formwysiwyg в папку с зендом
ОК. Сейчас подредактирую пост.

> tinymce я тупо прикручивал в лэйауте
И этот человек говорит про пёфект коуд. :)

> наверняка у эдитора мильон настроек
Эмм... Предлагаешь все перечислить? о_0
Это же просто пример, на основе его можно и другие параметры изменить.

> однако спасибо за пост=)
Да брось ты! :)
xapon
0
0
>И этот человек говорит про пёфект коуд. :)
повторяю в тысячный раз, название категории блога призвано лишь подчеркнуть разницу между ним (названием) и реальностью, ну ты понял хД
>Давай ссылку. :)
perevodik.net >Эмм... Предлагаешь все перечислить? о_0
нет, можно использовать что-то типа фабрики, и на основании массива опций, принятых в качестве аргумента, передавать их в сам едитор
> ну ты понял
Ну дык! Поэтому там смайлы стоят))

Спасиб за ссылку. Там кстати он как декоратор, а у меня как самостоятельный элемент.

можно использовать что-то типа фабрики
А кто же спорит. Я же говорю, что это не истина в последней инстанции. :)
мне кажется, у тебя даже лучше, точнее логичнее.
еще чего-нибудь будет, или моя очередь?))
Thnx))
Выходные закончились, чего-нибудь постить время срежется.
Так что думаю теперь твой ход. :)
Darmen
0
0
Зенд - мощная вещь =) Однако ресурсы хавает соответственно.
Как решаете проблему потребления памяти на виртуальных хостингах?
xlbo
0
0
Пока у меня лично этот вопрос остро не вставал.
Следуем этому кодексу. :)
способ, конечно, прикольный, если не складывать все в папку с зендом, да и про настройки ничего не сказано
xlbo
0
0
Могу ответить на все вопросы. Кстати я сейчас перешел на TinyMCE.
что побудило на переход?
да вроде с настройками разобрался, благо документации к нему очень много
Причины перехода: простота, легкая расширяемость (плагины не сложно писать), генерация валидного html.

Оставьте свой комментарий

Спасибо за открытие блога в Yvision.kz! Чтобы убедиться в отсутствии спама, все комментарии новых пользователей проходят премодерацию. Соблюдение правил нашей блог-платформы ускорит ваш переход в категорию надежных пользователей, не нуждающихся в премодерации. Обязательно прочтите наши правила по указанной ссылке: Правила

Также можно нажать Ctrl+Enter

Популярные посты

Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

Японец о Казахстане: «Ваши девушки уж сильно себе набивают цену...»

"Мужчины должны у вас тут права качать, ибо их процент в вашей численности населения уступает проценту женщин". Я машинально начала уверять, что у нас в стране таковых не имеется...
Sapientia
5 дек. 2016 / 10:52
  • 7977
  • 65
Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Мысли вслух. Почему казахи перестали общаться с родственниками и ходить в гости?

Дастархан в те времена был скромен. Не было понятия «сынау» - осуждения кто как живет, какой в доме ремонт и т.д. Пока взрослые обсуждали задержку заработной платы, мы играли в армию, жмурки, строили городки...
socium_kzo
5 дек. 2016 / 15:19
  • 7496
  • 17
Взгляд со стороны: Назарбаев глазами кыргыза

Взгляд со стороны: Назарбаев глазами кыргыза

В чем уникальность этой личности? В чем его успех или провалы? Эти вопросы требуют глубокой аналитики и исследований. Я же хочу рассказать о Нурсултане Абишевиче глазами рядового кыргыза...
maxes
1 дек. 2016 / 8:05
  • 5840
  • 20
Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Молчание врачей. Дети ЮКО, заражённые ВИЧ 10-11 лет назад, узнают о диагнозе-приговоре

Как сообщают новостные издания, в ближайшее время в Южном Казахстане 102 детям в возрасте 11-12 лет сообщат об их страшном диагнозе. Все эти дети были заражены ВИЧ, причём большинство было инфицировано по вине врачей.
openqazaqstan
2 дек. 2016 / 13:57
  • 4352
  • 4
Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Почему Дональд Трамп назвал Казахстан чудом. Президент подтягивается по географии

Трамп и не подозревает, что 16 декабря 1991 Казахстан не создал, а восстановил свою национальную государственность. Иначе бы он упомянул не только 25 лет, а больше чем 550 лет казахской истории.
Stehlikova
2 дек. 2016 / 9:02
  • 4919
  • 88
10 причин, по которым я не смогла работать учителем. Не только в зарплате дело, ребята

10 причин, по которым я не смогла работать учителем. Не только в зарплате дело, ребята

Я почти год проработала в школе, и когда уходила оттуда, была самым счастливым человеком в мире. Тот год, честно говоря, я и сейчас вспоминаю с ужасом.
demonica
вчера / 17:21
  • 3535
  • 61
Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Мой личный опыт использования Astra Plat: мелочи в моем кармане заметно стало меньше

Давно ждал запуска электронного билетирования в общественном транспорте Астаны. В ноябре 2016 года этот день настал. Мой опыт насчитывает последние 2 недели и мне есть чем поделиться.
iamYerlan
1 дек. 2016 / 15:24
  • 3398
  • 15
После крупной пьяной аварии бизнесмены в Чечне отказались торговать спиртным. В Казахстане едва ли такое возможно

После крупной пьяной аварии бизнесмены в Чечне отказались торговать спиртным. В Казахстане едва ли такое возможно

После тяжкого ДТП по вине пьяного водителя в Чечне закрылись все магазины, торгующие алкоголем. Их владельцы – 14 бизнесменов – добровольно отказались от выданных им лицензий.
openqazaqstan
5 дек. 2016 / 13:09
Как отдохнуть за 220$. Гоа – это не Индия: купил дешевую путевку и улетел!

Как отдохнуть за 220$. Гоа – это не Индия: купил дешевую путевку и улетел!

В Гоа я не первый раз. Очень многое знаю. Минус такой путевки только в том, что вы не сможете выбрать пляж и отель, но за такие смешные деньги – какая разница. Гоа – это не Индия.
fima
2 дек. 2016 / 11:32
  • 3279
  • 25