Мар 06

Спорить о том, какой визуальный html-редактор лучше, а какой – хуже, можно очень долго. Равно как и о том, нужно ли их использовать вообще. В моих проектах визуальный редактор необходим, так как редакторский состав напрочь отказывается от использования в своей работе BB-кодов или чистого HTML.

Довольно долго я внедрял в свои проекты FCKEditor, затем переключился на TinyMCE. Но однажды (примерно летом 2007 года :-) ) произошло мое знакомство с наиболее, на мой взгляд, удобным редактором – SPAW Editor от компании Solmetra - http://www.spaweditor.com/. Этот редактор распространяется бесплатно, под GNU General Public License (GPL), но также можно приобрести и коммерческую лицензию.

Что мне больше всего в нем нравится? В отличие от тех же FCKEditor или TinyMCE – он не тормозит браузер. Это связано с тем, что редактор прорисовывается не из JavaScript, а непосредственно в HTML. Тут конечно дело вкуса, но мне и нашим редакторам нравится, что поле редактора не замирает при простой вставке текста из буфера.

Неоспоримое преимущество SPAW2 - встроенный файл-менеджер. Действительно мощный инструмент, и, опять-таки, бесплатный.

SPAW2 доступен для PHP и .NET, но так как с дотнетом я не дружу, все записи на этом блоге будут касаться именно PHP.

В этом посте я расскажу, как установить и начать использовать SPAW2.

Прежде всего, как бы банально не звучало, нужно скачать дистрибутив. Сделать это можно, пройдя вот по этой ссылке – http://www.spaweditor.com/en/disp.php/en_products/en_spaw/en_spaw_download

Установка

Тут все более чем просто. Достаточно лишь распаковать архив, скопировать или переименовать файл config.default.php в config.php, и отредактировать его по своему вкусу.

Настройка

В отличие от 1.х, все настройки хранятся внутри специального класса SpawConfig. Чтобы добавить параметр конфигурации, используется метод setStaticConfigItem(), который принимает 3 аргумента. Первые два – это имя параметра и его значение. Третий параметр определяет, как значение этого параметра будет передаваться между отдельными компонентами SPAW Editor и плагинами.

Основные параметры

Пути

Эти настройки определяют месторасположение файлов SPAW на сервере. Чаще всего, правильные значения вычисляются автоматически, но иногда требуется более специфичная настройка.

Имя Описание
DOCUMENT_ROOT Определяет расположение корневой директории вашего сайта на сервере.
SPAW_ROOT Определяет путь к папке SPAW на сервере.
SPAW_DIR Определяет путь от корня сайта до директории SPAW.

Установки редактора по-умолчанию

Эти параметры применяются, если они не будут переопределены в экземпляре SPAW.

Имя Описание
default_lang Язык интерфейса. Значение по умолчанию – en (English).
default_output_charset Кодировка, используемая для вывода. Если значение – пустая строка – будет использована кодировка, указанная в язфковом файле текущего языка.
default_theme Имя темы интерфейса (skin).
default_toolbarset Набор панелей инструментов (toolbar) по-умолчанию.
default_stylesheet Путь к таблице стилей CSS, которая по умолчанию будет применена к области редактирования.
default_width Ширина окна редактора по-умолчанию
default_height Высота окна редактора по-умолчанию

Настройки движка SPAW

Эти настройки определяют внутреннее поведение различных компонентов движка SPAW

