Модерация виджетов
  1. Виджет не должен собирать пользовательскую информацию(API ключ, email и другие данные), если в ней нет необходимости для функционирования виджета. Если данная информация нужна для работы — при установке, пользователь должен быть уведомлен о том, что данные будут отправлены на сервер виджета. При этом, пользователь должен подтвердить данный пункт, без подтверждения виджет не должен устанавливаться!
  2. Файл manifest.json должен быть корректно составлен.
    • Количество используемых локализаций должно быть равно количеству langфайлов и они должны быть корректно заполнены.
    •  
    • Так же необходимо сообщить нашей системе будет ли виджет использовать правую колонку для отображения. Делается это путём указания требуемой зоны с ключём 1(clist-1, lcard-1и тд). Более подробная информация находится здесь.
    • С ноября 2018 появился новый обязательный раздел в manifest.json widget/support/ содержащий ключи: widget/support/link   - Ссылка на поддержку интеграции, widget/support/email  - Email технической поддержки.
  3. Код не должен быть минимизирован или обфусцирован(за исключением подключаемых библиотек).
  4. Кодировка файлов - UTF-8 без BOM. Все файлы должны использовать перевод строки Unix LF.
  5. Разрешены комментарии поясняющие фрагменты скрипта или css-файла. Но закомментированного кода в виджете быть не должно.
  6. Виджет не должен изменять страницы, которые не включены в разрешенный список. Запрещается скрывать/изменять/ подменять рейтинги и отзывы в разделе интеграции и модальном окне настроек виджетов.
  7. В архиве не должно быть неиспользуемых файлов картинок, скриптов и прочих файлов, которые не задействованы в работе виджета.
  8. Виджет не должен в css файлах иметь общие классы с нашей системой. Все стили должны быть указаны относительно корневого селектора виджета. Это даёт возможность внутри виджета переопределять какие угодно стили, не затрагивая системные. Можно - #amo_widget_code .control-select { color: green }. Нельзя - .control-select { color: red }.
  9. Запрещены манипуляции с глобальными селекторами CSS.
  10. Дополнительные плагины виджета не должны ссылаться на временную папку виджета - upl, так как эта папка будет доступна только в private, при переводе в public данная папка будет недоступна. 
  11. Не должно быть тестовых данных, конструкций типа console.log, print_r и тп.
  12. В виджете не должно быть подключения внешних файлов-зависимостей через document.createElement('script') и вставку этого элемента напрямую в head. Все внешние зависимости должны подключаться через requirejs в блоке зависимостей в define. 
  13. Дополнительные плагины или иные внешние подключения в виджет не должны грузиться с внешних ресурсов за исключением публичных библиотек, наподобие cdnjs.com. Подключение сторонней библиотеки для php-части обсуждается отдельно.
  14. При получении данных из системной переменной AMOCRM они должны быть проверены на существование, исключение составляют данные из AMOCRM.constant("account") и AMOCRM.constant("user").
  15. Виджет не должен влиять на данные в глобальной переменной AMOCRM, он может только читать данные оттуда. 
  16. Если используется php-часть, все переменные и действия должны быть проверенны, не должно быть пустых методов. Уделите особое внимание проверке переменных на существование - любой warning или notice приведёт к падению виджета. 
  17. Запрещены ajax-запросы, XMLHttpRequest, WebSockets в циклах. URLзапрос должен содержать timeout не более 2 секунд.