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));
        }
    }
}Всем добра!)    
            
                Поблагодарить автора            
            
                 Отправить деньги            
        
        
            
        0