- added sections to the lesson to handle multiple sesions like examples and exercises
- added livecode integration to lesson pages
- autosave and submiting the answers is not done yet
Widgets are reusable jinja templates which can be used in other
themplates. Widgets are written in widgets/ directory in every frappe
module and can be accessed as `{{ widgets.WidgetName(...) }}` from any
template.
frappe app doesn't load all python modules of all the apps on startup. It
loads the hooks.py only if it is not already cached. Because of this the code
to install the regex coverter to not running, causing errors.
Fixed it by replacing the regex route with a string route. The issue is it
also matches the paths like `socket.io` and `website_script.js` etc. Handled
that by whitelisting those routes.
- The code to install regex controller was not always executed. Forced the
exection of that by adding it to community/__init__.py
- Renoved the that code from hooks.py
The URL of a sketch will be `/skectes/<sketch-name>`. That would still be like
`/skectes/SKETCH-123`. It would interesting to try to make it `/sketches/123`.
The URL of a course will be `/courses/<course-name>` and a topic will be
`/courses/<course-name>/<topic-name>`.
Implemented this by adding entries to `website_route_rules`.