Как установить адаптивные изображения с CKEditor 5? - PullRequest
0 голосов
/ 19 февраля 2020

Используя Адаптер простой загрузки , в соответствии с документацией CKEditor 5 при успешной загрузке изображения сервер должен вернуть либо:

Это для одного изображения :

{
    default: 'http://example.com/images/image–default-size.png'
}

Или это для нескольких (то есть для атрибута srcset)

{
    default: 'http://example.com/images/image–default-size.png',
    '160': 'http://example.com/images/image–size-160.image.png',
    '500': 'http://example.com/images/image–size-500.image.png',
    '1000': 'http://example.com/images/image–size-1000.image.png',
    '1052': 'http://example.com/images/image–default-size.png'
}

Для начала документация неверна согласно этой SO-записи , поэтому я Я не удивлен, что это не работает. Но кто-нибудь знает, какой формат ответа CKEditor 5 ожидает, чтобы он правильно вставил / собрал атрибут srcset? Для этого требуется ключ default, но, похоже, другие игнорируются!

1 Ответ

0 голосов
/ 20 февраля 2020

Внутри функции _initListeners адаптера загрузки вы обнаружите, что Обещание только разрешается следующим образом:

resolve( {
    default: response.url
} );

Решение - измените Обещание, чтобы разрешить следующее:

resolve( response.urls );

Обратите внимание, что в этом примере объект ответа может иметь либо ключи url, либо urls.

В итоге я использовал следующее: Я игнорирую пустые ключи в ответах моего сервера.

if ( response.hasOwnProperty( 'url' ) ) {
    resolve( {
        default: response.url
    } );
} else if ( response.hasOwnProperty( 'urls' ) ) {
    resolve( response.urls );
}

В качестве примечания, если вы прочитали другой пост SO, на который я ссылался, я бы также рекомендовал удалить его (см. Раздел с комментариями) :

if ( !response /** || !response.uploaded */ ) {
    return reject( response && response.error && response.error.message ? response.error.message : genericError );
}

Я не фанат использования произвольных флагов в ответ, если загрузка не удалась, я бы предпочел увидеть код состояния HTTP, указывающий это, я не вижу никакой причины, почему нам нужно вернуть 200 и { "uploaded" : false }

...