home chevron_right
Wizard actions (перечень и назначения)

Перечень и код action-скриптовlink

Wizard actions в SF4 — это набор “исполняемых действий”, которые мастер выполняет по цепочке шагов: подготовка директорий, копирование/правка файлов, импорт данных, применение настроек, обновление URL-rewrite и т.д.

Код действия — это имя каталога внутри:

  • /simai/wizard/action/<action_code>/…

В одной поставке действия могут быть реализованы по-разному:

  • action.php — исполняемый скрипт действия;
  • class.php — действие реализовано классом (используется мастером как библиотека/исполнитель);
  • только .description.php — в поставке есть описание действия, но нет исполняемой части (на практике такое действие не выполняется и его стоит воспринимать как легаси/заготовку).

Основные группыlink

file.*link

Это действия “файлового уровня” — работа с файлами решения, которые мастер раскладывает на сайт.

Набор, который присутствует в поставке 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.copyreplace.code (раскладка файлов + подгонка кодов/префиксов под выбранный сайт).

iblock.*link

Это действия импорта/экспорта, работающие с пакетами данных (инфоблоки, секции, свойства, контент и связанные сущности).

Набор, который присутствует в поставке 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.*link

Это действия уровня “сайт/решение”: выбор сайта, установка/обновление, применение данных и подготовка инфраструктуры.

Набор, который присутствует в поставке 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.filelink

Это действия “работы с данными мастера” — загрузить/сохранить файлы, добавить конфиги, переложить свойства.

Набор, который присутствует в поставке 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 и др.link

Сюда попадает всё, что не укладывается в основные группы, но нужно для полноценного мастера:

  • agreement (исполняемое) — шаг “соглашение/подтверждение” (часто первый шаг мастера).
  • info (исполняемое) — информационный шаг (пояснение пользователю, что будет сделано).
  • redirect (исполняемое) — перенаправление (например, после выполнения/ошибки).
  • dir.make (исполняемое) — создание директорий. Параметр: список путей (строк), которые нужно создать.
  • dir.choice, language.choice (только описание) — легаси/заготовки (в текущем виде не исполняются).
  • translate.check (исполняемое) — проверка/служебная логика вокруг “перевода” (наличие исполняемой части есть; считать deprecated без дополнительного подтверждения нельзя — требует уточнения).
  • install.check (только описание) — в текущем виде это легаси/заготовка.

В документации: как фиксировать назначение и “deprecated”link

Рекомендуемая формулировка для документации SF4:

  • если у действия есть action.php или class.php — описывать как рабочее действие мастера;
  • если есть только .description.php — отмечать как: “В поставке присутствует описание без исполняемой части; в актуальной цепочке мастера действие не выполняется (легаси/заготовка).”

Так вы избегаете двусмысленности: читатель сразу понимает, что реально доступно “из коробки”.

Для наглядности: 1–2 сценария установки/обновленияlink

Ниже — два типовых сценария, которые хорошо объясняют, как actions складываются в “реальный мастер”.

Сценарий: iblock.import.archive.sveden — импорт пакета “сведений” из ZIPlink

Смысл действия: взять 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* — выбор сайта и применение установки/обновленийlink

Смысл цепочки:

  1. мастер получает контекст (какой сайт/язык/режим установки);
  2. раскладывает файлы решения;
  3. применяет настройки и обновления;
  4. при необходимости подготавливает и дописывает 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)link

Перед тем как считать мастер “готовым”:

  • выбранные actions действительно исполняемые (есть action.php/class.php для тех шагов, что используются);
  • пакеты (ZIP-архивы и т.п.) лежат по ожидаемым путям и доступны на чтение;
  • конфиг шагов заполнен так, чтобы данные предыдущих шагов передавались следующим (data_input_code / data_output_code);
  • права на выполнение есть (минимум: доступ администратора, права на запись в целевые директории);
  • нет 404/ошибок прав при переходе по шагам мастера;
  • результаты проверены: файлы на месте, структура данных импортировалась, правила urlrewrite применились.