Имя Описание
USE_ICONV Определяет, должна ли языковая подсистема использовать функции iconv для преобразования строк к выбранной кодировке. Если в вашей сборке PHP iconv недоступен, установите этот параметр в false. В других ситуациях можете оставить этот параметр установленным в true, даже если вам не нужна функциональность конверсии символов.
rendering_mode Определяет, какой метод рендеринга HTML должен быть использован. Доступные значения: xhtml и builtin. Режим xhtml предписывает SPAW использовать собственные механизмы рендеринга для генерации хорошо согласованного кода XHTML в различных браузерах, builtin – предписывает использовать механизмы текущего браузера. builtin работает быстрее, но генерирует разный код в разных браузерах.
beautify_xhtml_output Если установлено в true, подсистема рендеринга XHTML «украсит» конечную структуру html отступами и пр.
base_href Определяет строку, состоящую из протокола, хоста и порта (например, http://mydomain.com), которая будет добавлена к url, возвращаемым файл-менеджером. Используйте совместно с strip_absolute_urls для принудительного избавления от абсолютных путей.
strip_absolute_urls Если установлено в true, SPAW обрежет части домена и пути из всех «локальных» (относящихся к данному веб-сайту и/или директории) url в ссылках и изображениях. Замечание: Microsoft Internet Explorer преобразовывает все url в абсолютные, поэтому данная настройка является обходным путем для избавления от абсолютной части, присоединяемой IE к введенным пользователями относительным url.
resizing_directions Определяет в каких направлениях пользователь может менять размер окна редактора. Доступыне значение: none, horizontal, vertical, both
convert_html_entities Указывает необходимость преобразования спецсимволов в соответствующие html-сущности (например © и др.)

Значения выпадающих списков

Эти параметры содержат данные, используемые для заполнения выпадающих списков в панелях инструментов и диалогах. Их значения – массивы PHP, ключи которых трансформируются в значения элементов выпадающего меню, а значения наоборот – станут названиями этих элементов. (Логичнее было бы сделать так, чтобы ключи оставались ключами, а значения – значениями. Но разрабочики, видимо, посчитали, что это будет сильно просто – прим. переводчика).

Имя Описание
dropdown_data_core_style Список классов CSS для выпадающего списка Стили. Пустая строка удалит аттрибут class HTML-элемента
table_styles Список классов CCS, которые используются в диалоге Свойства таблицы
dropdown_data_core_fontname Список имен шрифтов выпадающего списка Шрифт
dropdown_data_core_fontsize Список размеров шрифта выпадающего списка Размер
dropdown_data_core_formatBlock Список стилей параграфа выпадающего списка Параграф
a_targets Список целей (targets) ссылок диалога Ссылка

Наборы панелей инстументов

Набор панелей инструментов – это всего лишь составленный список панелей инструментов. Вы можете указать отображаемые панели инструментов в вашем экземпляре SPAW по одной или определить набор, содержащий все необходимые панели инструментов. Следующая таблица содержит список встроенных наборов панелей инструментов. Вы также можете создать свои собственные наборы панелей инструментов.

Стандартные панели инструментов называются так: edit, format, font, insert, table, tools и plugins. Разработчики тем определяют место для размещения панелей инструментов, но вы можете подменить стандартную панель инструментов своей. (Имеется в виду, что если ваша собственная панель не помещается в отведенное разработчиком темы место, вы можете подменить одну из стандартных панелей – прим. переводчика.) Чтобы подменить стандартную панель, установите ключом массива имя стандартной панели инструментов (например, format), а значением - имя своей панели инструментов (например, format_mini). Посмотрите для наглядного примера определение набора панели инструментов «mini» из конфигурационного файла по-умолчанию. Элементы конфигурации, определяющие наборы панелей инструментов начинаются со строки »toolbarset_» за которой следует имя панели инструментов. Для более точного понимания настройки панелей инструментов, прочитите соответствующий раздел. (Этот раздел будет переведен позже – прим. переводчика).

Имя Описание
toolbarset_standard Включает все стандартные панели инструментов, кроме панели font
toolbarset_all Включает все стандартные панели инструментов
toolbarset_mini Включает панели edit и tools, а также урезанную версию панели format

Предопределенные палитры цветов

Начиная с версии 2.0.3, появилась возможность изменять предустановленные цвета в палитре диалога выбора цветов. Чтобы сделать это, установите параметр colorpicker_predefined_colors. Значением этого параметра должен быть массив из не более чем 16 элементов. Каждый элемент массива должен быть значением цвета в CSS-совместимом формате.

Настройки плагина SPAW File Manager

Плагин File Manager позволяет управлять файлами на сервере и вставлять их в редактируемый текст (например, изображения, flash-ролики). Также он дает возможность контролировать доступ ваших пользователей к их файлам, и что им позволено с этими файлами делать.
Для настройки файл-менеджера SPAW под ваши потребности, вам нужно указать два главных параметра: глобальный массив настроек, который определяет, что может быть сделано с директориями, доступными через файл-менеджер SPAW, и собственно список директорий. Глобальные настройки могут быть переопределены для каждой конкретной директории, поэтому вы можете позволить обработку только изображений в директории «Изображения», только flash-ролики в директории «Flash» и так далее. Вот детальное описание для каждого из этих двух главных параметров:

Имя Описание
PG_SPAWFM_SETTINGS Глобальные параметры для всех директорий, указанные в виде пар параметр => значение:

  • allow_upload – логическое значение, определяющее возможность загрузки файлов, по-умолчанию – false;
  • max_upload_filesize – целое значение, указывающее максимально возможный размер загружаемых файлов в байтах (будьте внимательны, что параметр upload_max_filesize из php.ini имеет больший приоритет, поэтому данный параметр должен быть меньше), или ноль для игнорирования данной опции (по-умолчанию);
  • max_img_width – целое значение, определяющее максимально допустимую ширину загужаемых изображений, или ноль для игнорирования (по-умолчанию);
  • max_img_height – целое значение, определяющее максимально допустимую высоту загужаемых изображений, или ноль для игнорирования (по-умолчанию);
  • chmod_to – восьмиричное значени режима доступа, к которому будет сделана попытка chmod для загружаемых файлов, или false для пренебрежения (по-умолчанию);
  • allow_modify – логическое значение, определяющее возможность удаления файлов, по-умолчанию – false;
  • allowed_filetypes – массив имен типов файлов (images/flash/documents/audio/video/archives/any), определяющий, файлы какого типа(ов) будут отображены в списке/позволенный для закачки. Вы можете добавить свой собственный тип файлов или изменить существующие добавив/отредактировав список расширений в файле /plugins/spawfm/config/config.php. Все
    определенные типы файлов позволены по-умолчанию;
  • recursive – логическое значение, определяющее возможность просмотра/открытия подкаталогов, false по-умолчанию;
  • allow_create_subdirectories – логическое значение, определяющее возможность создания подкаталогов (параметр recursive должен быть установлен в true), false по-умолчанию;
  • allow_modify_subdirectories – логическое значение, определяющее возможность переименования/удаления подкаталогов (параметр recursive должен быть установлен в true), false по-умолчанию;
  • forbid_extensions – массив строк, определяющий небезопасные расширения. Файлы с такими расширениями нельзя загружать (а также переименовывать). Установите этот параметр в конфигурационном файле по-умолчанию как array(‘php’), чтобы каждый раз не проверять, не пропущена ли эта настройка;
  • forbid_extensions_strict – логическое значение, которое запрещает использование расширений внутри имен файлов. (Например, file.php.jpg. Некоторые сервера могут быть настроены так, что если пропущена настройка расширения JPG, они выполнят этот файл, как сценарий PHP. Поэтому использование расширений внутри имен файлов может быть опасным.) Этот параметр установлен в true и рассматривается как false в противном случае. Он проверяется только при установленном параметре forbid_extensions.
PG_SPAWFM_DIRECTORIES Определяет доступные через файл-менеджер SPAW директории. Указывается в виде массива, в котором каждой директории соответствует подмассив пар параметр => значение:

  • dir – путь к директории, относительно URL домена (или параметра base_href, если он установлен). Пример: если ваши изображения находятся в «www.domain.com/files/images/», установите этот параметр в «/files/images/». Начиная с версии 2.0.2 этот параметр может также быть абсолютным URL, но в таком случае параметр fsdir также должен быть установлен. Этот параметр обязателен.
  • fsdir – абсолютный путь в файловой системе (необязательный). Если этот параметр установлен, он определяет, где необходимо производить поиск файлов, в противном случае поиск файлов будет производиться в расположении, указанном в параметре dir. В любом случае файл-менеджер SPAW вернет значение, указанное в параметре dir, как путь в сетевом адресе выбранного файла (предварив его значением параметра base_href, если последний указан). Пример: если ваш веб-узел размещается в директории «/usr/data/www/domain/» и доступен по адресу www.domain.com, но ваши изображений хранятся в «/usr/data/www/other_domain/images/», но доступны по адресу http://www.domain.com/images/ – вам необходимо установить dir в «/images/» и fsdir в «/usr/data/www/other_domain/images/».
  • caption – название директории, которое отображается в файл-менеджере SPAW. Если этот параметр не определен, будет отображен путь к директории, поэтому caption – необязательный параметр.
  • params – массив любых глобальных настроек, которые вы хотите переопределить для этой директории, а также необязательный параметр default_dir (устанавите его в true, чтобы эта директория открывалась по-умолчанию). Это необязательный параметр.

На этом пока все. Вторую часть перевода я планирую закончить после выходных.

Share

Автор: Кирилл Павлюков \\ Метки: , , ,

  1. Плагин Spaw для Smarty | Кирилл Павлюков пишет:

    [...] проект, использующий Zend Framework и Smarty. Как я уже недавно писал, мой любимый визуальній редактор – Spaw Editor от компании [...]


15 коммент. к “Документация по визуальному редактору SPAW для платформы PHP”

  1. 1. galo4kin пишет:

    Дело в том, что при работе со SPAW нашел заметный для меня «-» по отношению к WISIWIG (точное название не помню). А дело в том, что при создании ссылки нет возможности указать ее значение class.
    Внутри текста у меня все ссылки при наведении отображают контрастирующий background, но это ужастно выглядит, когда ссылкой является изображение.
    Пример можно посмотреть на странице http://www.promenergozao.ru/kv-02-104_k-104

    Возможно я просто упустил какие то настройки функционала, однако прошу у вас помощи в решении данного вопроса.

    Спасибо, заранее.

  2. 2. Кирилл Павлюков пишет:

    galo4kin, можно без проблем написать свой плагин для SPAW, чтобы реализовать эту функциональность. Или можно доработать стандартный диалог plugins/core/dialogs/hyperlink.*, который входит в поставку СПАВ

  3. 3. Алекс Креонт пишет:

    Огромное спасибо за статью, как раз искал чего-нибудь по-русски о SPAW…

  4. 4. galo4kin пишет:

    Кирилл, тоже подумал о написании своего мода, да вот только знаний пока не хватает, да и времени.

    Возник еще вопрос, по поиску опять зашел на вашу страницу – дело в том, что спав при выделении слова жирным стилем ставит около слова следующий тег

    Можно ли настроить редактор так, чтобы взамен этого он просто тег или писал?!

    Это куда приятнее и поисковики лучше кушают…

    Спасибо заранее за ответ

  5. 5. galo4kin пишет:

    В выше указанном топе были указаны теги

    span style=font-weight: bold;

    а так же

    b или strong

  6. 6. Юрий пишет:

    Можно ли как то ограничить количество вводимых символов с помощью настроек. Например в одном месте надо не более 255 – в другом – без ограничений.

  7. 7. Юрий пишет:

    не могу включить закачку файлов. все делаю как в хелпе – кнопка аплоад не активна

  8. 8. Кирилл Павлюков пишет:

    galo4kin, я думаю, подобный функционал можно реализовать через плагин. С другой стороны, вводимые данные можно (и нужно) обрабатывать на стороне PHP. С помощью регулярки ваша задача решается в одну строку.

    Юрий, на счет символов – никогда не сталкивался. Но в настройках подобной инструкции нигде нет. Так что, вряд ли.
    По поводу закачки – вариантов может быть множество. Для начала проверьте, чтобы у папки, в которую вы хотите закачивать файлы, были разрешения (chmod) на запись для сервера. Кстати, еще эта папка должна физически существовать. То есть, Spaw не создает папки «на лету». Они должны быть созданы вручную.

  9. 9. Владимир пишет:

    может ли редактор вставлять изображения в меньшем виде, а при нажатие на него на сайте, оно отображалась в полную величину?

  10. 10. Кирилл Павлюков пишет:

    Не может. Но эта проблема легко решается.
    В редакторе можно указать требуемый размер изображения. А в ПХП с помощью регулярки можно найти все изображения в тексте, а затем заменить их на уменьшенные копии требуемого размера.
    Кстати, спасибо, вы меня натолкнули на мысль о написании соответствующего поста. Завтра этим и займусь.

  11. 11. sergey пишет:

    вопрос – а можно завтравить редактор транслировать русские буквы в анг. при использовании файлового менеджера???

  12. 12. Кирилл Павлюков пишет:

    Sergey, я не совсем понимаю ваш вопрос… Если вы имеете ввиду русские символы в именах файлов, тогда мой ответ: «Нет». Редактор этого не умеет. Но можно подправить код загрузчика файлов, и реализовать в нем нужный функционал.

  13. 13. Dain пишет:

    Чтобы транслитерировать имена файлов при загрузке (ох как в своё время бесила эта проблема), можно вот что сделать:

    В файле spaw2/plugins/spawfm/class/spawfm.class.php найти метод uploadFile($uplfile) и добавить туда, скажем, свой метод (его можно прописать и как метод того же класса, думаю никто не обидится) после проверки на загруженность файла:

    if (is_uploaded_file($uplfile['tmp_name'])) {

    Например, я написал свою функцию, которая прогоняет строку на предмет наличия кириллических и ряда спец.символов и меняет на эквивалент. Назвал её translitirate.
    Было:

    if (is_uploaded_file($uplfile['tmp_name'])) {
    $ext = SpawFm::getFileExtension($uplfile['name']);

    Стало:

    if (is_uploaded_file($uplfile['tmp_name'])) {
    $uplfile_tmp_name = $this->translitirate($uplfile['name']);
    $ext = SpawFm::getFileExtension($uplfile_tmp_name);

  14. 14. Алексей пишет:

    SPAW режет javascript, вставленный в редакторе посредством закладки html? Gsnfkcz вставить Яндекс-карту с помощью их кода – обломался.

  15. 15. пластиковые окна, ремонт, регулировка пишет:

    Недорогой ремонт и восстановление окон в Петербурге

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