Гобелен - кликните для возврата на главную
Не прошло и месяца а Фурмановская ЦРБ в очередной раз попала в историю. На этот раз сотрудница клеветала на пациентов, а именно огласку получил случай когда сотрудница назвала пациента алкашём.
Ровно 3 года назад произошло событие, которое подарило жителям планеты Змеля новый чистый праздник 6 апреля - в этот замечательный день земля забрала гнить негодяя и СПАМера Жладимира Вольфовича Жириновского.
Начал разбираться с информацией которая находится в HTTPS клиентском запросе рукопожатия.
Обратите внимание! Объект изображённый на гобилене может отличаться от общепринятого вида описанного объекта. Тут дело в том что художник видит именно так!
Tinymce написал: "A valid API key is required to continue using TinyMCE".
Сообщение "A valid API key is required to continue using TinyMCE" означает, что для использования редактора TinyMCE требуется действительный API-ключ. Это связано с тем, что TinyMCE, начиная с версии 5.10.0, требует API-ключа для доступа к облачным сервисам, таким как загрузка изображений, проверка орфографии и других функций, которые зависят от облачной инфраструктуры TinyMCE.
Как решить проблему:
Получите API-ключ:
Добавьте API-ключ в конфигурацию TinyMCE:
После получения ключа добавьте его в конфигурацию TinyMCE в вашем проекте. Пример:
tinymce.init({
selector: 'textarea', // Селектор для текстового поля
apiKey: 'ваш-api-ключ', // Ваш API-ключ
plugins: 'advlist autolink lists link image charmap print preview anchor',
toolbar: 'undo redo | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat | help'
});
Проверьте лимиты использования:
Бесплатный план TinyMCE имеет ограничения на количество запросов. Если вы превысите лимит, вам нужно будет перейти на платный тариф.
Используйте локальные плагины (опционально):
Если вы не хотите использовать облачные функции TinyMCE, вы можете отключить их и использовать локальные плагины. Для этого удалите зависимость от API-ключа и настройте TinyMCE для работы без облачных сервисов.
Пример:
tinymce.init({
selector: 'textarea',
plugins: 'advlist autolink lists link image charmap print preview anchor',
toolbar: 'undo redo | formatselect | bold italic backcolor | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | removeformat | help',
// Отключение облачных функций
images_upload_url: 'your-local-upload-endpoint', // Локальный эндпоинт для загрузки изображений
spellchecker_language: 'en',// Локальная проверка орфографии
});
Обновите TinyMCE:
Убедитесь, что вы используете последнюю версию TinyMCE, так как старые версии могут не поддерживать новые функции или иметь устаревшие конфигурации.
Если у вас возникнут дополнительные вопросы, обратитесь к документации TinyMCE или в поддержку TinyMCE.
В продолжении сообщения я передам текущие настройки tinyMCE при которых возникла ошибка API ключа(я привёл её выше). Поправьте пожалуйста настройки, при этом отключите только функции работа которых не возможна в отсутствии API ключа. Вот текущий JavaSript с настройками
<script>
tinymce.init({
selector: '.wysiwyg-editor', // Класс для всех редакторов
plugins: 'image media link code', // Плагины для изображений, видео и ссылок
toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | outdent indent | image media link code',// Панель инструментов
images_upload_url: 'upload_image.php', // URL для загрузки изображений
automatic_uploads: true, // Автоматическая загрузка изображений
media_live_embeds: true, // Вставка видео (например, YouTube)
file_picker_types: 'image media', // Типы файлов для выбора
});
</script>
Чтобы отключить только те функции TinyMCE, которые требуют API-ключа, и оставить остальные настройки без изменений, нужно убрать облачные зависимости, такие как проверка орфографии (spellchecker) и другие функции, которые используют облачные сервисы TinyMCE. В вашем текущем конфиге таких функций нет, но если они появятся, их нужно будет отключить.
Вот исправленный код с комментариями:
<script>
tinymce.init({
selector: '.wysiwyg-editor', // Класс для всех редакторов
plugins: 'image media link code', // Плагины для изображений, видео и ссылок
toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | outdent indent | image media link code', // Панель инструментов
images_upload_url: 'upload_image.php', // URL для загрузки изображений (локальный эндпоинт)
automatic_uploads: true, // Автоматическая загрузка изображений
media_live_embeds: true, // Вставка видео (например, YouTube)
file_picker_types: 'image media', // Типы файлов для выбора
// Отключение функций, требующих API-ключа
// Если вы используете spellchecker, его нужно отключить, так как он требует API-ключа
// spellchecker: false, // Раскомментируйте, если spellchecker включен
});
</script>
Что изменено:
Что осталось без изменений: все локальные функции (загрузка изображений, вставка медиа, ссылки и код) работают без API-ключа.
Если в будущем вы захотите добавить функции, требующие API-ключа (например, проверку орфографии), вам нужно будет получить API-ключ и добавить его в конфигурацию:
apiKey: 'ваш-api-ключ',
С предложенными настройками ошибка ключа осталась.
Если ошибка "A valid API key is required to continue using TinyMCE" сохраняется даже после отключения функций, требующих API-ключа, это может быть связано с тем, что TinyMCE по умолчанию пытается загрузить некоторые облачные ресурсы или использует плагины, которые зависят от API-ключа. Давайте полностью отключим все облачные зависимости и убедимся, что TinyMCE работает в полностью локальном режиме.
Исправленный код с отключением всех облачных зависимостей:
<script>
tinymce.init({
selector: '.wysiwyg-editor',//Класс для всех редакторов
plugins: 'image media link code',//Плагины для изображений, видео и ссылок
toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | outdent indent | image media link code',//Панель инструментов
images_upload_url: 'upload_image.php',//URL для загрузки изображений (локальный эндпоинт)
automatic_uploads: true,//Автоматическая загрузка изображений
media_live_embeds: true,//Вставка видео (например, YouTube)
file_picker_types: 'image media',//Типы файлов для выбора
//Отключение всех облачных зависимостей
//1. Отключаем загрузку скриптов и стилей из облака TinyMCE
tinymceScriptSrc: '/path/to/local/tinymce/tinymce.min.js',//Укажите путь к локальной версии TinyMCE
// 2. Отключаем проверку орфографии (если используется)
spellchecker: false,
//3. Отключаем все облачные сервисы
cloud_channel: 'off',//Отключаем облачные каналы
//4. Отключаем автоматическую загрузку emojis и других облачных ресурсов
emoticons_database: 'off',
});
</script>
Что изменено:
Отключение облачных зависимостей:
Дополнительные шаги:
Если ошибка сохраняется:
Ошибка сохранилась: вот полный html:
<?php
$question = array("question_text" => "Текст вопроса", "is_multiple_choice" => 1);
?><!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Редактирование вопроса</title>
<!-- Подключение TinyMCE -->
<script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/6/tinymce.min.js" referrerpolicy="origin"></script>
<script>
tinymce.init({
selector: '.wysiwyg-editor', // Класс для всех редакторов
plugins: 'image media link code', // Плагины для изображений, видео и ссылок
toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | outdent indent | image media link code', // Панель инструментов
images_upload_url: 'upload_image.php', // URL для загрузки изображений (локальный эндпоинт)
automatic_uploads: true, // Автоматическая загрузка изображений
media_live_embeds: true, // Вставка видео (например, YouTube)
file_picker_types: 'image media', // Типы файлов для выбора
// Отключение всех облачных зависимостей
// 1. Отключаем загрузку скриптов и стилей из облака TinyMCE
tinymceScriptSrc: '/path/to/local/tinymce/tinymce.min.js', // Укажите путь к локальной версии TinyMCE
// 2. Отключаем проверку орфографии (если используется)
spellchecker: false,
// 3. Отключаем все облачные сервисы
cloud_channel: 'off', // Отключаем облачные каналы
// 4. Отключаем автоматическую загрузку emojis и других облачных ресурсов
emoticons_database: 'off',
});
</script>
</head>
<body>
<!-- Форма редактирования вопроса -->
<h1>Редактирование вопроса</h1>
<form method="post" enctype="multipart/form-data">
<div>
<label>Текст вопроса:</label>
<textarea name="question_text" class="wysiwyg-editor"><?= htmlspecialchars($question['question_text']) ?></textarea>
</div>
<div>
<label>
<input type="checkbox" name="is_multiple_choice" value="1" <?= $question['is_multiple_choice'] ? 'checked' : '' ?>>
Несколько правильных ответов
</label>
</div>
<div>
<h2>Ответы:</h2>
<?php foreach ($answers as $answer): ?>
<div>
<label>Текст ответа:</label>
<textarea name="answers[<?= $answer['id'] ?>][text]" class="wysiwyg-editor"><?= htmlspecialchars($answer['answer_text']) ?></textarea>
<label>
<input type="checkbox" name="answers[<?= $answer['id'] ?>][is_correct]" value="1" <?= $answer['is_correct'] ? 'checked' : '' ?>>
Правильный ответ
</label>
</div>
<?php endforeach; ?>
</div>
<button type="submit">Сохранить</button>
</form>
</body>
</html>
Ошибка "A valid API key is required to continue using TinyMCE" возникает из-за того, что вы используете облачную версию TinyMCE через CDN (https://cdn.tiny.cloud/1/no-api-key/tinymce/6/tinymce.min.js). Начиная с версии TinyMCE 5.10.0, для использования облачной версии редактора требуется API-ключ, даже если вы не используете облачные функции, такие как проверка орфографии или загрузка изображений в облако.
Решение проблемы:
Чтобы избавиться от ошибки, есть два варианта:
Вариант 1: Использовать локальную версию TinyMCE
Локальная версия TinyMCE не требует API-ключа и работает полностью на вашем сервере.
Обновите ваш HTML-код:Замените ссылку на облачную версию TinyMCE на локальную.
<script src="/path/to/local/tinymce/tinymce.min.js"></script>
Обновите конфигурацию TinyMCE: убедитесь, что вы не используете облачные функции.
tinymce.init({
selector: '.wysiwyg-editor', // Класс для всех редакторов
plugins: 'image media link code', // Плагины для изображений, видео и ссылок
toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | outdent indent | image media link code', // Панель инструментов
images_upload_url: 'upload_image.php', // URL для загрузки изображений (локальный эндпоинт)
automatic_uploads: true, // Автоматическая загрузка изображений
media_live_embeds: true, // Вставка видео (например, YouTube)
file_picker_types: 'image media', // Типы файлов для выбора
// Отключение всех облачных зависимостей
spellchecker: false, // Отключаем проверку орфографии
});
Убедитесь, что локальные файлы доступны: проверьте, что браузер может загрузить TinyMCE с вашего сервера. Например, откройте в браузере:
http://ваш-сайт/path/to/local/tinymce/tinymce.min.js
Вариант 2: Получить API-ключ (если хотите использовать облачную версию)
Если вы хотите использовать облачную версию TinyMCE, вам нужно получить API-ключ.
Получите API-ключ:
Обновите ваш HTML-код: добавьте API-ключ в ссылку на TinyMCE.
<script src="https://cdn.tiny.cloud/1/ВАШ_API_КЛЮЧ/tinymce/6/tinymce.min.js" referrerpolicy="origin"></script>
Обновите конфигурацию TinyMCE: добавьте API-ключ в конфигурацию.
tinymce.init({
selector: '.wysiwyg-editor',
plugins: 'image media link code',
toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | outdent indent | image media link code',
images_upload_url: 'upload_image.php',
automatic_uploads: true,
media_live_embeds: true,
file_picker_types: 'image media',
apiKey: 'ВАШ_API_КЛЮЧ',//Добавьте API-ключ
});
Итоговый код для локальной версии TinyMCE:
Если вы выбрали Вариант 1, вот как будет выглядеть ваш полный HTML-код:
<?php
$question = array("question_text" => "Текст вопроса", "is_multiple_choice" => 1);
?>
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<title>Редактирование вопроса</title>
<!-- Подключение TinyMCE (локальная версия) -->
<script src="/path/to/local/tinymce/tinymce.min.js"></script>
<script>
tinymce.init({
selector: '.wysiwyg-editor', // Класс для всех редакторов
plugins: 'image media link code', // Плагины для изображений, видео и ссылок
toolbar: 'undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | outdent indent | image media link code', // Панель инструментов
images_upload_url: 'upload_image.php', // URL для загрузки изображений (локальный эндпоинт)
automatic_uploads: true, // Автоматическая загрузка изображений
media_live_embeds: true, // Вставка видео (например, YouTube)
file_picker_types: 'image media', // Типы файлов для выбора
spellchecker: false, // Отключаем проверку орфографии
});
</script>
</head>
<body>
<!-- Форма редактирования вопроса -->
<h1>Редактирование вопроса</h1>
<form method="post" enctype="multipart/form-data">
<div>
<label>Текст вопроса:</label>
<textarea name="question_text" class="wysiwyg-editor"><?= htmlspecialchars($question['question_text']) ?></textarea>
</div>
<div>
<label>
<input type="checkbox" name="is_multiple_choice" value="1" <?= $question['is_multiple_choice'] ? 'checked' : '' ?>>
Несколько правильных ответов
</label>
</div>
<div>
<h2>Ответы:</h2>
<?php foreach ($answers as $answer): ?>
<div>
<label>Текст ответа:</label>
<textarea name="answers[<?= $answer['id'] ?>][text]" class="wysiwyg-editor"><?= htmlspecialchars($answer['answer_text']) ?></textarea>
<label>
<input type="checkbox" name="answers[<?= $answer['id'] ?>][is_correct]" value="1" <?= $answer['is_correct'] ? 'checked' : '' ?>>
Правильный ответ
</label>
</div>
<?php endforeach; ?>
</div>
<button type="submit">Сохранить</button>
</form>
</body>
</html>
Рекомендация:
Если вам не нужны облачные функции (например, проверка орфографии или облачная загрузка изображений), используйте локальную версию TinyMCE. Это избавит вас от необходимости использовать API-ключ и сделает редактор полностью независимым от облачных сервисов.
Какую версию скачивать: Download TinyMCE Community или Download TinyMCE Dev Package?
Для большинства случаев, включая ваш, лучше скачивать TinyMCE Community. Вот подробное объяснение:
TinyMCE Community
Особенности:
Когда выбирать:
TinyMCE Dev Package
Особенности:
Когда выбирать:
Рекомендация для вашего случая
Поскольку вы используете TinyMCE для стандартного WYSIWYG-редактора с базовыми функциями (загрузка изображений, вставка медиа, ссылки и т.д.), вам подойдёт TinyMCE Community. Она стабильна, проста в использовании и не требует API-ключа.
Как скачать TinyMCE Community
Подключите TinyMCE в вашем проекте, указав путь к локальному файлу:
<script src="/path/to/local/tinymce/tinymce.min.js"></script>
Пример структуры папок после скачивания
/path/to/local/tinymce/
├── icons/
├── langs/
├── plugins/
├── skins/
├── themes/
├── tinymce.min.js
└── ...
Итог
Вы так же можете прочитать следующие статьи: