setup.options.php в последней версии modExtra

Всем привет. Сделал компонент на основе modExtra, но захотелось сделать установку компонентов по checkbox, но в новой версии нет файла setup.options.php и я не совсем понимаю как сделать при установке компонента форму, где можно было бы выбрать чекбоксами нужные компоненты для установки?

Посмотрел в miniShop2 и сделал свой файлик /_build/setup.options.php:

<?php
$exists = $chunks = false;
$output = null;
/** @var array $options */
switch ($options[xPDOTransport::PACKAGE_ACTION]) {
	case xPDOTransport::ACTION_INSTALL:
		$exists = $modx->getObject('transport.modTransportPackage', array('package_name' => 'pdoTools'));
		if (!empty($options['attributes']['chunks'])) {
			$chunks = '<ul id="formCheckboxes" style="height:200px;overflow:auto;">';
			foreach ($options['attributes']['chunks'] as $k => $v) {
				$chunks .= '
				<li>
					<label>
						<input type="checkbox" name="update_chunks[]" value="' . $k . '"> ' . $k . '
					</label>
				</li>';
			}
			$chunks .= '</ul>';
		}
		break;
	case xPDOTransport::ACTION_UPGRADE:
		$exists = $modx->getObject('transport.modTransportPackage', array('package_name' => 'pdoTools'));
		if (!empty($options['attributes']['chunks'])) {
			$chunks = '<ul id="formCheckboxes" style="height:200px;overflow:auto;">';
			foreach ($options['attributes']['chunks'] as $k => $v) {
				$chunks .= '
				<li>
					<label>
						<input type="checkbox" name="update_chunks[]" value="' . $k . '"> ' . $k . '
					</label>
				</li>';
			}
			$chunks .= '</ul>';
		}
		break;
	case xPDOTransport::ACTION_UNINSTALL:
		break;
}
$output = '';
if (!$exists) {
	switch ($modx->getOption('manager_language')) {
		case 'ru':
			$output = 'Этот компонент требует <b>pdoTools</b> для быстрой работы сниппетов.
Он будет автоматически скачан и установлен.';
			break;
		default:
			$output = 'This component requires <b>pdoTools</b> for fast work of snippets.

It will be automatically downloaded and installed?';
	}
}
if ($chunks) {
	if (!$exists) {
		$output .= '

';
	}
	switch ($modx->getOption('manager_language')) {
		case 'ru':
			$output .= 'Выберите чанки, которые нужно <b>перезаписать</b>:
				<small>
					<a href="#" onclick="Ext.get(\'formCheckboxes\').select(\'input\').each(function(v) {v.dom.checked = true;});">отметить все</a> |
					<a href="#" onclick="Ext.get(\'formCheckboxes\').select(\'input\').each(function(v) {v.dom.checked = false;});">cнять отметки</a>
				</small>
			';
			break;
		default:
			$output .= 'Select chunks, which need to <b>overwrite</b>:
				<small>
					<a href="#" onclick="Ext.get(\'formCheckboxes\').select(\'input\').each(function(v) {v.dom.checked = true;});">select all</a> |
					<a href="#" onclick="Ext.get(\'formCheckboxes\').select(\'input\').each(function(v) {v.dom.checked = false;});">deselect all</a>
				</small>
			';
	}
	$output .= $chunks;
}
return $output;
Списки всех компонентов у меня в файлике /_build/resolvers/setup.php в виде:

<?php
/** @var xPDOTransport $transport */
/** @var array $options */
/** @var modX $modx */
if (!$transport->xpdo || !($transport instanceof xPDOTransport)) {
    return false;
}

$modx =& $transport->xpdo;
$packages = [
    'Ace' => [
        'version' => '1.6.5-pl',
        'service_url' => 'modstore.pro',
    ],
    'AjaxForm' => [
        'version' => '1.1.9-pl',
        'service_url' => 'modstore.pro',
    ],
    'ClientConfig' => [
        'version' => '2.0.0-pl',
        'service_url' => 'modx.com',
    ],
В файле упаковщике /_build/build.php добавил пару строк:

$root = dirname(dirname(__FILE__)) . '/';
        $this->builder->setPackageAttributes([
            'changelog' => file_get_contents($this->config['core'] . 'docs/changelog.txt'),
            'license' => file_get_contents($this->config['core'] . 'docs/license.txt'),
            'readme' => file_get_contents($this->config['core'] . 'docs/readme.txt'),
			'setup-options' => array(
				'source' => $root . '_build/' . 'setup.options.php',
			),
        ]);
но у меня что-то не завелось. Ставяться все подряд без выбора нужных. Может кто-нибудь помочь?

Проект на GitHub
SEQUEL.ONE
02 августа 2018, 14:52
modx.pro
918
0

Комментарии: 1

SEQUEL.ONE
04 августа 2018, 01:09
0
Вообщем как оказалось всё работает, осталось сделать чекбоксы с выбором компонентов, которые нужно загружать при установке компонента)
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    1