На сайте есть ноды, объединённые в цепочки (с помощью Book или Nodequeue – вопрос решается). В начале у пользователя должен быть только доступ к самой первой ноде в цепочке (настраивается через модуль ACL). Нода представляет собой некоторую задачу на написание программного кода. В ней есть группа полей с парами input-output: input – это то, что может быть на входе, output – соответствующий ответ.
Что требуется от модуля
Модуль должен добавлять к таким нодам окно для написания кода и отправки его на исполнение в Sphere Engine (ideone.com/sphere-engine). Язык программирования указывается при создании ноды. Вместе с кодом нужно отослать input-данные, результат выполнения (если выполнилось успешно) сравнить с output. Если пар input-output несколько, то нужно проделать эти операции с каждой парой (прогнать все тесты). Если на каком-то тесте результат не совпал, то дальше тесты не проводятся.
Отправка и получение результата должно происходить в фоне, без перезагрузки страницы (AJAX).
По итогам пользователю должен быть выведен результат: либо сообщение об ошибке компиляции или во время выполнения, либо сообщение о непройденном тесте, либо сообщение об успешном написании программы.
Если все тесты пройдены, то пользователю должен быть выдан через ACL доступ к следующей ноде в цепочке.
Также нужна отдельная страница для каждой цепочки нод с отображением, какие задачи решены, какие нет.
Все отправки кода должны сохраняться в виде Entity отдельного типа, привязанные к ноде. Эти Entity должны быть доступны через Views для формирования различных страниц (страницы администратора со всеми отправками, страница пользователя с только его отправками и т.п.).
Оцените по стоимости, сроку разработки. Обязательно пишите про ваш опыт работы с Drupal 7.