Tikets загрузка избражений в TV
Столкнулся с проблемкой, а именно загрузкой изображения в свои TV типов image или file, из коробки Tikets загружает файлы и привязывает их к ресурсам, мне показалось это не удобным (на вкус и цвет...)
Поле в форме добавления/редактирования тикета: tv_name — ваше тв поле
Вешаем на событие: OnDocFormSave
Для оптимизации использую сниппет phpthumbon (строка 43, можно указать свой или через вcтроеный phpThumb)
Код плагина:
Поле в форме добавления/редактирования тикета: tv_name — ваше тв поле
<input type="file" class="form-control" placeholder="Логотип проекта" name="tv_name" value="" id="ticket-tv_name">
Плагин: ticketUploadImageВешаем на событие: OnDocFormSave
Для оптимизации использую сниппет phpthumbon (строка 43, можно указать свой или через вcтроеный phpThumb)
Код плагина:
<?php
/* @var modX $modx */ // Ссылка на объект modX
/* @var modResource $resource */ // Ссылка на объект modResource
/* @var modMediaSource $source */ // Ссылка на объект modMediaSource
if ($modx->event->name == 'OnDocFormSave' && $modx->context->key != 'mgr') {
$id = $resource->get('id'); // Получаем ID текущего ресурса
$source_id = $modx->config['tickets.source_default']; // Получаем ID медиа-источника
if (!$_FILES) return; // Если файлы не загружены, выходим из функции
// Получаем свойства медиа-источника
$source = $modx->getObject('modMediaSource', $source_id);
if ($source) {
$properties = $source->getProperties();
$exts = $properties["allowedFileTypes"]["value"]; // Разрешенные типы файлов
$basePath = $properties["basePath"]["value"]; // Базовый путь медиа-источника
$baseUrl = $properties["baseUrl"]["value"]; // Базовый URL медиа-источника
$maxUploadWidth = $properties["maxUploadWidth"]["value"]; // Максимальная ширина загружаемого изображения
$maxUploadHeight = $properties["maxUploadHeight"]["value"]; // Максимальная высота загружаемого изображения
// Обрабатываем каждый загруженный файл
foreach ($_FILES as $tv => $item_f) {
$format = substr(strrchr($item_f['name'], '.'), 1); // Получаем расширение файла
// Проверяем, разрешен ли формат файла
if (!in_array($format, explode(",", $exts))) continue;
// Проверяем, правильно ли загружен файл
if (!is_uploaded_file($item_f["tmp_name"])) continue;
// Создаем директорию для загруженных файлов
@mkdir(MODX_BASE_PATH . $basePath . $id . DIRECTORY_SEPARATOR . $tv, 0755, true);
// Генерируем уникальное имя файла на основе его имени и формата
$imageNew = MODX_BASE_PATH . $basePath . $id . DIRECTORY_SEPARATOR . $tv . DIRECTORY_SEPARATOR . $id . "_" . md5($item_f['name']) . "." . $format;
// Копируем загруженный файл в целевую директорию
rename($item_f["tmp_name"], $imageNew);
// Генерируем эскиз с помощью сниппета phpthumbon
$tmpImg = $modx->runSnippet('phpthumbon', array('input' => $imageNew, 'options' => "&w=$maxUploadWidth&h=$maxUploadHeight&zc=0&f=$format"));
// Перемещаем сгенерированный эскиз в конечное местоположение
if($tmpImg) rename(MODX_BASE_PATH . $tmpImg, $imageNew);
// Устанавливаем значение Переменной Шаблона (TV) в относительный путь загруженного файла
$resource->setTVValue($tv, str_replace(MODX_BASE_PATH . $basePath, '', $imageNew));
}
}
}
Всем добра!)
Поблагодарить автора
Отправить деньги