Commit 370df65d by marco

Merge branch 'master' into ux/marco/studio-componentsettings

parents b9da0ffb a294e2d1
...@@ -206,6 +206,8 @@ PIPELINE_CSS = { ...@@ -206,6 +206,8 @@ PIPELINE_CSS = {
}, },
} }
# test_order: Determines the position of this chunk of javascript on
# the jasmine test page
PIPELINE_JS = { PIPELINE_JS = {
'main': { 'main': {
'source_filenames': sorted( 'source_filenames': sorted(
...@@ -213,6 +215,7 @@ PIPELINE_JS = { ...@@ -213,6 +215,7 @@ PIPELINE_JS = {
rooted_glob(PROJECT_ROOT / 'static/', 'coffee/src/**/*.js') rooted_glob(PROJECT_ROOT / 'static/', 'coffee/src/**/*.js')
) + ['js/hesitate.js', 'js/base.js'], ) + ['js/hesitate.js', 'js/base.js'],
'output_filename': 'js/cms-application.js', 'output_filename': 'js/cms-application.js',
'test_order': 0
}, },
'module-js': { 'module-js': {
'source_filenames': ( 'source_filenames': (
...@@ -220,11 +223,8 @@ PIPELINE_JS = { ...@@ -220,11 +223,8 @@ PIPELINE_JS = {
rooted_glob(COMMON_ROOT / 'static/', 'xmodule/modules/js/*.js') rooted_glob(COMMON_ROOT / 'static/', 'xmodule/modules/js/*.js')
), ),
'output_filename': 'js/cms-modules.js', 'output_filename': 'js/cms-modules.js',
'test_order': 1
}, },
'spec': {
'source_filenames': sorted(rooted_glob(PROJECT_ROOT / 'static/', 'coffee/spec/**/*.js')),
'output_filename': 'js/cms-spec.js'
}
} }
PIPELINE_CSS_COMPRESSOR = None PIPELINE_CSS_COMPRESSOR = None
......
...@@ -20,7 +20,7 @@ PIPELINE_JS['js-test-source'] = { ...@@ -20,7 +20,7 @@ PIPELINE_JS['js-test-source'] = {
'source_filenames': sum([ 'source_filenames': sum([
pipeline_group['source_filenames'] pipeline_group['source_filenames']
for group_name, pipeline_group for group_name, pipeline_group
in PIPELINE_JS.items() in sorted(PIPELINE_JS.items(), key=lambda item: item[1].get('test_order', 1e100))
if group_name != 'spec' if group_name != 'spec'
], []), ], []),
'output_filename': 'js/cms-test-source.js' 'output_filename': 'js/cms-test-source.js'
...@@ -35,4 +35,10 @@ JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/static/coffee' ...@@ -35,4 +35,10 @@ JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/static/coffee'
STATICFILES_DIRS.append(COMMON_ROOT / 'test' / 'phantom-jasmine' / 'lib') STATICFILES_DIRS.append(COMMON_ROOT / 'test' / 'phantom-jasmine' / 'lib')
# Remove the localization middleware class because it requires the test database
# to be sync'd and migrated in order to run the jasmine tests interactively
# with a browser
MIDDLEWARE_CLASSES = tuple(e for e in MIDDLEWARE_CLASSES \
if e != 'django.middleware.locale.LocaleMiddleware')
INSTALLED_APPS += ('django_jasmine', ) INSTALLED_APPS += ('django_jasmine', )
...@@ -17,9 +17,6 @@ TEST_RUNNER = 'django_nose.NoseTestSuiteRunner' ...@@ -17,9 +17,6 @@ TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
TEST_ROOT = path('test_root') TEST_ROOT = path('test_root')
# Makes the tests run much faster...
SOUTH_TESTS_MIGRATE = False # To disable migrations and use syncdb instead
# Want static files in the same dir for running on jenkins. # Want static files in the same dir for running on jenkins.
STATIC_ROOT = TEST_ROOT / "staticfiles" STATIC_ROOT = TEST_ROOT / "staticfiles"
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
"js/vendor/jquery.cookie.js", "js/vendor/jquery.cookie.js",
"js/vendor/json2.js", "js/vendor/json2.js",
"js/vendor/underscore-min.js", "js/vendor/underscore-min.js",
"js/vendor/backbone-min.js" "js/vendor/backbone-min.js",
"js/vendor/jquery.leanModal.min.js"
] ]
} }
...@@ -30,7 +30,7 @@ ...@@ -30,7 +30,7 @@
<body class="<%block name='bodyclass'></%block> hide-wip"> <body class="<%block name='bodyclass'></%block> hide-wip">
<%include file="courseware_vendor_js.html"/> <%include file="courseware_vendor_js.html"/>
<script type="text/javascript" src="jsi18n/"></script> <script type="text/javascript" src="/jsi18n/"></script>
<script type="text/javascript" src="${static.url('js/vendor/json2.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/json2.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/underscore-min.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/underscore-min.js')}"></script>
<script type="text/javascript" src="${static.url('js/vendor/backbone-min.js')}"></script> <script type="text/javascript" src="${static.url('js/vendor/backbone-min.js')}"></script>
......
...@@ -76,8 +76,9 @@ def index(request, extra_context={}, user=None): ...@@ -76,8 +76,9 @@ def index(request, extra_context={}, user=None):
''' '''
# The course selection work is done in courseware.courses. # The course selection work is done in courseware.courses.
domain = settings.MITX_FEATURES.get('FORCE_UNIVERSITY_DOMAIN') # normally False domain = settings.MITX_FEATURES.get('FORCE_UNIVERSITY_DOMAIN') # normally False
if domain == False: # do explicit check, because domain=None is valid # do explicit check, because domain=None is valid
if domain == False:
domain = request.META.get('HTTP_HOST') domain = request.META.get('HTTP_HOST')
courses = get_courses(None, domain=domain) courses = get_courses(None, domain=domain)
......
...@@ -26,12 +26,15 @@ EOL ...@@ -26,12 +26,15 @@ EOL
printf '\E[0m' printf '\E[0m'
} }
error() { error() {
printf '\E[31m'; echo "$@"; printf '\E[0m' printf '\E[31m'; echo "$@"; printf '\E[0m'
} }
output() { output() {
printf '\E[36m'; echo "$@"; printf '\E[0m' printf '\E[36m'; echo "$@"; printf '\E[0m'
} }
usage() { usage() {
cat<<EO cat<<EO
...@@ -47,11 +50,10 @@ EO ...@@ -47,11 +50,10 @@ EO
} }
info() { info() {
cat<<EO cat<<EO
MITx base dir : $BASE MITx base dir : $BASE
Python dir : $PYTHON_DIR Python virtualenv dir : $PYTHON_DIR
Ruby dir : $RUBY_DIR Ruby RVM dir : $RUBY_DIR
Ruby ver : $RUBY_VER Ruby ver : $RUBY_VER
EO EO
...@@ -85,28 +87,46 @@ clone_repos() { ...@@ -85,28 +87,46 @@ clone_repos() {
if [[ -d "$BASE/data/$REPO" ]]; then if [[ -d "$BASE/data/$REPO" ]]; then
mv "$BASE/data/$REPO" "${BASE}/data/$REPO.bak.$$" mv "$BASE/data/$REPO" "${BASE}/data/$REPO.bak.$$"
fi fi
cd "$BASE/data" cd "$BASE/data"
git clone git@github.com:MITx/$REPO git clone git@github.com:MITx/$REPO
fi fi
} }
### START ### START
PROG=${0##*/} PROG=${0##*/}
BASE="$HOME/mitx_all"
PYTHON_DIR="$BASE/python"
RUBY_DIR="$BASE/ruby"
RUBY_VER="1.9.3"
LOG="/var/tmp/install-$(date +%Y%m%d-%H%M%S).log"
# Adjust this to wherever you'd like to place the codebase
BASE="${PROJECT_HOME:-$HOME}/mitx_all"
# Read arguments # Use a sensible default (~/.virtualenvs) for your Python virtualenvs
# unless you've already got one set up with virtualenvwrapper.
PYTHON_DIR=${WORKON_HOME:-"$HOME/.virtualenvs"}
# RVM defaults its install to ~/.rvm, but use the overridden rvm_path
# if that's what's preferred.
RUBY_DIR=${rvm_path:-"$HOME/.rvm"}
LOG="/var/tmp/install-$(date +%Y%m%d-%H%M%S).log"
# Make sure the user's not about to do anything dumb
if [[ $EUID -eq 0 ]]; then if [[ $EUID -eq 0 ]]; then
error "This script should not be run using sudo or as the root user" error "This script should not be run using sudo or as the root user"
usage usage
exit 1 exit 1
fi fi
# If in an existing virtualenv, bail
if [[ "x$VIRTUAL_ENV" != "x" ]]; then
envname=`basename $VIRTUAL_ENV`
error "Looks like you're already in the \"$envname\" virtual env."
error "Run \`deactivate\` and then re-run this script."
usage
exit 1
fi
# Read arguments
ARGS=$(getopt "cvhs" "$*") ARGS=$(getopt "cvhs" "$*")
if [[ $? != 0 ]]; then if [[ $? != 0 ]]; then
usage usage
...@@ -236,31 +256,69 @@ clone_repos ...@@ -236,31 +256,69 @@ clone_repos
bash $BASE/mitx/install-system-req.sh bash $BASE/mitx/install-system-req.sh
output "Installing RVM, Ruby, and required gems"
# If we're not installing RVM in the default location, then we'll do some
# funky stuff to make sure that we load in the RVM stuff properly on login.
if [ "$HOME/.rvm" != $RUBY_DIR ]; then
if ! grep -q "export rvm_path=$RUBY_DIR" ~/.rvmrc; then
if [[ -f $HOME/.rvmrc ]]; then
output "Copying existing .rvmrc to .rvmrc.bak"
cp $HOME/.rvmrc $HOME/.rvmrc.bak
fi
output "Creating $HOME/.rvmrc so rvm uses $RUBY_DIR"
echo "export rvm_path=$RUBY_DIR" > $HOME/.rvmrc
fi
fi
# Install Ruby RVM curl -sL get.rvm.io | bash -s -- --version 1.15.7
output "Installing rvm and ruby" # Ensure we have RVM available as a shell function so that it can mess
# with the environment and set everything up properly. The RVM install
# process adds this line to login scripts, so this shouldn't be necessary
# for the user to do each time.
if [[ `type -t rvm` != "function" ]]; then
source $RUBY_DIR/scripts/rvm
fi
if ! grep -q "export rvm_path=$RUBY_DIR" ~/.rvmrc; then # Ruby doesn't like to build with clang, which is the default on OS X, so
if [[ -f $HOME/.rvmrc ]]; then # use gcc instead. This may not work, since if your gcc was installed with
output "Copying existing .rvmrc to .rvmrc.bak" # XCode 4.2 or greater, you have an LLVM-based gcc, which also doesn't
cp $HOME/.rvmrc $HOME/.rvmrc.bak # always play nicely with Ruby, though it seems to be better than clang.
fi # You may have to install apple-gcc42 using Homebrew if this doesn't work.
output "Creating $HOME/.rvmrc so rvm uses $RUBY_DIR" # See `rvm requirements` for more information.
echo "export rvm_path=$RUBY_DIR" > $HOME/.rvmrc case `uname -s` in
Darwin)
export CC=gcc
;;
esac
# Let the repo override the version of Ruby to install
if [[ -r $BASE/mitx/.ruby-version ]]; then
RUBY_VER=`cat $BASE/mitx/.ruby-version`
fi fi
curl -sL get.rvm.io | bash -s -- --version 1.15.7 # Current stable version of RVM (1.19.0) requires the following to build Ruby:
source $RUBY_DIR/scripts/rvm #
# autoconf automake libtool pkg-config libyaml libxml2 libxslt libksba openssl
#
# If we decide to upgrade from the current version (1.15.7), can run
#
# LESS="-E" rvm install $RUBY_VER --autolibs=3 --with-readline
#
# to have RVM look for a package manager like Homebrew and install any missing
# libs automatically. RVM's --autolibs flag defaults to 2, which will fail if
# any required libs are missing.
LESS="-E" rvm install $RUBY_VER --with-readline LESS="-E" rvm install $RUBY_VER --with-readline
# Create the "mitx" gemset
rvm use "$RUBY_VER@mitx" --create
output "Installing gem bundler" output "Installing gem bundler"
gem install bundler gem install bundler
output "Installing ruby packages" output "Installing ruby packages"
# hack :( bundle install --gemfile $BASE/mitx/Gemfile
cd $BASE/mitx || true
bundle install
# Install Python virtualenv # Install Python virtualenv
...@@ -274,16 +332,31 @@ case `uname -s` in ...@@ -274,16 +332,31 @@ case `uname -s` in
;; ;;
esac esac
# virtualenvwrapper uses the $WORKON_HOME env var to determine where to place
# virtualenv directories. Make sure it matches the selected $PYTHON_DIR.
export WORKON_HOME=$PYTHON_DIR
# Load in the mkvirtualenv function if needed
if [[ `type -t mkvirtualenv` != "function" ]]; then
source `which virtualenvwrapper.sh`
fi
# Create MITx virtualenv and link it to repo
# virtualenvwrapper automatically sources the activation script
if [[ $systempkgs ]]; then if [[ $systempkgs ]]; then
virtualenv --system-site-packages "$PYTHON_DIR" mkvirtualenv -a "$BASE/mitx" --system-site-packages mitx || {
error "mkvirtualenv exited with a non-zero error"
return 1
}
else else
# default behavior for virtualenv>1.7 is # default behavior for virtualenv>1.7 is
# --no-site-packages # --no-site-packages
virtualenv "$PYTHON_DIR" mkvirtualenv -a "$BASE/mitx" mitx || {
error "mkvirtualenv exited with a non-zero error"
return 1
}
fi fi
# activate mitx python virtualenv
source $PYTHON_DIR/bin/activate
# compile numpy and scipy if requested # compile numpy and scipy if requested
...@@ -315,6 +388,8 @@ case `uname -s` in ...@@ -315,6 +388,8 @@ case `uname -s` in
# need latest pytz before compiling numpy and scipy # need latest pytz before compiling numpy and scipy
pip install -U pytz pip install -U pytz
pip install numpy pip install numpy
# scipy needs cython
pip install cython
# fixes problem with scipy on 10.8 # fixes problem with scipy on 10.8
pip install -e git+https://github.com/scipy/scipy#egg=scipy-dev pip install -e git+https://github.com/scipy/scipy#egg=scipy-dev
;; ;;
...@@ -344,14 +419,18 @@ cat<<END ...@@ -344,14 +419,18 @@ cat<<END
Success!! Success!!
To start using Django you will need to activate the local Python To start using Django you will need to activate the local Python
and Ruby environment (at this time rvm only supports bash) : and Ruby environments. Ensure the following lines are added to your
login script, and source your login script if needed:
source `which virtualenvwrapper.sh`
source $RUBY_DIR/scripts/rvm
Then, every time you're ready to work on the project, just run
$ source $RUBY_DIR/scripts/rvm $ workon mitx
$ source $PYTHON_DIR/bin/activate
To initialize Django To initialize Django
$ cd $BASE/mitx
$ rake django-admin[syncdb] $ rake django-admin[syncdb]
$ rake django-admin[migrate] $ rake django-admin[migrate]
......
# Python libraries to install directly from github # Python libraries to install directly from github
# Third-party: # Third-party:
-e git://github.com/MITx/django-staticfiles.git@6d2504e5c8#egg=django-staticfiles -e git://github.com/edx/django-staticfiles.git@6d2504e5c8#egg=django-staticfiles
-e git://github.com/MITx/django-pipeline.git#egg=django-pipeline -e git://github.com/edx/django-pipeline.git#egg=django-pipeline
-e git://github.com/MITx/django-wiki.git@e2e84558#egg=django-wiki -e git://github.com/edx/django-wiki.git@e2e84558#egg=django-wiki
-e git://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev -e git://github.com/dementrock/pystache_custom.git@776973740bdaad83a3b029f96e415a7d1e8bec2f#egg=pystache_custom-dev
# Our libraries: # Our libraries:
......
function github_status { function github_status {
gcli status create mitx mitx $GIT_COMMIT \ gcli status create edx mitx $GIT_COMMIT \
--params=$1 \ --params=$1 \
target_url:$BUILD_URL \ target_url:$BUILD_URL \
description:"Build #$BUILD_NUMBER is running" \ description:"Build #$BUILD_NUMBER is running" \
...@@ -9,4 +9,4 @@ function github_status { ...@@ -9,4 +9,4 @@ function github_status {
function github_mark_failed_on_exit { function github_mark_failed_on_exit {
trap '[ $? == "0" ] || github_status state:failed' EXIT trap '[ $? == "0" ] || github_status state:failed' EXIT
} }
\ No newline at end of file
...@@ -4,7 +4,7 @@ set -e ...@@ -4,7 +4,7 @@ set -e
set -x set -x
function github_status { function github_status {
gcli status create mitx mitx $GIT_COMMIT \ gcli status create edx mitx $GIT_COMMIT \
--params=$1 \ --params=$1 \
target_url:$BUILD_URL \ target_url:$BUILD_URL \
description:"Build #$BUILD_NUMBER $2" \ description:"Build #$BUILD_NUMBER $2" \
......
...@@ -440,6 +440,9 @@ PIPELINE_CSS = { ...@@ -440,6 +440,9 @@ PIPELINE_CSS = {
}, },
} }
# test_order: Determines the position of this chunk of javascript on
# the jasmine test page
PIPELINE_JS = { PIPELINE_JS = {
'application': { 'application': {
...@@ -455,31 +458,39 @@ PIPELINE_JS = { ...@@ -455,31 +458,39 @@ PIPELINE_JS = {
'js/sticky_filter.js', 'js/sticky_filter.js',
'js/query-params.js', 'js/query-params.js',
], ],
'output_filename': 'js/lms-application.js' 'output_filename': 'js/lms-application.js',
'test_order': 1,
}, },
'courseware': { 'courseware': {
'source_filenames': courseware_js, 'source_filenames': courseware_js,
'output_filename': 'js/lms-courseware.js' 'output_filename': 'js/lms-courseware.js',
'test_order': 2,
}, },
'main_vendor': { 'main_vendor': {
'source_filenames': main_vendor_js, 'source_filenames': main_vendor_js,
'output_filename': 'js/lms-main_vendor.js', 'output_filename': 'js/lms-main_vendor.js',
'test_order': 0,
}, },
'module-js': { 'module-js': {
'source_filenames': rooted_glob(COMMON_ROOT / 'static', 'xmodule/modules/js/*.js'), 'source_filenames': rooted_glob(COMMON_ROOT / 'static', 'xmodule/modules/js/*.js'),
'output_filename': 'js/lms-modules.js', 'output_filename': 'js/lms-modules.js',
'test_order': 3,
}, },
'discussion': { 'discussion': {
'source_filenames': discussion_js, 'source_filenames': discussion_js,
'output_filename': 'js/discussion.js' 'output_filename': 'js/discussion.js',
'test_order': 4,
}, },
'staff_grading': { 'staff_grading': {
'source_filenames': staff_grading_js, 'source_filenames': staff_grading_js,
'output_filename': 'js/staff_grading.js' 'output_filename': 'js/staff_grading.js',
'test_order': 5,
}, },
'open_ended': { 'open_ended': {
'source_filenames': open_ended_js, 'source_filenames': open_ended_js,
'output_filename': 'js/open_ended.js' 'output_filename': 'js/open_ended.js',
'test_order': 6,
} }
} }
......
...@@ -20,14 +20,14 @@ PIPELINE_JS['js-test-source'] = { ...@@ -20,14 +20,14 @@ PIPELINE_JS['js-test-source'] = {
'source_filenames': sum([ 'source_filenames': sum([
pipeline_group['source_filenames'] pipeline_group['source_filenames']
for group_name, pipeline_group for group_name, pipeline_group
in PIPELINE_JS.items() in sorted(PIPELINE_JS.items(), key=lambda item: item[1].get('test_order', 1e100))
if group_name != 'spec' if group_name != 'spec'
], []), ], []),
'output_filename': 'js/lms-test-source.js' 'output_filename': 'js/lms-test-source.js'
} }
PIPELINE_JS['spec'] = { PIPELINE_JS['spec'] = {
'source_filenames': sorted(rooted_glob(PROJECT_ROOT / 'static/', 'coffee/spec/**/*.coffee')), 'source_filenames': sorted(rooted_glob(PROJECT_ROOT / 'static/', 'coffee/spec/**/*.js')),
'output_filename': 'js/lms-spec.js' 'output_filename': 'js/lms-spec.js'
} }
......
{ {
"js_files": [ "js_files": [
"/static/js/vendor/RequireJS.js",
"/static/js/vendor/jquery.min.js",
"/static/js/vendor/jquery-ui.min.js",
"/static/js/vendor/jquery.leanModal.min.js", "/static/js/vendor/jquery.leanModal.min.js",
"/static/js/vendor/flot/jquery.flot.js" "/static/js/vendor/flot/jquery.flot.js"
] ]
......
...@@ -6,9 +6,18 @@ ...@@ -6,9 +6,18 @@
<link type="text/html" rel="alternate" href="http://blog.edx.org/"/> <link type="text/html" rel="alternate" href="http://blog.edx.org/"/>
<link type="application/atom+xml" rel="self" href="https://github.com/blog.atom"/> <link type="application/atom+xml" rel="self" href="https://github.com/blog.atom"/>
<title>EdX Blog</title> <title>EdX Blog</title>
<updated>2013-04-03T14:00:12-07:00</updated> <updated>2013-05-03T14:00:12-07:00</updated>
<entry> <entry>
<id>tag:www.edx.org,2012:Post/17</id> <id>tag:www.edx.org,2013:Post/18</id>
<published>2013-05-02T14:00:00-07:00</published>
<updated>2013-05-02T14:00:00-07:00</updated>
<link type="text/html" rel="alternate" href="http://www.nytimes.com/2013/04/30/education/colleges-adapt-online-courses-to-ease-burden.html?pagewanted=all"/>
<title>edX project at San Jose State featured in New York Times</title>
<content type="html">&lt;img src=&quot;${static.url('images/press/nytimes_240x180.png')}&quot; /&gt;
&lt;p&gt;&lt;/p&gt;</content>
</entry>
<entry>
<id>tag:www.edx.org,2013:Post/17</id>
<published>2012-12-19T14:00:00-07:00</published> <published>2012-12-19T14:00:00-07:00</published>
<updated>2012-12-19T14:00:00-07:00</updated> <updated>2012-12-19T14:00:00-07:00</updated>
<link type="text/html" rel="alternate" href="${reverse('press_release', args=['stanford-to-work-with-edx'])}"/> <link type="text/html" rel="alternate" href="${reverse('press_release', args=['stanford-to-work-with-edx'])}"/>
......
...@@ -190,18 +190,11 @@ ...@@ -190,18 +190,11 @@
</section> </section>
<section class="press-links"> <section class="press-links">
<h3>edX in the News:</h3> <h3>edX in the News:</h3>
<a target="_blank" href="http://www.bbc.co.uk/news/business-19661899">BBC</a>, <a target="_blank" href="http://www.nytimes.com/2013/04/30/education/adapting-to-blended-courses-and-finding-early-benefits.html?ref=education">The New York Times</a>,
<a target="_blank" href="http://www.technologyreview.com/news/506351/the-most-important-education-technology-in-200-years/">Technology Review</a>, <a target="_blank" href="http://online.wsj.com/article/SB10001424127887323741004578414861572832182.html?mod=googlenews_wsj">The Wall Street Journal</a>,
<a target="_blank" href="http://tech.mit.edu/V132/N48/edxvmware.html">The Tech</a>, <a target="_blank" href="http://www.washingtonpost.com/local/education/stanford-to-help-build-edx-mooc-platform/2013/04/02/5b53bb3e-9bbe-11e2-9a79-eb5280c81c63_story.html">The Washington Post</a>,
<a target="_blank" href="http://www.nytimes.com/2012/11/04/education/edlife/massive-open-online-courses-are-multiplying-at-a-rapid-pace.html">The New York Times</a>, <a target="_blank" href="http://www.cbsnews.com/video/watch/?id=50143164n">CBS Television</a>,
<a target="_blank" href="http://www.reuters.com/article/2012/10/19/us-education-courses-online-idUSBRE89I17120121019">Reuters</a>, <a target="_blank" href="http://bostonglobe.com/2012/12/04/edx/AqnQ808q4IEcaUa8KuZuBO/story.html">The Boston Globe</a>
<a target="_blank" href="http://www.ft.com/intl/cms/s/2/73030f44-d4dd-11e1-9444-00144feabdc0.html#axzz2A9qvk48A">Financial Times</a>,
<a target="_blank" href="http://campustechnology.com/articles/2012/10/25/vmware-offers-free-virtualization-software-for-edx-computer-science-students.aspx">Campus Technology</a>,
<a target="_blank" href="http://chronicle.com/blogs/wiredcampus/san-jose-state-u-says-replacing-live-lectures-with-videos-increased-test-scores/40470">Chronicle of Higher Education</a>,
<a target="_blank" href="http://www.timeshighereducation.co.uk/story.asp?sectioncode=26&storycode=421577&c=1">Times Higher Education</a>,
<a target="_blank" href="http://www.bloomberg.com/news/2012-10-15/university-of-texas-joining-harvard-mit-online-venture.html">Bloomberg.com</a>,
<a target="_blank" href="http://www.businessweek.com/news/2012-10-15/university-of-texas-joining-harvard-mit-online-venture">BusinessWeek</a>,
<a target="_blank" href="http://news.yahoo.com/univ-texas-joins-online-course-program-edx-172202035--finance.html">Associated Press</a>
<a href="${reverse('press')}" class="read-more">Read More &rarr;</a> <a href="${reverse('press')}" class="read-more">Read More &rarr;</a>
</section> </section>
</section> </section>
......
[ [
{ {
"title": "Adapting to Blended Courses, and Finding Early Benefits",
"url": "http://www.nytimes.com/2013/04/30/education/adapting-to-blended-courses-and-finding-early-benefits.html?ref=education",
"author": "Tamar Lewin",
"image": "nyt_logo_178x138.jpeg",
"deck": null,
"publication": "The New York Times",
"publish_date": "April 29, 2013"
},
{
"title": "Colleges Adapt Online Courses to Ease Burden",
"url": "http://www.nytimes.com/2013/04/30/education/colleges-adapt-online-courses-to-ease-burden.html?pagewanted=all",
"author": "Tamar Lewin",
"image": "nyt_logo_178x138.jpeg",
"deck": null,
"publication": "The New York Times",
"publish_date": "April 29, 2013"
},
{
"title": "Online Education Lifts Pass Rates at University",
"url": "http://online.wsj.com/article/SB10001424127887323741004578414861572832182.html?mod=googlenews_wsj",
"author": "Geoffrey Fowler",
"image": "wsj_logo_178x138.jpg",
"deck": null,
"publication": "The Wall Street Journal",
"publish_date": "April 10, 2013"
},
{
"title": "Software Seen Giving Grades on Essay Tests",
"url": "http://www.nytimes.com/2013/04/05/science/new-test-for-computers-grading-essays-at-college-level.html?pagewanted=all&_r=0",
"author": "John Markoff",
"image": "nyt_logo_178x138.jpeg",
"deck": null,
"publication": "The New York Times",
"publish_date": "April 4, 2013"
},
{
"title": "Stanford to help build edX MOOC platform",
"url": "http://www.washingtonpost.com/local/education/stanford-to-help-build-edx-mooc-platform/2013/04/02/5b53bb3e-9bbe-11e2-9a79-eb5280c81c63_story.html",
"author": "Nick Anderson",
"image": "wash_post_logo_178x138.jpg",
"deck": null,
"publication": "The Washington Post",
"publish_date": "April 3, 2013"
},
{
"title": "Could online ed end college as we know it?",
"url": "http://www.cbsnews.com/video/watch/?id=50143164n",
"author": "CBS This Morning",
"image": "cbsnews_178x138.jpg",
"deck": null,
"publication": "CBS Television Network",
"publish_date": "March 19, 2013"
},
{
"title": "The Professors’ Big Stage",
"url": "http://www.nytimes.com/2013/03/06/opinion/friedman-the-professors-big-stage.html?_r=1&#commentsContainer",
"author": "Thomas L. Friedman",
"image": "nyt_logo_178x138.jpeg",
"deck": null,
"publication": "The New York Times",
"publish_date": "March 6, 2013"
},
{
"title": "Universities Abroad Join Partnerships On the Web",
"url": "http://www.nytimes.com/2013/02/21/education/universities-abroad-join-mooc-course-projects.html",
"author": "Tamar Lewin",
"image": "nyt_logo_178x138.jpeg",
"deck": null,
"publication": "The New York Times",
"publish_date": "February 20, 2013"
},
{
"title": "Georgetown to offer free online courses",
"url": "http://www.washingtonpost.com/local/education/georgetown-to-offer-free-online-courses/2012/12/09/365c4612-3fd3-11e2-bca3-aadc9b7e29c5_story.html",
"author": "Nick Anderson",
"image": "wash_post_logo_178x138.jpg",
"deck": null,
"publication": "The Washington Post",
"publish_date": "December 9, 2012"
},
{
"title": "Wellesley College teams up with online provider edX",
"url": "http://bostonglobe.com/2012/12/04/edx/AqnQ808q4IEcaUa8KuZuBO/story.html",
"author": "Peter Schworm",
"image": "bostonglobe_logo_178x138.jpeg",
"deck": null,
"publication": "The Boston Globe",
"publish_date": "December 4, 2012"
},
{
"title": "The Year of the MOOC", "title": "The Year of the MOOC",
"url": "http://www.nytimes.com/2012/11/04/education/edlife/massive-open-online-courses-are-multiplying-at-a-rapid-pace.html", "url": "http://www.nytimes.com/2012/11/04/education/edlife/massive-open-online-courses-are-multiplying-at-a-rapid-pace.html",
"author": "Laura Pappano", "author": "Laura Pappano",
......
...@@ -306,6 +306,7 @@ end ...@@ -306,6 +306,7 @@ end
desc "Open jasmine tests for #{system} in your default browser" desc "Open jasmine tests for #{system} in your default browser"
task "browse_jasmine_#{system}" do task "browse_jasmine_#{system}" do
compile_assets()
django_for_jasmine(system, true) do |jasmine_url| django_for_jasmine(system, true) do |jasmine_url|
Launchy.open(jasmine_url) Launchy.open(jasmine_url)
puts "Press ENTER to terminate".red puts "Press ENTER to terminate".red
...@@ -315,6 +316,7 @@ end ...@@ -315,6 +316,7 @@ end
desc "Use phantomjs to run jasmine tests for #{system} from the console" desc "Use phantomjs to run jasmine tests for #{system} from the console"
task "phantomjs_jasmine_#{system}" do task "phantomjs_jasmine_#{system}" do
compile_assets()
phantomjs = ENV['PHANTOMJS_PATH'] || 'phantomjs' phantomjs = ENV['PHANTOMJS_PATH'] || 'phantomjs'
django_for_jasmine(system, false) do |jasmine_url| django_for_jasmine(system, false) do |jasmine_url|
sh("#{phantomjs} common/test/phantom-jasmine/lib/run_jasmine_test.coffee #{jasmine_url}") sh("#{phantomjs} common/test/phantom-jasmine/lib/run_jasmine_test.coffee #{jasmine_url}")
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment