Skip to content

Форматированный текст описаний ​

Описания задач и проектов — форматированный текст: заголовки, жирный, курсив, подчёркнутый, зачёркнутый, цвет текста, маркированные и нумерованные списки, ссылки. Хранится как безопасное подмножество HTML, которое пишет редактор интерфейса.

Сервер ​

Пакет internal/richtext:

  • Sanitize — оставляет только разрешённые теги (p, br, strong, em, u, s, h2–h4, ul, ol, li, blockquote, a, span, code, pre, mark, hr; синонимы b, i, strike, h1 приводятся к ним) и атрибуты: у ссылки — href только http(s), mailto: и пути приложения (ставится target="_blank" rel="noopener noreferrer"), в style — только color с безопасным значением (#hex, rgb()). Скрипты, стили, фреймы, обработчики событий и всё остальное выбрасываются. Текст без тегов (прежние описания) не меняется.
  • ToText — читаемый текст: абзацы и заголовки с новой строки, пункты «- » / «1. ». Его получают помощник (get_task, get_project), длина описания считается по нему.

Где применяется: создание и правка задачи (tasks.normalizeDescription, не больше 10 000 символов текста), проекта (projects.normalizeProjectDescription, 5 000 символов), задачи шаблонов, план из шаблона, задачи автодействий. Потолок вместе с разметкой — 60 000 байт.

Помощник ​

«Сформулировать задачу» пишет описание в Markdown (жирный, списки), интерфейс переводит его в форматированный текст перед вставкой в редактор.

Загружаем документацию…