Рассмаривайте расширение как самостоятельный статический веб-сайт.
- Создайте директорию
dir_name
- это будет корневая директория расширения.
В качествеdir_name
рекомендуем использовать идентификатор расширения, но это не обязательно. - В корневой директории создайте файлы:
Обязательные должны присутсвовать:
extension.json
- файл описания расширения (формат файла см. ниже).index.html
- это точка входа для вашего расширения.path/to/logo/ext_logo
- логотип вашего расширения.
Опционально:- Другие необходимые вам сценарии JavaScript, CSS и другие файлы,
с любой структурой директорий и файлов.
Примечание: Но не создавайте директориюimports
в корне расширения. Содержимое этой директории будет недоступно для вашего расширения. Это специальная директория для импорта глобальных библиотек и ресурсов в ваше расширение. Можете создавать эту директорию во время отладки вашего расширения, разместив в ней необходимые библиотеки, например, jQuery, Bootstrap и т.д. Но не не помещайте эту директории в пакет расширений.
- Упакуйте расширение в пакет (zip-архив).
- Загрузите его на
ext.stepik.org
Для примеров смотрите расширения в директории packages
{
"id": "com.example.extension",
"name": "Name your extension",
"description": "Description for your extension",
"logo": "path/to/logo",
"allow_anonymous_user": true,
"version": "1.0",
"package_version": "1.0"
}
id
- придумайте уникальный идентификатор расширения, например, для расширений
созданных в Stepik используются: org.stepik.extensions.extension_id
.
Идентификатор расширения может содержать только цифры, латинские буквы, знак подчеркивания,
а также точку в качестве разделителя групп символов, но нельзя чтобы точка была в начале или в конце,
а также запрещено несколько точек подряд. Не более 64 символов.
name
- имя вашего расширения (Не более 32 символов).
description
- описание вашего расширения, для чего оно предназначено (Не более 1024 символов).
logo
- путь к логотипу расширения (относительно корня расширения). Например, img/logo.png
.
allow_anonymous_user
- если false
, то для запуска расширения необходима аутентификация пользователя на Stepik.
version
- версия расширения. Не более 15 символов.
package_version
- версия формата файла extension.json
.
Все поля обязательные.
Во время работы расширения, есму доступны следующие библиотеки:
- imports/requirejs/require.js 2.3.3
- imports/jquery/jquery.min.js 3.2.1
- imports/bootstrap/dist/js/bootstrap.min.js 3.3.7
- imports/bootstrap/dist/css/bootstrap.min.css
- imports/bootstrap/dist/css/bootstrap-theme.min.css
- imports/bootstrap-fileinput/dist/js/fileinput.min.js
- imports/bootstrap-fileinput/dist/css/fileinput.min.css
- imports/bootstrap-select/dist/js/bootstrap-select.min.js
- imports/bootstrap-select/dist/css/bootstrap-select.min.css
- imports/Flot/jquery.flot.js
- imports/Flot/jquery.flot.errorbars.js
- imports/Flot/jquery.flot.time.js
- imports/js/stepik-api.js
Все пути относительно корня расширения. Импортируйте нужные вам глобальные библиотеки и расширения
будто бы они расположены в корне вашего расширения imports/...
.
Пакет - это одно или несколько расширений, упакованных в zip-архив.
Для одного раширения в пакете:
package.zip<br>
|_ extension.json<br>
|_ index.html<br>
|_ logo.png
|_ ...
или
package.zip
|_ ext_dir
|_ extension.json
|_ index.html
|_ logo.png
|_ ...
Для нескольких расширений в пакете:
package.zip
|_ ext_1_dir
| |_ extension.json
| |_ index.html
| |_ logo.png
| |_ ...
|
|_ ext_2_dir
|_ extension.json
|_ index.html
|_ logo.png
|_ ...
- Если вы используете глобальные библиотеки, то на время отладки создайте
директорию
imports
и поместите туда, необходимые библиотеки и ресурсы (например для jQuery, imports/jquery/js/jquery.min.js). - Откройте файл index.html в браузере.
-- раздел в разработке --
- Всплывающие окна блокируются
- Будут открываться только ссылки с
target=_self
, всё остальное заблокировано.
Backend
Django 1.10.6
Frontend
ES6
mkvirtualenv -p `which python3` extensions
make init
Первый запуск:
workon extensions
make init
python manage.py migrate
make frontend
make prepare_run
python manage.py runserver
Следующие запуски:
workon extensions
make prepare_run
python manage.py runserver
make zip-packages
make translate-apps-js
make prepare_production
py.test apps/<app_name>/tests.py