Reorganize documentation files for i18n
STUD-1094
This commit is contained in:
Binary file not shown.
|
Before Width: | Height: | Size: 157 KiB |
@@ -1,5 +0,0 @@
|
||||
{% extends "!layout.html" %}
|
||||
|
||||
{% block header %}
|
||||
<img src="{{ pathto("_static/homepage-bg.jpg", 1) }}" alt="Edx logo" width="100%;"/>
|
||||
{% endblock %}
|
||||
@@ -1,7 +0,0 @@
|
||||
*******************************************
|
||||
Calc
|
||||
*******************************************
|
||||
|
||||
.. automodule:: calc
|
||||
:members:
|
||||
:show-inheritance:
|
||||
@@ -1,52 +0,0 @@
|
||||
*******************************************
|
||||
Capa module
|
||||
*******************************************
|
||||
Contents:
|
||||
|
||||
.. module:: capa
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
|
||||
Capa_problem
|
||||
============
|
||||
|
||||
.. automodule:: capa.capa_problem
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Checker
|
||||
=======
|
||||
|
||||
.. automodule:: capa.checker
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Correctmap
|
||||
==========
|
||||
|
||||
.. automodule:: capa.correctmap
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Customrender
|
||||
============
|
||||
|
||||
.. automodule:: capa.customrender
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Inputtypes
|
||||
==========
|
||||
|
||||
.. automodule:: capa.inputtypes
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Resposetypes
|
||||
============
|
||||
|
||||
.. automodule:: capa.responsetypes
|
||||
:members:
|
||||
:show-inheritance:
|
||||
@@ -1,69 +0,0 @@
|
||||
*******************************************
|
||||
Chemistry modules
|
||||
*******************************************
|
||||
|
||||
.. module:: chem
|
||||
|
||||
Miller
|
||||
======
|
||||
|
||||
.. automodule:: chem.miller
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
UI part and inputtypes
|
||||
----------------------
|
||||
Miller module is used in the system in crystallography problems.
|
||||
Crystallography is a class in :mod:`capa` inputtypes module.
|
||||
It uses *crystallography.html* for rendering and **crystallography.js**
|
||||
for UI part.
|
||||
|
||||
Documentation from **crystallography.js**::
|
||||
|
||||
For a crystallographic problem of the type
|
||||
|
||||
Given a plane definition via miller indexes, specify it by plotting points on the edges
|
||||
of a 3D cube. Additionally, select the correct Bravais cubic lattice type depending on the
|
||||
physical crystal mentioned in the problem.
|
||||
|
||||
we create a graph which contains a cube, and a 3D Cartesian coordinate system. The interface
|
||||
will allow to plot 3 points anywhere along the edges of the cube, and select which type of
|
||||
Bravais lattice should be displayed along with the basic cube outline.
|
||||
|
||||
When 3 points are successfully plotted, an intersection of the resulting plane (defined by
|
||||
the 3 plotted points), and the cube, will be automatically displayed for clarity.
|
||||
|
||||
After lotting the three points, it is possible to continue plotting additional points. By
|
||||
doing so, the point that was plotted first (from the three that already exist), will be
|
||||
removed, and the new point will be added. The intersection of the resulting new plane and
|
||||
the cube will be redrawn.
|
||||
|
||||
The UI has been designed in such a way, that the user is able to determine which point will
|
||||
be removed next (if adding a new point). This is achieved via filling the to-be-removed point
|
||||
with a different color.
|
||||
|
||||
|
||||
|
||||
Chemcalc
|
||||
========
|
||||
|
||||
.. automodule:: chem.chemcalc
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Chemtools
|
||||
=========
|
||||
|
||||
.. automodule:: chem.chemtools
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Tests
|
||||
=====
|
||||
|
||||
.. automodule:: chem.tests
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
*******************************************
|
||||
CMS module
|
||||
*******************************************
|
||||
|
||||
|
||||
.. module:: cms
|
||||
.. toctree::
|
||||
|
||||
transcripts.rst
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
Common / lib
|
||||
===============================
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
xmodule.rst
|
||||
capa.rst
|
||||
chem.rst
|
||||
sandbox-packages.rst
|
||||
symmath.rst
|
||||
calc.rst
|
||||
|
||||
@@ -1,195 +0,0 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
#pylint: disable=C0103
|
||||
#pylint: disable=W0622
|
||||
#pylint: disable=W0212
|
||||
#pylint: disable=W0613
|
||||
|
||||
import sys, os
|
||||
|
||||
on_rtd = os.environ.get('READTHEDOCS', None) == 'True'
|
||||
|
||||
sys.path.append('../../../')
|
||||
|
||||
from docs.shared.conf import *
|
||||
|
||||
|
||||
# Add any paths that contain templates here, relative to this directory.
|
||||
templates_path.append('source/_templates')
|
||||
|
||||
|
||||
# Add any paths that contain custom static files (such as style sheets) here,
|
||||
# relative to this directory. They are copied after the builtin static files,
|
||||
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||
html_static_path.append('source/_static')
|
||||
|
||||
|
||||
# If extensions (or modules to document with autodoc) are in another directory,
|
||||
# add these directories to sys.path here. If the directory is relative to the
|
||||
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||
sys.path.insert(0, os.path.abspath('../../..'))
|
||||
root = os.path.abspath('../../..')
|
||||
|
||||
sys.path.append(root)
|
||||
sys.path.append(os.path.join(root, "common/djangoapps"))
|
||||
sys.path.append(os.path.join(root, "common/lib"))
|
||||
sys.path.append(os.path.join(root, "common/lib/sandbox-packages"))
|
||||
sys.path.append(os.path.join(root, "lms/djangoapps"))
|
||||
sys.path.append(os.path.join(root, "lms/lib"))
|
||||
sys.path.append(os.path.join(root, "cms/djangoapps"))
|
||||
sys.path.append(os.path.join(root, "cms/lib"))
|
||||
sys.path.insert(0, os.path.abspath(os.path.normpath(os.path.dirname(__file__)
|
||||
+ '/../../')))
|
||||
sys.path.append('.')
|
||||
|
||||
# django configuration - careful here
|
||||
if on_rtd:
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'lms'
|
||||
else:
|
||||
os.environ['DJANGO_SETTINGS_MODULE'] = 'lms.envs.test'
|
||||
|
||||
|
||||
# -- General configuration -----------------------------------------------------
|
||||
|
||||
# Add any Sphinx extension module names here, as strings. They can be extensions
|
||||
# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
|
||||
extensions = [
|
||||
'sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx',
|
||||
'sphinx.ext.todo', 'sphinx.ext.coverage', 'sphinx.ext.pngmath',
|
||||
'sphinx.ext.mathjax', 'sphinx.ext.viewcode']
|
||||
|
||||
# List of patterns, relative to source directory, that match files and
|
||||
# directories to ignore when looking for source files.
|
||||
exclude_patterns = ['build']
|
||||
|
||||
|
||||
# Output file base name for HTML help builder.
|
||||
htmlhelp_basename = 'edXDocs'
|
||||
|
||||
# --- Mock modules ------------------------------------------------------------
|
||||
|
||||
# Mock all the modules that the readthedocs build can't import
|
||||
import mock
|
||||
|
||||
class Mock(object):
|
||||
def __init__(self, *args, **kwargs):
|
||||
pass
|
||||
|
||||
def __call__(self, *args, **kwargs):
|
||||
return Mock()
|
||||
|
||||
@classmethod
|
||||
def __getattr__(cls, name):
|
||||
if name in ('__file__', '__path__'):
|
||||
return '/dev/null'
|
||||
elif name[0] == name[0].upper():
|
||||
mockType = type(name, (), {})
|
||||
mockType.__module__ = __name__
|
||||
return mockType
|
||||
else:
|
||||
return Mock()
|
||||
|
||||
# The list of modules and submodules that we know give RTD trouble.
|
||||
# Make sure you've tried including the relevant package in
|
||||
# docs/share/requirements.txt before adding to this list.
|
||||
MOCK_MODULES = [
|
||||
'numpy',
|
||||
'matplotlib',
|
||||
'matplotlib.pyplot',
|
||||
'scipy.interpolate',
|
||||
'scipy.constants',
|
||||
'scipy.optimize',
|
||||
]
|
||||
|
||||
if on_rtd:
|
||||
for mod_name in MOCK_MODULES:
|
||||
sys.modules[mod_name] = Mock()
|
||||
|
||||
# -----------------------------------------------------------------------------
|
||||
|
||||
# from http://djangosnippets.org/snippets/2533/
|
||||
# autogenerate models definitions
|
||||
|
||||
import inspect
|
||||
import types
|
||||
from HTMLParser import HTMLParser
|
||||
|
||||
|
||||
def force_unicode(s, encoding='utf-8', strings_only=False, errors='strict'):
|
||||
"""
|
||||
Similar to smart_unicode, except that lazy instances are resolved to
|
||||
strings, rather than kept as lazy objects.
|
||||
|
||||
If strings_only is True, don't convert (some) non-string-like objects.
|
||||
"""
|
||||
if strings_only and isinstance(s, (types.NoneType, int)):
|
||||
return s
|
||||
if not isinstance(s, basestring,):
|
||||
if hasattr(s, '__unicode__'):
|
||||
s = unicode(s)
|
||||
else:
|
||||
s = unicode(str(s), encoding, errors)
|
||||
elif not isinstance(s, unicode):
|
||||
s = unicode(s, encoding, errors)
|
||||
return s
|
||||
|
||||
|
||||
class MLStripper(HTMLParser):
|
||||
def __init__(self):
|
||||
self.reset()
|
||||
self.fed = []
|
||||
|
||||
def handle_data(self, d):
|
||||
self.fed.append(d)
|
||||
|
||||
def get_data(self):
|
||||
return ''.join(self.fed)
|
||||
|
||||
|
||||
def strip_tags(html):
|
||||
s = MLStripper()
|
||||
s.feed(html)
|
||||
return s.get_data()
|
||||
|
||||
|
||||
|
||||
def process_docstring(app, what, name, obj, options, lines):
|
||||
"""Autodoc django models"""
|
||||
|
||||
# This causes import errors if left outside the function
|
||||
from django.db import models
|
||||
|
||||
# If you want extract docs from django forms:
|
||||
# from django import forms
|
||||
# from django.forms.models import BaseInlineFormSet
|
||||
|
||||
# Only look at objects that inherit from Django's base MODEL class
|
||||
if inspect.isclass(obj) and issubclass(obj, models.Model):
|
||||
# Grab the field list from the meta class
|
||||
fields = obj._meta._fields()
|
||||
|
||||
for field in fields:
|
||||
# Decode and strip any html out of the field's help text
|
||||
help_text = strip_tags(force_unicode(field.help_text))
|
||||
|
||||
# Decode and capitalize the verbose name, for use if there isn't
|
||||
# any help text
|
||||
verbose_name = force_unicode(field.verbose_name).capitalize()
|
||||
|
||||
if help_text:
|
||||
# Add the model field to the end of the docstring as a param
|
||||
# using the help text as the description
|
||||
lines.append(u':param %s: %s' % (field.attname, help_text))
|
||||
else:
|
||||
# Add the model field to the end of the docstring as a param
|
||||
# using the verbose name as the description
|
||||
lines.append(u':param %s: %s' % (field.attname, verbose_name))
|
||||
|
||||
# Add the field's type to the docstring
|
||||
lines.append(u':type %s: %s' % (field.attname, type(field).__name__))
|
||||
return lines
|
||||
|
||||
|
||||
def setup(app):
|
||||
"""Setup docsting processors"""
|
||||
#Register the docstring processor with sphinx
|
||||
app.connect('autodoc-process-docstring', process_docstring)
|
||||
@@ -1,54 +0,0 @@
|
||||
*******************************************
|
||||
Common
|
||||
*******************************************
|
||||
|
||||
.. module:: common.djangoapps
|
||||
|
||||
Student
|
||||
=======
|
||||
|
||||
.. automodule:: student
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Models
|
||||
------
|
||||
|
||||
.. automodule:: student.models
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: student.views
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Admin
|
||||
-----
|
||||
|
||||
.. automodule:: student.admin
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Tests
|
||||
-----
|
||||
|
||||
.. automodule:: student.tests
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Management
|
||||
----------
|
||||
|
||||
.. automodule:: student.management
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Migrations
|
||||
----------
|
||||
|
||||
.. automodule:: student.migrations
|
||||
:members:
|
||||
:show-inheritance:
|
||||
@@ -1,10 +0,0 @@
|
||||
Django applications
|
||||
===============================
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
lms.rst
|
||||
cms.rst
|
||||
djangoapps-common.rst
|
||||
@@ -1,24 +0,0 @@
|
||||
.. EdX Dev documentation master file, created by
|
||||
sphinx-quickstart on Fri Nov 2 15:43:00 2012.
|
||||
You can adapt this file completely to your liking, but it should at least
|
||||
contain the root `toctree` directive.
|
||||
|
||||
Welcome to EdX's Dev documentation!
|
||||
===================================
|
||||
|
||||
Contents:
|
||||
|
||||
.. toctree::
|
||||
:maxdepth: 2
|
||||
|
||||
overview.rst
|
||||
common-lib.rst
|
||||
djangoapps.rst
|
||||
|
||||
Indices and tables
|
||||
==================
|
||||
|
||||
* :ref:`genindex`
|
||||
* :ref:`modindex`
|
||||
* :ref:`search`
|
||||
|
||||
@@ -1,314 +0,0 @@
|
||||
*******************************************
|
||||
LMS module
|
||||
*******************************************
|
||||
|
||||
.. module:: lms
|
||||
|
||||
Branding
|
||||
========
|
||||
|
||||
.. automodule:: branding
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: branding.views
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Certificates
|
||||
============
|
||||
|
||||
.. automodule:: certificates
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Models
|
||||
------
|
||||
|
||||
.. automodule:: certificates.models
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: certificates.views
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Circuit
|
||||
=======
|
||||
|
||||
.. automodule:: circuit
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Models
|
||||
------
|
||||
|
||||
.. automodule:: circuit.models
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: circuit.views
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Course_wiki
|
||||
===========
|
||||
|
||||
.. automodule:: course_wiki
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Course Nav
|
||||
----------
|
||||
|
||||
.. .. automodule:: course_wiki.course_nav
|
||||
.. :members:
|
||||
.. :show-inheritance:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: course_wiki.views
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Editors
|
||||
-------
|
||||
|
||||
.. automodule:: course_wiki.editors
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Courseware
|
||||
==========
|
||||
|
||||
.. automodule:: courseware
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Access
|
||||
------
|
||||
|
||||
.. automodule:: courseware.access
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Admin
|
||||
-----
|
||||
|
||||
.. automodule:: courseware.admin
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Courses
|
||||
-------
|
||||
|
||||
.. automodule:: courseware.courses
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Grades
|
||||
------
|
||||
|
||||
.. automodule:: courseware.grades
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Models
|
||||
------
|
||||
|
||||
.. automodule:: courseware.models
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Progress
|
||||
--------
|
||||
|
||||
.. automodule:: courseware.progress
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Tabs
|
||||
----
|
||||
|
||||
.. automodule:: courseware.tabs
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Dashboard
|
||||
=========
|
||||
|
||||
.. automodule:: dashboard
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Models
|
||||
------
|
||||
|
||||
.. automodule:: dashboard.models
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: dashboard.views
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Django comment client
|
||||
=====================
|
||||
|
||||
.. automodule:: django_comment_client
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Models
|
||||
------
|
||||
|
||||
.. automodule:: django_comment_client.models
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Heartbeat
|
||||
=========
|
||||
|
||||
.. automodule:: heartbeat
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Instructor
|
||||
==========
|
||||
|
||||
.. automodule:: instructor
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: instructor.views
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Lisenses
|
||||
========
|
||||
|
||||
.. automodule:: licenses
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Models
|
||||
------
|
||||
|
||||
.. automodule:: licenses.models
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: licenses.views
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
LMS migration
|
||||
=============
|
||||
|
||||
.. automodule:: lms_migration
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Migration
|
||||
---------
|
||||
|
||||
.. automodule:: lms_migration.migrate
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Multicourse
|
||||
===========
|
||||
|
||||
.. automodule:: multicourse
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Psychometrics
|
||||
=============
|
||||
|
||||
.. automodule:: psychometrics
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Models
|
||||
------
|
||||
|
||||
.. automodule:: psychometrics.models
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Admin
|
||||
-----
|
||||
|
||||
.. automodule:: psychometrics.admin
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Psychoanalyze
|
||||
-------------
|
||||
|
||||
.. automodule:: psychometrics.psychoanalyze
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Static template view
|
||||
====================
|
||||
|
||||
.. automodule:: static_template_view
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: static_template_view.views
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
Static book
|
||||
===========
|
||||
|
||||
.. automodule:: staticbook
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Models
|
||||
------
|
||||
|
||||
.. automodule:: staticbook.models
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Views
|
||||
-----
|
||||
|
||||
.. automodule:: staticbook.views
|
||||
:members:
|
||||
:show-inheritance:
|
||||
@@ -1,9 +0,0 @@
|
||||
*******************************************
|
||||
Overview
|
||||
*******************************************
|
||||
|
||||
|
||||
This is EdX Dev documentation, mainly extracted from docstrings.
|
||||
Autogenerated by Sphinx from python code.
|
||||
Soon support for JS will be impemented.
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
*******************************************
|
||||
Sandbox-packages
|
||||
*******************************************
|
||||
.. module:: sandbox-packages
|
||||
|
||||
Loncapa
|
||||
=======
|
||||
|
||||
.. automodule:: loncapa.loncapa_check
|
||||
:members:
|
||||
:show-inheritance:
|
||||
@@ -1,31 +0,0 @@
|
||||
*******************************************
|
||||
Symmath
|
||||
*******************************************
|
||||
|
||||
.. module:: symmath
|
||||
|
||||
|
||||
Formula
|
||||
=======
|
||||
|
||||
.. automodule:: symmath.formula
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Symmath check
|
||||
=============
|
||||
|
||||
.. automodule:: symmath.symmath_check
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Symmath tests
|
||||
=============
|
||||
|
||||
.. automodule:: symmath.test_formula
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
.. automodule:: symmath.test_symmath_check
|
||||
:members:
|
||||
:show-inheritance:
|
||||
@@ -1,256 +0,0 @@
|
||||
.. module:: transcripts
|
||||
|
||||
======================================================
|
||||
Developer’s workflow for the timed transcripts in CMS.
|
||||
======================================================
|
||||
|
||||
:download:`Multipage pdf version of Timed Transcripts workflow. <transcripts_workflow.pdf>`
|
||||
|
||||
:download:`Open office graph version (source for pdf). <transcripts_workflow.odg>`
|
||||
|
||||
:download:`List of implemented acceptance tests. <transcripts_acceptance_tests.odt>`
|
||||
|
||||
|
||||
Description
|
||||
===========
|
||||
|
||||
Timed Transcripts functionality is added in separate tab of Video module Editor, that is active by default. This tab is called `Basic`, another tab is called `Advanced` and contains default metadata fields.
|
||||
|
||||
`Basic` tab is a simple representation of `Advanced` tab that provides functionality to speed up adding Video module with transcripts to the course.
|
||||
|
||||
To make more accurate adjustments `Advanced` tab should be used.
|
||||
|
||||
Front-end part of `Basic` tab has 4 editors/views:
|
||||
* Display name
|
||||
* 3 editors for inserting Video URLs.
|
||||
|
||||
Video URL fields might contain 3 kinds of URLs:
|
||||
* **YouTube** link. There are supported formats:
|
||||
* http://www.youtube.com/watch?v=OEoXaMPEzfM&feature=feedrec_grec_index ;
|
||||
* http://www.youtube.com/user/IngridMichaelsonVEVO#p/a/u/1/OEoXaMPEzfM ;
|
||||
* http://www.youtube.com/v/OEoXaMPEzfM?fs=1&hl=en_US&rel=0 ;
|
||||
* http://www.youtube.com/watch?v=OEoXaMPEzfM#t=0m10s ;
|
||||
* http://www.youtube.com/embed/OEoXaMPEzfM?rel=0 ;
|
||||
* http://www.youtube.com/watch?v=OEoXaMPEzfM ;
|
||||
* http://youtu.be/OEoXaMPEzfM ;
|
||||
|
||||
* **MP4** video source;
|
||||
* **WEBM** video source.
|
||||
|
||||
Each of these kind of URLs can be specified just **ONCE**. Otherwise, error message occurs on front-end.
|
||||
|
||||
After filling editor **transcripts/check** method will be invoked with the parameters described below (see `API`_). Depending on conditions, that are also described below (see `Commands`_), this method responds with a *command* and front-end renders the appropriate View.
|
||||
Each View can have specific actions. There is a list of supported actions:
|
||||
* Download Timed Transcripts;
|
||||
* Upload Timed Transcripts;
|
||||
* Import Timed Transcripts from YouTube;
|
||||
* Replace edX Timed Transcripts by Timed Transcripts from YouTube;
|
||||
* Choose Timed Transcripts;
|
||||
* Use existing Timed Transcripts.
|
||||
|
||||
All of these actions are handled by 7 API methods described below (see `API`_).
|
||||
|
||||
Because rollback functionality isn't implemented now, after invoking some of the actions user cannot revert changes by clicking button `Cancel`.
|
||||
|
||||
To remove timed transcripts file from the video just go to `Advanced` tab and clear field `sub` then Save changes.
|
||||
|
||||
|
||||
Commands
|
||||
========
|
||||
|
||||
Command from front-end point of view is just a reference to the needed View with possible actions that user can do depending on conditions described below (See edx-platform/cms/static/js/views/transcripts/message_manager.js:21-29).
|
||||
|
||||
So,
|
||||
* **IF** YouTube transcripts present locally **AND** on YouTube server **AND** both of these transcripts files are **DIFFERENT**, we respond with `replace` command. Ask user to replace local transcripts file by YouTube's ones.
|
||||
* **IF** YouTube transcripts present **ONLY** locally, we respond with `found` command.
|
||||
* **IF** YouTube transcripts present **ONLY** on YouTube server, we respond with `import` command. Ask user to import transcripts file from YouTube server.
|
||||
* **IF** player is in HTML5 video mode. It means that **ONLY** html5 sources are added:
|
||||
* **IF** just 1 html5 source was added or both html5 sources have **EQUAL** transcripts files, then we respond with `found` command.
|
||||
* **OTHERWISE**, when 2 html5 sources were added and founded transcripts files are **DIFFERENT**, we respond with `choose` command. In this case, user should choose which one transcripts file he wants to use.
|
||||
* **IF** we are working with just 1 field **AND** item.sub field **HAS** a value **AND** user fills editor/view by the new value/video source without transcripts file, we respond with `use_existing` command. In this case, user will have possibility to use transcripts file from previous video.
|
||||
* **OTHERWISE**, we will respond with `not_found` command.
|
||||
|
||||
|
||||
Synchronization and Saving workflow
|
||||
====================================
|
||||
|
||||
|
||||
For now saving mechanism works as follows:
|
||||
|
||||
On click `Save` button **ModuleEdit** class (See edx-platform/cms/static/coffee/src/views/module_edit.coffee:83-101) grabs values from all modified metadata fields and sends all this data to the server.
|
||||
|
||||
Because of the fact that Timed Transcripts is module specific functionality, ModuleEdit class is not extended. Instead, to apply all changes that user did in the `Basic` tab, we use synchronization mechanism of TabsEditingDescriptor class. That mechanism provides us possibility to do needed actions on Tab switching and on Save (See edx-platform/cms/templates/widgets/video/transcripts.html).
|
||||
|
||||
On tab switching and when save action is invoked, JavaScript code synchronize collections (Metadata Collection and Transcripts Collection). You can see synchronization logic in the edx-platform/cms/static/js/views/transcripts/editor.js:72-219. In this case, Metadata fields always have the actual data.
|
||||
|
||||
|
||||
Special cases
|
||||
=============
|
||||
|
||||
1. Status message `Timed Transcript Conflict` (Choose) where one of 2 transcripts files should be chosen **-->** click `Save` button without choosing **-->** open Editor **-->** status message `Timed Transcript Found` will be shown and transcripts file will be chosen in random order.
|
||||
|
||||
2. status message `Timed Transcript Conflict` (Choose) where one of 2 transcripts files should be chosen **-->** open `Advanced` tab without choosing **-->** get back to `Basic` tab **-->** status message `Timed Transcript Found` will be shown and transcripts file will be chosen in random order.
|
||||
|
||||
3. The same issues with `Timed Transcript Not Updated` (Use existing).
|
||||
|
||||
API
|
||||
===
|
||||
|
||||
We provide 7 API methods to work with timed transcripts
|
||||
(edx-platform/cms/urls.py:23-29):
|
||||
* transcripts/upload
|
||||
* transcripts/download
|
||||
* transcripts/check
|
||||
* transcripts/choose
|
||||
* transcripts/replace
|
||||
* transcripts/rename
|
||||
* transcripts/save
|
||||
|
||||
**"transcripts/upload"** method is used for uploading SRT transcripts for the
|
||||
HTML5 and YouTube video modules.
|
||||
|
||||
*Method:*
|
||||
POST
|
||||
*Parameters:*
|
||||
- id - location ID of the Xmodule
|
||||
- video_list - list with information about the links currently passed in the editor/view.
|
||||
- file - BLOB file
|
||||
*Response:*
|
||||
HTTP 400
|
||||
or
|
||||
HTTP 200 + JSON:
|
||||
.. code::
|
||||
{
|
||||
status: 'Success' or 'Error',
|
||||
subs: value of uploaded and saved sub field in the video item.
|
||||
}
|
||||
|
||||
|
||||
**"transcripts/download"** method is used for downloading SRT transcripts for the
|
||||
HTML5 and YouTube video modules.
|
||||
|
||||
*Method:*
|
||||
GET
|
||||
*Parameters:*
|
||||
- id - location ID of the Xmodule
|
||||
- subs_id - file name that is used to find transcripts file in the storage.
|
||||
*Response:*
|
||||
HTTP 404
|
||||
or
|
||||
HTTP 200 + BLOB of SRT file
|
||||
|
||||
|
||||
**"transcripts/check"** method is used for checking availability of timed transcripts
|
||||
for the video module.
|
||||
|
||||
*Method:*
|
||||
GET
|
||||
*Parameters:*
|
||||
- id - location ID of the Xmodule
|
||||
*Response:*
|
||||
HTTP 400
|
||||
or
|
||||
HTTP 200 + JSON:
|
||||
.. code::
|
||||
{
|
||||
command: string with action to front-end what to do and what to show to user,
|
||||
subs: file name of transcripts file that was found in the storage,
|
||||
html5_local: [] or [True] or [True, True],
|
||||
is_youtube_mode: True/False,
|
||||
youtube_local: True/False,
|
||||
youtube_server: True/False,
|
||||
youtube_diff: True/False,
|
||||
current_item_subs: string with value of item.sub field,
|
||||
status: 'Error' or 'Success'
|
||||
}
|
||||
|
||||
|
||||
**"transcripts/choose"** method is used for choosing which transcripts file should be used.
|
||||
|
||||
*Method:*
|
||||
GET
|
||||
*Parameters:*
|
||||
- id - location ID of the Xmodule
|
||||
- video_list - list with information about the links currently passed in the editor/view.
|
||||
- html5_id - file name of chosen transcripts file.
|
||||
|
||||
*Response:*
|
||||
HTTP 200 + JSON:
|
||||
.. code::
|
||||
{
|
||||
status: 'Success' or 'Error',
|
||||
subs: value of uploaded and saved sub field in the video item.
|
||||
}
|
||||
|
||||
|
||||
**"transcripts/replace"** method is used for handling `import` and `replace` commands.
|
||||
Invoking this method starts downloading new transcripts file from YouTube server.
|
||||
|
||||
*Method:*
|
||||
GET
|
||||
*Parameters:*
|
||||
- id - location ID of the Xmodule
|
||||
- video_list - list with information about the links currently passed in the editor/view.
|
||||
|
||||
*Response:*
|
||||
HTTP 400
|
||||
or
|
||||
HTTP 200 + JSON:
|
||||
.. code::
|
||||
{
|
||||
status: 'Success' or 'Error',
|
||||
subs: value of uploaded and saved sub field in the video item.
|
||||
}
|
||||
|
||||
|
||||
**"transcripts/rename"** method is used for handling `use_existing` command.
|
||||
After invoking this method current transcripts file will be copied and renamed to another one with name of current video passed in the editor/view.
|
||||
|
||||
*Method:*
|
||||
GET
|
||||
*Parameters:*
|
||||
- id - location ID of the Xmodule
|
||||
- video_list - list with information about the links currently passed in the editor/view.
|
||||
|
||||
*Response:*
|
||||
HTTP 400
|
||||
or
|
||||
HTTP 200 + JSON:
|
||||
.. code::
|
||||
{
|
||||
status: 'Success' or 'Error',
|
||||
subs: value of uploaded and saved sub field in the video item.
|
||||
}
|
||||
|
||||
|
||||
**"transcripts/save"** method is used for handling `save` command.
|
||||
After invoking this method all changes will be saved that were done before this moment.
|
||||
|
||||
*Method:*
|
||||
GET
|
||||
*Parameters:*
|
||||
- id - location ID of the Xmodule
|
||||
- metadata - new values for the metadata fields.
|
||||
- currents_subs - list with the file names of videos passed in the editor/view.
|
||||
|
||||
*Response:*
|
||||
HTTP 400
|
||||
or
|
||||
HTTP 200 + JSON:
|
||||
.. code::
|
||||
{
|
||||
status: 'Success' or 'Error'
|
||||
}
|
||||
|
||||
|
||||
Transcripts modules:
|
||||
====================
|
||||
|
||||
.. automodule:: contentstore.views.transcripts_ajax
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
.. automodule:: contentstore.transcripts_utils
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,77 +0,0 @@
|
||||
Integrating XBlocks with edx-platform
|
||||
=====================================
|
||||
|
||||
The edX LMS and Studio have several features that are extensions of the core XBlock
|
||||
libraries (https://xblock.readthedocs.org). These features are listed below.
|
||||
|
||||
LMS
|
||||
---
|
||||
|
||||
Runtime Features
|
||||
~~~~~~~~~~~~~~~~
|
||||
|
||||
These are properties and methods available on ``self.runtime`` when a view or handler is executed by the LMS.
|
||||
|
||||
* anonymous_student_id: An identifier unique to the student in the particular course
|
||||
that the block is being executed in. The same student in two different courses
|
||||
will have two different ids.
|
||||
|
||||
* publish(event): Emit events to the surrounding system. Events are dictionaries with
|
||||
at least the key 'event_type', which identifies the other fields.
|
||||
|
||||
TODO: Link to the authoritive list of event types.
|
||||
|
||||
In the future, these are likely to become more formal XBlock services (one related to users,
|
||||
and the other to event publishing).
|
||||
|
||||
Class Features
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
These are class attributes or functions that can be provided by an XBlock to customize behaviour
|
||||
in the LMS.
|
||||
|
||||
* student_view (XBlock view): This is the view that will be rendered to display
|
||||
the XBlock in the LMS.
|
||||
* has_score (class property): True if this block should appear in the LMS progress page.
|
||||
* get_progress (method): See documentation in x_module.py:XModuleMixin.get_progress.
|
||||
* icon_class (class property): This can be one of (``other``, ``video``, or ``problem``), and
|
||||
determines which icon appears in edx sequence headers. There is currently no way to provide
|
||||
a different icon.
|
||||
|
||||
Grading
|
||||
~~~~~~~
|
||||
|
||||
To participate in the course grade, an XBlock should set ``has_score`` to ``True``, and
|
||||
should ``publish`` a ``grade`` event whenever the grade changes. The ``grade`` event is a
|
||||
dictionary of the following form::
|
||||
|
||||
{
|
||||
'event_type': 'grade',
|
||||
'value': <number>,
|
||||
'max_value': <number>,
|
||||
}
|
||||
|
||||
The grade event represents a grade of ``value/max_value`` for the current user.
|
||||
|
||||
Restrictions
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* A block can't modify the value of any field with a scope where the ``user`` property
|
||||
is ``UserScope.NONE``.
|
||||
|
||||
Studio
|
||||
------
|
||||
|
||||
Class Features
|
||||
~~~~~~~~~~~~~~
|
||||
|
||||
* studio_view (XBlock.view): The view used to render an editor in Studio.
|
||||
|
||||
* non_editable_metadata_fields (property): A list of xblock.fields.Field objects that
|
||||
shouldn't be displayed in the default editing view for Studio.
|
||||
|
||||
Restrictions
|
||||
~~~~~~~~~~~~
|
||||
|
||||
* A block can't modify the value of any field with a scope where the ``user`` property
|
||||
is not ``UserScope.NONE``.
|
||||
@@ -1,181 +0,0 @@
|
||||
*******************************************
|
||||
Xmodule
|
||||
*******************************************
|
||||
|
||||
.. module:: xmodule
|
||||
|
||||
Abtest
|
||||
======
|
||||
|
||||
.. automodule:: xmodule.abtest_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Back compatibility
|
||||
==================
|
||||
|
||||
.. automodule:: xmodule.backcompat_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Capa
|
||||
====
|
||||
|
||||
.. automodule:: xmodule.capa_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Course
|
||||
======
|
||||
|
||||
.. automodule:: xmodule.course_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Discussion
|
||||
==========
|
||||
|
||||
.. automodule:: xmodule.discussion_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Editing
|
||||
=======
|
||||
|
||||
.. automodule:: xmodule.editing_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Error
|
||||
=====
|
||||
|
||||
.. automodule:: xmodule.error_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Error tracker
|
||||
=============
|
||||
|
||||
.. automodule:: xmodule.errortracker
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Exceptions
|
||||
==========
|
||||
|
||||
.. automodule:: xmodule.exceptions
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Graders
|
||||
=======
|
||||
|
||||
.. automodule:: xmodule.graders
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Hidden
|
||||
======
|
||||
|
||||
.. automodule:: xmodule.hidden_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Html checker
|
||||
============
|
||||
|
||||
.. automodule:: xmodule.html_checker
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Html
|
||||
====
|
||||
|
||||
.. automodule:: xmodule.html_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
|
||||
LTI
|
||||
===
|
||||
|
||||
.. automodule:: xmodule.lti_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Mako
|
||||
====
|
||||
|
||||
.. automodule:: xmodule.mako_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Progress
|
||||
========
|
||||
|
||||
.. automodule:: xmodule.progress
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Sequence
|
||||
========
|
||||
|
||||
.. automodule:: xmodule.seq_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Stringify
|
||||
=========
|
||||
|
||||
.. automodule:: xmodule.stringify
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Template
|
||||
========
|
||||
|
||||
.. automodule:: xmodule.template_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Templates
|
||||
=========
|
||||
|
||||
.. automodule:: xmodule.templates
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Vertical
|
||||
========
|
||||
|
||||
.. automodule:: xmodule.vertical_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Video
|
||||
=====
|
||||
|
||||
.. automodule:: xmodule.video_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Word Cloud
|
||||
==========
|
||||
|
||||
.. automodule:: xmodule.word_cloud_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
X
|
||||
=
|
||||
|
||||
.. automodule:: xmodule.x_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
|
||||
Xml
|
||||
===
|
||||
|
||||
.. automodule:: xmodule.xml_module
|
||||
:members:
|
||||
:show-inheritance:
|
||||
Reference in New Issue
Block a user