Перечень и код action-скриптов
Wizard actions в SF4 — это набор “исполняемых действий”, которые мастер выполняет по цепочке шагов: подготовка директорий, копирование/правка файлов, импорт данных, применение настроек, обновление URL-rewrite и т.д.
Код действия — это имя каталога внутри:
/simai/wizard/action/<action_code>/…
В одной поставке действия могут быть реализованы по-разному:
action.php— исполняемый скрипт действия;class.php— действие реализовано классом (используется мастером как библиотека/исполнитель);- только
.description.php— в поставке есть описание действия, но нет исполняемой части (на практике такое действие не выполняется и его стоит воспринимать как легаси/заготовку).
Основные группы
file.*
Это действия “файлового уровня” — работа с файлами решения, которые мастер раскладывает на сайт.
Набор, который присутствует в поставке SF4:
file.copy(исполняемое) — пакетное копирование файлов/каталогов по списку. Типовой параметр пакета:SOURCE,DESTINATION, опциональноREWRITE(логика перезаписи при конфликте).file.create(исполняемое) — создание файла(ов) по заданному списку (используется, когда нужно гарантированно создать пустышки/заготовки).file.delete(исполняемое) — удаление файлов/каталогов по списку (чистка при установке/обновлении).file.rename(исполняемое) — переименование по списку правил.replace.code(исполняемое) — рекурсивная замена “кодов” (например, префиксов сущностей/пакетов) в структуре файлов проекта.file.add,file.zip,file.unzip,file.encode.win1251(в поставке только описание, без исполняемой части) — воспринимать как легаси/заготовки: в текущем виде они не выполняются мастером.
Важно для документации: в реальных сценариях SF4 чаще всего достаточно связки file.copy → replace.code (раскладка файлов + подгонка кодов/префиксов под выбранный сайт).
iblock.*
Это действия импорта/экспорта, работающие с пакетами данных (инфоблоки, секции, свойства, контент и связанные сущности).
Набор, который присутствует в поставке SF4:
iblock.import.archive(исполняемое) — импорт из ZIP-архива (структура + контент).iblock.export.archive(исполняемое) — экспорт структуры/контента в архив (используется при подготовке пакетов).iblock.import.archive.sveden(исполняемое) — вариант импорта архива для пакетов “сведений” (внутри реализован полноценный разбор содержимого архива и загрузка сущностей).iblock.translate(исполняемое) — действие перевода/локализации данных. Статус “deprecated” по одному наличию кода подтвердить нельзя: требует уточнения, используется ли оно в актуальных мастерах.
Дополнительно рядом с iblock-группой идут действия, которые фактически обслуживают импорт/настройку структуры:
iblockconfig.import.data(исполняемое) — импорт конфигураций для “публичного редактора/форм” (где требуется загрузить схему полей/вкладок/настроек).iblocksection.import.data(исполняемое) — импорт данных по секциям (служебные структуры/привязки).iblocktype.export.data(исполняемое) — экспорт типов инфоблоков.iblocktype.import.data(в поставке только описание, без исполняемой части) — воспринимать как легаси/заготовку.
site.*
Это действия уровня “сайт/решение”: выбор сайта, установка/обновление, применение данных и подготовка инфраструктуры.
Набор, который присутствует в поставке SF4:
site.choice.sveden(исполняемое) — выбор сайта/контекста установки (вариант для сценариев “sveden”).site.choice.install(исполняемое) — выбор/подготовка установки (прикладной шаг в цепочке мастера).site.updateиsite.update.sveden(исполняемые) — применение обновлений/настроек к сайту (общий и “sveden” сценарии).site.export.data(исполняемое) — экспорт данных по сайтам (например, для упаковки/миграций).site.choice,site.create,site.import.data,site.translate(в поставке только описание, без исполняемой части) — воспринимать как легаси/заготовки.
Также к “site-инфраструктуре” относятся действия для urlrewrite:
prepare.urlrewrite(исполняемое) — подготовка/нормализация/urlrewrite.phpпод сценарий решения.urlrewrite.add(исполняемое) — подключение дополнительного файла с правилами urlrewrite (типовой параметр:SOURCE— путь к подключаемому PHP-файлу правил).
option., usergroup., shortlink.*: экспорт/импорт настроек
Это действия, которые позволяют мастеру переносить инфраструктурные данные между средами.
option.export.data/option.import.data(исполняемые) — экспорт/импорт настроек модулей (COption). Формат параметров: ассоциативный массив вида"<module>" => ["OPTION_1", "OPTION_2", ...].usergroup.export.data/usergroup.import.data(исполняемые) — перенос групп пользователей (в текущей реализации параметр может не требоваться — действие само получает список групп).shortlink.export.data/shortlink.import.data(исполняемые) — перенос коротких ссылок (в текущей реализации параметр может не требоваться).
data.*: add.config / add.property / import.file / export.file
Это действия “работы с данными мастера” — загрузить/сохранить файлы, добавить конфиги, переложить свойства.
Набор, который присутствует в поставке SF4:
data.import.file(исполняемое) — импорт файла в контекст мастера (обычно используется как “подхватить файл пакета/конфига”).data.export.file(исполняемое) — экспорт файла из контекста мастера (типовой параметр:FILE— путь к файлу, с которым работаем).data.add.config,data.add.property— в текущей поставкеdata.add.configисполняемое, аdata.add.propertyприсутствует только как описание (легаси/заготовка).
misc: agreement, info, redirect, install.check, translate.check, language.choice, dir.choice/dir.make и др.
Сюда попадает всё, что не укладывается в основные группы, но нужно для полноценного мастера:
agreement(исполняемое) — шаг “соглашение/подтверждение” (часто первый шаг мастера).info(исполняемое) — информационный шаг (пояснение пользователю, что будет сделано).redirect(исполняемое) — перенаправление (например, после выполнения/ошибки).dir.make(исполняемое) — создание директорий. Параметр: список путей (строк), которые нужно создать.dir.choice,language.choice(только описание) — легаси/заготовки (в текущем виде не исполняются).translate.check(исполняемое) — проверка/служебная логика вокруг “перевода” (наличие исполняемой части есть; считать deprecated без дополнительного подтверждения нельзя — требует уточнения).install.check(только описание) — в текущем виде это легаси/заготовка.
В документации: как фиксировать назначение и “deprecated”
Рекомендуемая формулировка для документации SF4:
- если у действия есть
action.phpилиclass.php— описывать как рабочее действие мастера; - если есть только
.description.php— отмечать как: “В поставке присутствует описание без исполняемой части; в актуальной цепочке мастера действие не выполняется (легаси/заготовка).”
Так вы избегаете двусмысленности: читатель сразу понимает, что реально доступно “из коробки”.
Для наглядности: 1–2 сценария установки/обновления
Ниже — два типовых сценария, которые хорошо объясняют, как actions складываются в “реальный мастер”.
Сценарий: iblock.import.archive.sveden — импорт пакета “сведений” из ZIP
Смысл действия: взять ZIP-пакет, распаковать и импортировать из него структуру/контент (инфоблоки, свойства, секции, элементы и связанные данные). Это “центр тяжести” установки для решений, где контент и структура поставляются архивами.
Типовой формат параметров в шаге мастера — список пакетов, где каждый пакет задаёт:
source— путь к ZIP-архиву пакета;destination— “группа/назначение” (логический код, под который мастер складывает результат);site— код сайта (например,ru);save— опциональная политика сохранения (например,all).
Пример (фрагмент шага в конфиге мастера):
array(
"code" => "iblock.import.archive.sveden",
"data_input_code" => "site_config",
"data_output_code" => "iblock_output",
"parameter" => array(
array(
"source" => Wizard::getLocal(__DIR__) . "/data/iblock/sf-ru-doc-edu.zip",
"destination" => "sf_ru_sveden",
"site" => "ru",
"save" => "all",
),
array(
"source" => Wizard::getLocal(__DIR__) . "/data/iblock/sf-ru-info.zip",
"destination" => "sf_ru_sveden",
"site" => "ru",
"save" => "all",
),
),
),
Где обычно лежат пакеты: внутри каталога мастера решения (часто …/wizard/…/data/iblock/*.zip) либо подгружаются из внешнего источника и сохраняются в рабочую директорию мастера (конкретная политика зависит от реализации решения).
Сценарий: site.choice.* / site.update* — выбор сайта и применение установки/обновлений
Смысл цепочки:
- мастер получает контекст (какой сайт/язык/режим установки);
- раскладывает файлы решения;
- применяет настройки и обновления;
- при необходимости подготавливает и дописывает
urlrewrite.
На практике цепочка часто выглядит как:
site.choice.sveden(илиsite.choice.install) — выбрать сайт и сформировать входные данные для следующих шагов;file.copy— разложить файлы решения по целевым путям;replace.code— подстроить коды/префиксы под выбранный сайт;iblock.import.archive*— загрузить структуру/контент;site.update/site.update.sveden— применить финальные настройки;prepare.urlrewrite+urlrewrite.add— привести urlrewrite к нужному виду и подключить дополнительные правила.
Важная часть для воспроизводимости: цепочка задаётся в конфиге мастера, и именно он фиксирует порядок, входы/выходы шагов и пакеты.
Чек-лист готовности (wizard)
Перед тем как считать мастер “готовым”:
- выбранные actions действительно исполняемые (есть
action.php/class.phpдля тех шагов, что используются); - пакеты (ZIP-архивы и т.п.) лежат по ожидаемым путям и доступны на чтение;
- конфиг шагов заполнен так, чтобы данные предыдущих шагов передавались следующим (
data_input_code/data_output_code); - права на выполнение есть (минимум: доступ администратора, права на запись в целевые директории);
- нет 404/ошибок прав при переходе по шагам мастера;
- результаты проверены: файлы на месте, структура данных импортировалась, правила urlrewrite применились.