SimpleForms/ru

From Wiki4Intranet
Jump to: navigation, search

SimpleForms — расширение MediaWiki.

  • Назначение: Вставка форм для создания вики-страниц по шаблону. Отрефакторенная версия расширения.
  • Репозиторий: https://github.com/mediawiki4intranet/SimpleForms
  • Домашняя страница: http://wiki.4intra.net/SimpleForms, SimpleForms на mediawiki.org 
  • Версия MediaWiki: гарантирована совместимость с 1.18+, возможна с другими
  • Лицензия: GPLv2.0+ 
  • Дата создания: 2007-04-25 
  • Последняя версия: 0.5 (2013-01-21) 
  • Оценка расширения: Возможно полезное (3)

Включение в сборку Mediawiki4Intranet:

  • Дата включения: 2010-10-26
  • Включённая версия: последняя
  • Состояние доработок: Значительно доработано в сборке MediaWiki4Intranet

Использование

Идеи использования расширения:

  1. (Хорошая) добавить на страницу форму с какими-то полями, а по нажатию кнопки собирать и сохранять из значений этих полей новую страницу по какому-либо шаблону.
  2. (Хуже, но сойдёт) добавить на страницу форму, которая может показать результат выполнения шаблона с учётом переданных полей формы, никуда его не сохраняя. Что-то вроде предварительного просмотра формы.
  3. (Совсем дурацкая) с помощью данного расширения добавить на страницу произвольную форму, отправляющую произвольные данные на произвольный ресурс. Данная идея совсем плоха — произвольные формы проще задать в виде чистого HTML в блоке <html> </html>, к чему и перешли авторы, когда забросили данное расширение.

И оригинальная версия расширения, и наша могут выполнять все 3 пункта.

Делается это с помощью 4-х новых функций парсера: form, input, formend и request.

Пример использования:

{{#form: content = {{#dpl:category={{subst:#request:cat}}}} }}
{{#input: type = select | name = cat |
  * Select category
  * Category 1
  * Category 2
}}
{{#input: type = ajax | value = Preview list}}

Title: {{#input: type = text | name = pagename}}
{{#input: type = save | value = Save page}}
{{#input: type = edit | value = Preload edit form}}

{{#formend:}}

Здесь:

  • Нажатие Preview list покажет будущий результат внизу формы
  • Нажатие Save page сохранит результат подстановки на страницу, название которой будет в поле pagename
  • Нажатие Preload edit form откроет обычную форму редактирования страницы, название которой будет в поле pagename, с содержимым, заполненным из результата подстановки.

Обратите внимание на {{subst:#request:cat}}. Это и есть та подстановка, которая будет выполнена при сохранении статьи. Прочитать о subst подробнее можно в Manual:Substitution.

Отличия от оригинальной версии

Оригинальная версия данного расширения представляет из себя ужасное наслоение кривых хаков, имеет потенциальные проблемы безопасности, заброшена авторами и на MediaWiki 1.18 уже не заводится.

В нашей версии многие проблемы исправлены:

  • Код расширения помещён в git-репозиторий :) и более не хранится на вики-странице.
  • Ликвидирован наикривейший хак со страницей UNTITLED, использовавшийся для показа HTML-текста страницы, ни на какой странице не сохранённого.
  • Улучшена безопасность:
    • Оригинальный Simple Forms перезаписывал ЛЮБУЮ статью, если в запросе был всего лишь один параметр content. Наша версия сохраняет страницы только из одного места, со спецстраницы-обработчика.
    • Добавлена проверка EditToken’ов при сохранении страниц.
    • Проверка прав доступа при сохранении страниц более корректна.
  • Добавлена возможность заполнения формы редактирования страницы (input type=edit).
  • Добавлено раскрытие подстановок (subst). Как можно было использовать расширение без этого — загадка.
  • Убран мёртвый код, локализация вынесена в отдельный файл. классы вынесены в отдельные файлы с автозагрузкой, JS вынесен в отдельный файл, подгружающийся ResourceLoader’ом.
  • Убрана функция paramtype, по ошибке кроме того называвшася paratype.

Несовместимые изменения:

  • Чтобы с формы можно было сохранить страницу, нужно указать input type=save вместо input type=submit.

Установка

Процедура установки стандартная, нужно включить в LocalSettings.php:

require_once "$IP/extensions/SimpleForms/SimpleForms.php";