Commit fbada1a9 by Piotr Mitros

Merge branch 'master' into pmitros/modular-refactor

parents 32c50090 d7d831b4
......@@ -13,4 +13,9 @@ db.newaskbot
db.oldaskbot
flushdb.sh
build
.coverage
coverage.xml
cover/
log/
reports/
\#*\#
\ No newline at end of file
source :rubygems
gem 'guard', '~> 1.0.3'
gem 'guard-process', '~> 1.0.3'
gem 'guard-coffeescript', '~> 0.6.0'
gem 'rake', '0.8.3'
gem 'sass', '3.1.15'
gem 'guard-sass', :github => 'sikachu/guard-sass'
gem 'bourbon', '~> 1.3.6'
gem 'libnotify', '~> 0.7.2'
gem 'ruby_gntp', '~> 0.3.4'
GIT
remote: git://github.com/sikachu/guard-sass.git
revision: 2a646996d7fdaa2fabf5f65ba700bd8b02f14c1b
specs:
guard-sass (0.6.0)
guard (>= 0.4.0)
sass (>= 3.1)
GEM
remote: http://rubygems.org/
specs:
bourbon (1.3.6)
sass (>= 3.1)
coffee-script (2.2.0)
coffee-script-source
execjs
coffee-script-source (1.3.3)
execjs (1.3.2)
multi_json (~> 1.0)
ffi (1.0.11)
guard (1.0.3)
ffi (>= 0.5.0)
thor (>= 0.14.6)
guard-coffeescript (0.6.0)
coffee-script (>= 2.2.0)
guard (>= 0.8.3)
guard-process (1.0.3)
ffi (~> 1.0.9)
guard (>= 0.4.2)
spoon (~> 0.0.1)
libnotify (0.7.2)
multi_json (1.3.5)
ruby_gntp (0.3.4)
rake (0.8.3)
sass (3.1.15)
spoon (0.0.1)
thor (0.15.2)
PLATFORMS
ruby
DEPENDENCIES
bourbon (~> 1.3.6)
guard (~> 1.0.3)
guard-coffeescript (~> 0.6.0)
guard-process (~> 1.0.3)
guard-sass!
libnotify (~> 0.7.2)
ruby_gntp (~> 0.3.4)
rake (= 0.8.3)
sass (= 3.1.15)
require 'bourbon'
# Helper method
def production?
@@options[:group].include? 'production'
end
guard :coffeescript, :name => :jasmine, :input => 'templates/coffee/spec', :all_on_start => production?
guard :coffeescript, :input => 'templates/coffee/src', :noop => true
guard :process, :name => :coffeescript, :command => "coffee -j static/js/application.js -c templates/coffee/src" do
watch(%r{^templates/coffee/src/(.+)\.coffee$})
end
if production?
guard :sass, :input => 'templates/sass', :output => 'static/css', :style => :compressed, :all_on_start => true
else
guard :sass, :input => 'templates/sass', :output => 'static/css', :style => :nested, :line_numbers => true
end
#! /bin/bash
cd $(dirname $0) && django-admin.py collectstatic --noinput --settings=envs.aws --pythonpath=.
def contextualize_text(text, context): # private
''' Takes a string with variables. E.g. $a+$b.
Does a substitution of those variables from the context '''
if not text: return text
for key in sorted(context, lambda x,y:cmp(len(y),len(x))):
text=text.replace('$'+key, str(context[key]))
return text
......@@ -7,7 +7,6 @@ Does some caching (to be explained).
'''
import hashlib
import logging
import os
import re
......@@ -16,6 +15,7 @@ import urllib
from datetime import timedelta
from lxml import etree
from util.memcache import fasthash
try: # This lets us do __name__ == ='__main__'
from django.conf import settings
......@@ -57,10 +57,6 @@ def parse_timedelta(time_str):
time_params[name] = int(param)
return timedelta(**time_params)
def fasthash(string):
m = hashlib.new("md4")
m.update(string)
return "id"+m.hexdigest()
def xpath(xml, query_string, **args):
''' Safe xpath query into an xml tree:
......@@ -122,7 +118,7 @@ def id_tag(course):
new_id = default_ids[elem.tag] + new_id
elem.set('id', new_id)
else:
elem.set('id', fasthash(etree.tostring(elem)))
elem.set('id', "id"+fasthash(etree.tostring(elem)))
def propogate_downward_tag(element, attribute_name, parent_attribute = None):
''' This call is to pass down an attribute to all children. If an element
......@@ -160,11 +156,11 @@ def user_groups(user):
cache_expiration = 60 * 60 # one hour
# Kill caching on dev machines -- we switch groups a lot
group_names = cache.get(fasthash(key))
group_names = cache.get(key)
if group_names is None:
group_names = [u.name for u in UserTestGroup.objects.filter(users=user)]
cache.set(fasthash(key), group_names, cache_expiration)
cache.set(key, group_names, cache_expiration)
return group_names
......@@ -203,7 +199,7 @@ def course_file(user,coursename=None):
cache_key = filename + "_processed?dev_content:" + str(options['dev_content']) + "&groups:" + str(sorted(groups))
if "dev" not in settings.DEFAULT_GROUPS:
tree_string = cache.get(fasthash(cache_key))
tree_string = cache.get(cache_key)
else:
tree_string = None
......@@ -211,7 +207,7 @@ def course_file(user,coursename=None):
tree = course_xml_process(etree.XML(render_to_string(filename, options, namespace = 'course')))
tree_string = etree.tostring(tree)
cache.set(fasthash(cache_key), tree_string, 60)
cache.set(cache_key, tree_string, 60)
else:
tree = etree.XML(tree_string)
......
......@@ -13,8 +13,8 @@ from fs.osfs import OSFS
from django.conf import settings
from mitxmako.shortcuts import render_to_string
from models import StudentModule
from multicourse import multicourse_settings
import courseware.modules
......@@ -31,6 +31,8 @@ class I4xSystem(object):
self.track_function = track_function
if not filestore:
self.filestore = OSFS(settings.DATA_DIR)
else:
self.filestore = filestore
self.render_function = render_function
self.exception404 = Http404
def __repr__(self):
......@@ -95,15 +97,21 @@ def render_x_module(user, request, xml_module, module_object_preload):
state = smod.state
# get coursename if stored
if 'coursename' in request.session: coursename = request.session['coursename']
else: coursename = None
coursename = multicourse_settings.get_coursename_from_request(request)
if coursename and settings.ENABLE_MULTICOURSE:
xp = multicourse_settings.get_course_xmlpath(coursename) # path to XML for the course
data_root = settings.DATA_DIR + xp
else:
data_root = settings.DATA_DIR
# Create a new instance
ajax_url = settings.MITX_ROOT_URL + '/modx/'+module_type+'/'+module_id+'/'
system = I4xSystem(track_function = make_track_function(request),
render_function = lambda x: render_module(user, request, x, module_object_preload),
ajax_url = ajax_url,
filestore = None
filestore = OSFS(data_root),
)
instance=module_class(system,
etree.tostring(xml_module),
......
......@@ -2,6 +2,8 @@ import logging
import urllib
import json
from fs.osfs import OSFS
from django.conf import settings
from django.core.context_processors import csrf
from django.contrib.auth.models import User
......@@ -17,7 +19,6 @@ from lxml import etree
from module_render import render_module, make_track_function, I4xSystem
from models import StudentModule
from student.models import UserProfile
from util.errors import record_exception
from util.views import accepts
from multicourse import multicourse_settings
......@@ -38,9 +39,7 @@ def gradebook(request):
if 'course_admin' not in content_parser.user_groups(request.user):
raise Http404
# TODO: This should be abstracted out. We repeat this logic many times.
if 'coursename' in request.session: coursename = request.session['coursename']
else: coursename = None
coursename = multicourse_settings.get_coursename_from_request(request)
student_objects = User.objects.all()[:100]
student_info = [{'username' :s.username,
......@@ -68,8 +67,7 @@ def profile(request, student_id = None):
user_info = UserProfile.objects.get(user=student) # request.user.profile_cache #
if 'coursename' in request.session: coursename = request.session['coursename']
else: coursename = None
coursename = multicourse_settings.get_coursename_from_request(request)
context={'name':user_info.name,
'username':student.username,
......@@ -110,13 +108,12 @@ def render_section(request, section):
if not settings.COURSEWARE_ENABLED:
return redirect('/')
if 'coursename' in request.session: coursename = request.session['coursename']
else: coursename = None
coursename = multicourse_settings.get_coursename_from_request(request)
try:
dom = content_parser.section_file(user, section, coursename)
except:
record_exception(log, "Unable to parse courseware xml")
log.exception("Unable to parse courseware xml")
return render_to_response('courseware-error.html', {})
context = {
......@@ -135,7 +132,7 @@ def render_section(request, section):
try:
module = render_module(user, request, dom, module_object_preload)
except:
record_exception(log, "Unable to load module")
log.exception("Unable to load module")
context.update({
'init': '',
'content': render_to_string("module-error.html", {}),
......@@ -184,7 +181,7 @@ def index(request, course=None, chapter="Using the System", section="Hints"):
try:
dom = content_parser.course_file(user,course) # also pass course to it, for course-specific XML path
except:
record_exception(log, "Unable to parse courseware xml")
log.exception("Unable to parse courseware xml")
return render_to_response('courseware-error.html', {})
dom_module = dom.xpath("//course[@name=$course]/chapter[@name=$chapter]//section[@name=$section]/*[1]",
......@@ -213,7 +210,7 @@ def index(request, course=None, chapter="Using the System", section="Hints"):
try:
module = render_module(user, request, module, module_object_preload)
except:
record_exception(log, "Unable to load module")
log.exception("Unable to load module")
context.update({
'init': '',
'content': render_to_string("module-error.html", {}),
......@@ -251,14 +248,19 @@ def modx_dispatch(request, module=None, dispatch=None, id=None):
ajax_url = settings.MITX_ROOT_URL + '/modx/'+module+'/'+id+'/'
# get coursename if stored
if 'coursename' in request.session: coursename = request.session['coursename']
else: coursename = None
coursename = multicourse_settings.get_coursename_from_request(request)
if coursename and settings.ENABLE_MULTICOURSE:
xp = multicourse_settings.get_course_xmlpath(coursename) # path to XML for the course
data_root = settings.DATA_DIR + xp
else:
data_root = settings.DATA_DIR
# Grab the XML corresponding to the request from course.xml
try:
xml = content_parser.module_xml(request.user, module, 'id', id, coursename)
except:
record_exception(log, "Unable to load module during ajax call")
log.exception("Unable to load module during ajax call")
if accepts(request, 'text/html'):
return render_to_response("module-error.html", {})
else:
......@@ -269,7 +271,7 @@ def modx_dispatch(request, module=None, dispatch=None, id=None):
system = I4xSystem(track_function = make_track_function(request),
render_function = None,
ajax_url = ajax_url,
filestore = None
filestore = OSFS(data_root),
)
try:
......@@ -278,7 +280,7 @@ def modx_dispatch(request, module=None, dispatch=None, id=None):
id,
state=oldstate)
except:
record_exception(log, "Unable to load module instance during ajax call")
log.exception("Unable to load module instance during ajax call")
if accepts(request, 'text/html'):
return render_to_response("module-error.html", {})
else:
......@@ -307,12 +309,12 @@ def quickedit(request, id=None):
print "In deployed use, this will only edit on one server"
print "We need a setting to disable for production where there is"
print "a load balanacer"
if not request.user.is_staff():
if not request.user.is_staff:
return redirect('/')
# get coursename if stored
if 'coursename' in request.session: coursename = request.session['coursename']
else: coursename = None
coursename = multicourse_settings.get_coursename_from_request(request)
xp = multicourse_settings.get_course_xmlpath(coursename) # path to XML for the course
def get_lcp(coursename,id):
# Grab the XML corresponding to the request from course.xml
......@@ -325,9 +327,8 @@ def quickedit(request, id=None):
system = I4xSystem(track_function = make_track_function(request),
render_function = None,
ajax_url = ajax_url,
filestore = None,
coursename = coursename,
role = 'staff' if request.user.is_staff else 'student', # TODO: generalize this
filestore = OSFS(settings.DATA_DIR + xp),
#role = 'staff' if request.user.is_staff else 'student', # TODO: generalize this
)
instance=courseware.modules.get_module_class(module)(system,
xml,
......
from django.conf.urls.defaults import *
urlpatterns = patterns('',
url(r'^$', 'heartbeat.views.heartbeat', name='heartbeat'),
)
import json
from datetime import datetime
from django.http import HttpResponse
def heartbeat(request):
"""
Simple view that a loadbalancer can check to verify that the app is up
"""
output = {
'date': datetime.now().isoformat()
}
return HttpResponse(json.dumps(output, indent=4))
......@@ -42,6 +42,11 @@ else: # default to 6.002_Spring_2012
#-----------------------------------------------------------------------------
# wrapper functions around course settings
def get_coursename_from_request(request):
if 'coursename' in request.session: coursename = request.session['coursename']
else: coursename = None
return coursename
def get_course_settings(coursename):
if not coursename:
if hasattr(settings,'COURSE_DEFAULT'):
......
# multicourse/views.py
import datetime
import json
import sys
from django.conf import settings
from django.contrib.auth.models import User
from django.core.context_processors import csrf
from django.core.mail import send_mail
from django.http import Http404
from django.http import HttpResponse
from django.shortcuts import redirect
from mitxmako.shortcuts import render_to_response, render_to_string
import courseware.capa.calc
import track.views
from multicourse import multicourse_settings
def mitxhome(request):
''' Home page (link from main header). List of courses. '''
if settings.ENABLE_MULTICOURSE:
context = {'courseinfo' : multicourse_settings.COURSE_SETTINGS}
return render_to_response("mitxhome.html", context)
return info(request)
......@@ -153,13 +153,16 @@ MANAGERS = ADMINS
# Static content
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATIC_ROOT = ENV_ROOT / "staticfiles" # We don't run collectstatic -- this is to appease askbot checks
STATIC_ROOT = ENV_ROOT / "staticfiles"
# FIXME: We should iterate through the courses we have, adding the static
# contents for each of them. (Right now we just use symlinks.)
STATICFILES_DIRS = [
PROJECT_ROOT / "static",
ASKBOT_ROOT / "askbot" / "skins",
("circuits", DATA_DIR / "images"),
("handouts", DATA_DIR / "handouts"),
("subs", DATA_DIR / "subs"),
# This is how you would use the textbook images locally
# ("book", ENV_ROOT / "book_images")
......@@ -214,14 +217,14 @@ SIMPLE_WIKI_REQUIRE_LOGIN_EDIT = True
SIMPLE_WIKI_REQUIRE_LOGIN_VIEW = False
################################# Jasmine ###################################
JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/templates/coffee'
JASMINE_TEST_DIRECTORY = PROJECT_ROOT + '/static/coffee'
################################# Middleware ###################################
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
'staticfiles.finders.FileSystemFinder',
'staticfiles.finders.AppDirectoriesFinder',
)
# List of callables that know how to import templates from various sources.
......@@ -257,6 +260,62 @@ MIDDLEWARE_CLASSES = (
# 'debug_toolbar.middleware.DebugToolbarMiddleware',
)
############################### Pipeline #######################################
STATICFILES_STORAGE = 'pipeline.storage.PipelineCachedStorage'
PIPELINE_CSS = {
'application': {
'source_filenames': ['sass/application.scss'],
'output_filename': 'css/application.css',
},
'marketing': {
'source_filenames': ['sass/marketing.scss'],
'output_filename': 'css/marketing.css',
},
'marketing-ie': {
'source_filenames': ['sass/marketing-ie.scss'],
'output_filename': 'css/marketing-ie.css',
},
'print': {
'source_filenames': ['sass/print.scss'],
'output_filename': 'css/print.css',
}
}
PIPELINE_JS = {
'application': {
'source_filenames': [
'coffee/src/calculator.coffee',
'coffee/src/courseware.coffee',
'coffee/src/feedback_form.coffee',
'coffee/src/main.coffee'
],
'output_filename': 'js/application.js'
}
}
PIPELINE_COMPILERS = [
'pipeline.compilers.sass.SASSCompiler',
'pipeline.compilers.coffee.CoffeeScriptCompiler',
]
PIPELINE_SASS_ARGUMENTS = '-t compressed -r {proj_dir}/static/sass/bourbon/lib/bourbon.rb'.format(proj_dir=PROJECT_ROOT)
PIPELINE_CSS_COMPRESSOR = None
PIPELINE_JS_COMPRESSOR = 'pipeline.compressors.yui.YUICompressor'
STATICFILES_IGNORE_PATTERNS = (
"sass/*",
"coffee/*",
"*.py",
"*.pyc"
)
PIPELINE_YUI_BINARY = 'yui-compressor'
PIPELINE_SASS_BINARY = 'sass'
PIPELINE_COFFEE_SCRIPT_BINARY = 'coffee'
################################### APPS #######################################
INSTALLED_APPS = (
# Standard ones that are always installed...
......@@ -266,9 +325,12 @@ INSTALLED_APPS = (
'django.contrib.messages',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.staticfiles',
'south',
# For asset pipelining
'pipeline',
'staticfiles',
# Our courseware
'circuit',
'courseware',
......
......@@ -31,7 +31,8 @@ CACHES = {
# In staging/prod envs, the sessions also live here.
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'mitx_loc_mem_cache'
'LOCATION': 'mitx_loc_mem_cache',
'KEY_FUNCTION': 'util.memcache.safe_key',
},
# The general cache is what you get if you use our util.cache. It's used for
......@@ -43,6 +44,7 @@ CACHES = {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
'KEY_PREFIX': 'general',
'VERSION': 4,
'KEY_FUNCTION': 'util.cache.memcache_safe_key',
}
}
......@@ -81,3 +83,7 @@ FILE_UPLOAD_HANDLERS = (
'django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
)
########################### PIPELINE #################################
PIPELINE_SASS_ARGUMENTS = '-r {proj_dir}/static/sass/bourbon/lib/bourbon.rb'.format(proj_dir=PROJECT_ROOT)
......@@ -30,12 +30,14 @@ CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'KEY_FUNCTION': 'util.memcache.safe_key',
},
'general': {
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
'LOCATION': '127.0.0.1:11211',
'KEY_PREFIX' : 'general',
'VERSION' : 5,
'KEY_FUNCTION': 'util.memcache.safe_key',
}
}
......
......@@ -29,7 +29,7 @@ def get_logger_config(log_dir,
" %(process)d] [%(filename)s:%(lineno)d] - %(message)s").format(
logging_env=logging_env, hostname=hostname)
handlers = ['console'] if debug else ['console', 'syslogger']
handlers = ['console'] if debug else ['console', 'syslogger', 'newrelic']
return {
'version': 1,
......@@ -60,6 +60,11 @@ def get_logger_config(log_dir,
'filename' : tracking_file_loc,
'formatter' : 'raw',
},
'newrelic' : {
'level': 'ERROR',
'class': 'newrelic_logging.NewRelicHandler',
'formatter': 'raw',
}
},
'loggers' : {
'django' : {
......@@ -82,5 +87,10 @@ def get_logger_config(log_dir,
'level' : 'DEBUG',
'propagate' : False
},
'keyedcache' : {
'handlers' : handlers,
'level' : 'DEBUG',
'propagate' : False
},
}
}
\ No newline at end of file
}
......@@ -30,7 +30,8 @@ CACHES = {
# In staging/prod envs, the sessions also live here.
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'mitx_loc_mem_cache'
'LOCATION': 'mitx_loc_mem_cache',
'KEY_FUNCTION': 'util.memcache.safe_key',
},
# The general cache is what you get if you use our util.cache. It's used for
......@@ -42,6 +43,7 @@ CACHES = {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
'KEY_PREFIX': 'general',
'VERSION': 4,
'KEY_FUNCTION': 'util.memcache.safe_key',
}
}
......
......@@ -54,7 +54,8 @@ CACHES = {
# In staging/prod envs, the sessions also live here.
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'mitx_loc_mem_cache'
'LOCATION': 'mitx_loc_mem_cache',
'KEY_FUNCTION': 'util.memcache.safe_key',
},
# The general cache is what you get if you use our util.cache. It's used for
......@@ -66,6 +67,7 @@ CACHES = {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
'KEY_PREFIX': 'general',
'VERSION': 4,
'KEY_FUNCTION': 'util.memcache.safe_key',
}
}
......
import newrelic.agent
import logging
class NewRelicHandler(logging.Handler):
def emit(self, record):
if record.exc_info is not None:
params = record.__dict__
params['log_message'] = record.getMessage()
newrelic.agent.record_exception(
*record.exc_info,
params=params
)
from staticfiles.storage import staticfiles_storage
from mitxmako.shortcuts import render_to_string
from pipeline.conf import settings
from pipeline.packager import Packager
from pipeline.utils import guess_type
def compressed_css(package_name):
package = settings.PIPELINE_CSS.get(package_name, {})
if package:
package = {package_name: package}
packager = Packager(css_packages=package, js_packages={})
package = packager.package_for('css', package_name)
if settings.PIPELINE:
return render_css(package, package.output_filename)
else:
paths = packager.compile(package.paths)
return render_individual_css(package, paths)
def render_css(package, path):
template_name = package.template_name or "pipeline_mako/css.html"
context = package.extra_context
context.update({
'type': guess_type(path, 'text/css'),
'url': staticfiles_storage.url(path)
})
return render_to_string(template_name, context)
def render_individual_css(package, paths):
tags = [render_css(package, path) for path in paths]
return '\n'.join(tags)
def compressed_js(package_name):
package = settings.PIPELINE_JS.get(package_name, {})
if package:
package = {package_name: package}
packager = Packager(css_packages={}, js_packages=package)
package = packager.package_for('js', package_name)
if settings.PIPELINE:
return render_js(package, package.output_filename)
else:
paths = packager.compile(package.paths)
templates = packager.pack_templates(package)
return render_individual_js(package, paths, templates)
def render_js(package, path):
template_name = package.template_name or "pipeline_mako/js.html"
context = package.extra_context
context.update({
'type': guess_type(path, 'text/javascript'),
'url': staticfiles_storage.url(path)
})
return render_to_string(template_name, context)
def render_inline_js(package, js):
context = package.extra_context
context.update({
'source': js
})
return render_to_string("pipeline_mako/inline_js.html", context)
def render_individual_js(package, paths, templates=None):
tags = [render_js(package, js) for js in paths]
if templates:
tags.append(render_inline_js(package, templates))
return '\n'.join(tags)
from staticfiles.storage import staticfiles_storage
import re
PREFIX = '/static/'
STATIC_PATTERN = re.compile(r"""
(?P<quote>['"]) # the opening quotes
{prefix} # the prefix
(?P<rest>.*?) # everything else in the url
(?P=quote) # the first matching closing quote
""".format(prefix=PREFIX), re.VERBOSE)
PREFIX_LEN = len(PREFIX)
def replace(static_url):
quote = static_url.group('quote')
url = staticfiles_storage.url(static_url.group('rest'))
return "".join([quote, url, quote])
def replace_urls(text):
return STATIC_PATTERN.sub(replace, text)
import newrelic.agent
import sys
def record_exception(logger, msg, params={}, ignore_errors=[]):
logger.exception(msg)
newrelic.agent.record_exception(*sys.exc_info())
"""
This module provides a KEY_FUNCTION suitable for use with a memcache backend
so that we can cache any keys, not just ones that memcache would ordinarily accept
"""
from django.utils.encoding import smart_str
import hashlib
import urllib
def fasthash(string):
m = hashlib.new("md4")
m.update(string)
return m.hexdigest()
def safe_key(key, key_prefix, version):
safe_key = urllib.quote_plus(smart_str(key))
if len(safe_key) > 250:
safe_key = fasthash(safe_key)
return ":".join([key_prefix, str(version), safe_key])
......@@ -61,12 +61,6 @@ def info(request):
''' Info page (link from main header) '''
return render_to_response("info.html", {})
def mitxhome(request):
''' Home page (link from main header). List of courses. '''
if settings.ENABLE_MULTICOURSE:
return render_to_response("mitxhome.html", {})
return info(request)
# From http://djangosnippets.org/snippets/1042/
def parse_accept_header(accept):
"""Parse the Accept header *accept*, returning a list with pairs of
......
......@@ -38,10 +38,12 @@ task :default => [:pep8, :pylint, :test]
directory REPORT_DIR
desc "Run pep8 on all of djangoapps"
task :pep8 => REPORT_DIR do
sh("pep8 --ignore=E501 djangoapps | tee #{REPORT_DIR}/pep8.report")
end
desc "Run pylint on all of djangoapps"
task :pylint => REPORT_DIR do
Dir.chdir("djangoapps") do
Dir["*"].each do |app|
......@@ -50,12 +52,20 @@ task :pylint => REPORT_DIR do
end
end
desc "Run all django tests on our djangoapps"
task :test => REPORT_DIR do
ENV['NOSE_XUNIT_FILE'] = File.join(REPORT_DIR, "nosetests.xml")
django_admin = ENV['DJANGO_ADMIN_PATH'] || select_executable('django-admin.py', 'django-admin')
sh("#{django_admin} test --settings=envs.test --pythonpath=. $(ls djangoapps)")
end
desc "Start a local server with the specified environment (defaults to dev). Other useful environments are devplus (for dev testing with a real local database)"
task :runserver, [:env] => [] do |t, args|
args.with_defaults(:env => 'dev')
django_admin = ENV['DJANGO_ADMIN_PATH'] || select_executable('django-admin.py', 'django-admin')
sh("#{django_admin} runserver --settings=envs.#{args.env} --pythonpath=.")
end
task :package do
FileUtils.mkdir_p(BUILD_DIR)
......@@ -68,24 +78,32 @@ task :package do
set -x
chown -R makeitso:makeitso #{INSTALL_DIR_PATH}
chmod +x #{INSTALL_DIR_PATH}/collect_static_resources
service gunicorn stop
rm -f #{LINK_PATH}
ln -s #{INSTALL_DIR_PATH} #{LINK_PATH}
chown makeitso:makeitso #{LINK_PATH}
/opt/wwc/mitx/collect_static_resources
# Delete mako temp files
rm -rf /tmp/tmp*mako
service gunicorn start
POSTINSTALL
postinstall.close()
FileUtils.chmod(0755, postinstall.path)
args = ["fakeroot", "fpm", "-s", "dir", "-t", "deb",
"--verbose",
"--after-install=#{postinstall.path}",
"--prefix=#{INSTALL_DIR_PATH}",
"--exclude=build",
"--exclude=rakefile",
"--exclude=.git",
"--exclude=**/build/**",
"--exclude=**/rakefile",
"--exclude=**/.git/**",
"--exclude=**/*.pyc",
"--exclude=reports",
"--exclude=**/reports/**",
"-C", "#{REPO_ROOT}",
"--provides=#{PACKAGE_NAME}",
"--name=#{NORMALIZED_DEPLOY_NAME}",
......
django-admin.py runserver --settings=envs.dev --pythonpath=.
import os
import platform
import sys
import tempfile
import djcelery
### Dark code. Should be enabled in local settings for devel.
ENABLE_MULTICOURSE = False # set to False to disable multicourse display (see lib.util.views.mitxhome)
QUICKEDIT = False
###
MITX_ROOT_URL = ''
COURSE_NAME = "6.002_Spring_2012"
COURSE_NUMBER = "6.002x"
COURSE_TITLE = "Circuits and Electronics"
COURSE_DEFAULT = '6.002_Spring_2012'
COURSE_SETTINGS = {'6.002_Spring_2012': {'number' : '6.002x',
'title' : 'Circuits and Electronics',
'xmlpath': '6002x/',
}
}
ROOT_URLCONF = 'urls'
# from settings2.askbotsettings import LIVESETTINGS_OPTIONS
DEFAULT_GROUPS = []
# Configuration option for when we want to grab server error pages
STATIC_GRAB = False
DEV_CONTENT = True
LIB_URL = '/static/js/'
# LIB_URL = 'https://mitxstatic.s3.amazonaws.com/js/' # No longer using S3 for this
BOOK_URL = '/static/book/'
BOOK_URL = 'https://mitxstatic.s3.amazonaws.com/book_images/'
# Feature Flags. These should be set to false until they are ready to deploy, and then eventually flag mechanisms removed
GENERATE_PROFILE_SCORES = False # If this is true, random scores will be generated for the purpose of debugging the profile graphs
# Our parent dir (mitx_all) is the BASE_DIR
BASE_DIR = os.path.abspath(os.path.join(__file__, "..", ".."))
PROJECT_DIR = os.path.abspath(os.path.join(__file__, ".."))
sys.path.append(BASE_DIR + "/mitx/djangoapps")
sys.path.append(BASE_DIR + "/mitx/lib")
COURSEWARE_ENABLED = True
ASKBOT_ENABLED = True
# Defaults to be overridden
EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
SITE_NAME = "localhost:8000"
DEFAULT_FROM_EMAIL = 'registration@mitx.mit.edu'
DEFAULT_FEEDBACK_EMAIL = 'feedback@mitx.mit.edu'
GENERATE_RANDOM_USER_CREDENTIALS = False
SIMPLE_WIKI_REQUIRE_LOGIN_EDIT = True
SIMPLE_WIKI_REQUIRE_LOGIN_VIEW = False
PERFSTATS = False
HTTPS = 'on'
MEDIA_URL = ''
MEDIA_ROOT = ''
# S3BotoStorage insists on a timeout for uploaded assets. We should make it
# permanent instead, but rather than trying to figure out exactly where that
# setting is, I'm just bumping the expiration time to something absurd (100
# years). This is only used if DEFAULT_FILE_STORAGE is overriden to use S3
# in the global settings.py
AWS_QUERYSTRING_EXPIRE = 10 * 365 * 24 * 60 * 60 # 10 years
# Needed for Askbot
# Deployed machines: Move to S3
DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage'
DEBUG = True
TEMPLATE_DEBUG = DEBUG
ADMINS = (
('MITx Admins', 'admin@mitx.mit.edu'),
)
MANAGERS = ADMINS
# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
TIME_ZONE = 'America/New_York'
# Language code for this installation. All choices can be found here:
# http://www.i18nguy.com/unicode/language-identifiers.html
LANGUAGE_CODE = 'en'
SITE_ID = 1
# If you set this to False, Django will make some optimizations so as not
# to load the internationalization machinery.
USE_I18N = True
# If you set this to False, Django will not format dates, numbers and
# calendars according to the current locale
USE_L10N = True
STATIC_URL = '/static/'
# URL prefix for admin static files -- CSS, JavaScript and images.
# Make sure to use a trailing slash.
# Examples: "http://foo.com/static/admin/", "/static/admin/".
ADMIN_MEDIA_PREFIX = '/static/admin/'
# List of finder classes that know how to find static files in
# various locations.
STATICFILES_FINDERS = (
'django.contrib.staticfiles.finders.FileSystemFinder',
'django.contrib.staticfiles.finders.AppDirectoriesFinder',
# 'django.contrib.staticfiles.finders.DefaultStorageFinder',
)
# List of callables that know how to import templates from various sources.
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
MIDDLEWARE_CLASSES = (
'util.middleware.ExceptionLoggingMiddleware',
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
#'django.contrib.auth.middleware.AuthenticationMiddleware',
'cache_toolbox.middleware.CacheBackedAuthenticationMiddleware',
'masquerade.middleware.MasqueradeMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'track.middleware.TrackMiddleware',
'mitxmako.middleware.MakoMiddleware',
#'ssl_auth.ssl_auth.NginxProxyHeaderMiddleware', # ssl authentication behind nginx proxy
#'debug_toolbar.middleware.DebugToolbarMiddleware',
# Uncommenting the following will prevent csrf token from being re-set if you
# delete it on the browser. I don't know why.
#'django.middleware.cache.FetchFromCacheMiddleware',
)
ROOT_URLCONF = 'mitx.urls'
INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'courseware',
'student',
'django.contrib.humanize',
'static_template_view',
'staticbook',
'simplewiki',
'track',
'circuit',
'perfstats',
'util',
'masquerade',
'django_jasmine',
#'ssl_auth', ## Broken. Disabled for now.
'multicourse', # multiple courses
# Uncomment the next line to enable the admin:
# 'django.contrib.admin',
# Uncomment the next line to enable admin documentation:
# 'django.contrib.admindocs',
)
#TRACK_DIR = None
DEBUG_TRACK_LOG = False
# Maximum length of a tracking string. We don't want e.g. a file upload in our log
TRACK_MAX_EVENT = 10000
# Maximum length of log file before starting a new one.
MAXLOG = 500
LOG_DIR = "/tmp/"
MAKO_MODULE_DIR = None
MAKO_TEMPLATES = {}
LOGGING_ENV = "dev" # override this in different environments
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': '../mitx.db',
}
}
SECRET_KEY = 'unsecure'
# Default dev cache (i.e. no caching)
CACHES = {
'default': {
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
}
}
# Make sure we execute correctly regardless of where we're called from
override_settings = os.path.join(BASE_DIR, "settings.py")
if os.path.isfile(override_settings):
execfile(override_settings)
# A sample logging configuration. The only tangible logging
# performed by this configuration is to send an email to
# the site admins on every HTTP 500 error.
# See http://docs.djangoproject.com/en/dev/topics/logging for
# more details on how to customize your logging configuration.
pid = os.getpid()
hostname = platform.node().split(".")[0]
SYSLOG_ADDRESS = ('syslog.m.i4x.org', 514)
TRACKING_LOG_FILE = LOG_DIR + "/tracking_{0}.log".format(pid)
handlers = ['console']
if not DEBUG:
handlers.append('syslogger')
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters' : {
'standard' : {
'format' : '%(asctime)s %(levelname)s %(process)d [%(name)s] %(filename)s:%(lineno)d - %(message)s',
},
'syslog_format' : {
'format' : '[%(name)s][env:' + LOGGING_ENV + '] %(levelname)s [' + \
hostname + ' %(process)d] [%(filename)s:%(lineno)d] - %(message)s',
},
'raw' : {
'format' : '%(message)s',
}
},
'handlers' : {
'console' : {
'level' : 'DEBUG' if DEBUG else 'INFO',
'class' : 'logging.StreamHandler',
'formatter' : 'standard',
'stream' : sys.stdout,
},
'console_err' : {
'level' : 'ERROR',
'class' : 'logging.StreamHandler',
'formatter' : 'standard',
'stream' : sys.stderr,
},
'syslogger' : {
'level' : 'INFO',
'class' : 'logging.handlers.SysLogHandler',
'address' : SYSLOG_ADDRESS,
'formatter' : 'syslog_format',
},
'tracking' : {
'level' : 'DEBUG',
'class' : 'logging.handlers.WatchedFileHandler',
'filename' : TRACKING_LOG_FILE,
'formatter' : 'raw',
},
'mail_admins' : {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler',
},
},
'loggers' : {
'django' : {
'handlers' : handlers, # + ['mail_admins'],
'propagate' : True,
'level' : 'INFO'
},
'tracking' : {
'handlers' : ['tracking'],
'level' : 'DEBUG',
'propagate' : False,
},
'root' : {
'handlers' : handlers,
'level' : 'DEBUG',
'propagate' : False
},
'mitx' : {
'handlers' : handlers,
'level' : 'DEBUG',
'propagate' : False
},
}
}
if PERFSTATS :
MIDDLEWARE_CLASSES = ( 'perfstats.middleware.ProfileMiddleware',) + MIDDLEWARE_CLASSES
if 'TRACK_DIR' not in locals():
TRACK_DIR = BASE_DIR+'/track_dir/'
if 'STATIC_ROOT' not in locals():
STATIC_ROOT = BASE_DIR+'/staticroot/'
if 'DATA_DIR' not in locals():
DATA_DIR = BASE_DIR+'/data/'
if 'TEXTBOOK_DIR' not in locals():
TEXTBOOK_DIR = BASE_DIR+'/textbook/'
if 'TEMPLATE_DIRS' not in locals():
TEMPLATE_DIRS = (
PROJECT_DIR+'/templates/',
DATA_DIR+'/templates',
TEXTBOOK_DIR,
)
if 'STATICFILES_DIRS' not in locals():
STATICFILES_DIRS = (
PROJECT_DIR+'/3rdParty/static',
PROJECT_DIR+'/static',
)
if 'ASKBOT_EXTRA_SKINS_DIR' not in locals():
ASKBOT_EXTRA_SKINS_DIR = BASE_DIR+'/askbot-devel/askbot/skins'
if 'ASKBOT_DIR' not in locals():
ASKBOT_DIR = BASE_DIR+'/askbot-devel'
sys.path.append(ASKBOT_DIR)
import askbot
import site
STATICFILES_DIRS = STATICFILES_DIRS + ( ASKBOT_DIR+'/askbot/skins',)
ASKBOT_ROOT = os.path.dirname(askbot.__file__)
# Needed for Askbot
# Deployed machines: Move to S3
if MEDIA_ROOT == '':
MEDIA_ROOT = ASKBOT_DIR+'/askbot/upfiles'
if MEDIA_URL == '':
MEDIA_URL = '/discussion/upfiles/'
site.addsitedir(os.path.join(os.path.dirname(askbot.__file__), 'deps'))
TEMPLATE_LOADERS = TEMPLATE_LOADERS + ('askbot.skins.loaders.filesystem_load_template_source',)
MIDDLEWARE_CLASSES = MIDDLEWARE_CLASSES + (
'askbot.middleware.anon_user.ConnectToSessionMessagesMiddleware',
'askbot.middleware.forum_mode.ForumModeMiddleware',
'askbot.middleware.cancel.CancelActionMiddleware',
'django.middleware.transaction.TransactionMiddleware',
#'debug_toolbar.middleware.DebugToolbarMiddleware',
'askbot.middleware.view_log.ViewLogMiddleware',
'askbot.middleware.spaceless.SpacelessMiddleware',
#'askbot.middleware.pagesize.QuestionsPageSizeMiddleware',
)
FILE_UPLOAD_TEMP_DIR = os.path.join(os.path.dirname(__file__), 'tmp').replace('\\','/')
FILE_UPLOAD_HANDLERS = (
'django.core.files.uploadhandler.MemoryFileUploadHandler',
'django.core.files.uploadhandler.TemporaryFileUploadHandler',
)
ASKBOT_ALLOWED_UPLOAD_FILE_TYPES = ('.jpg', '.jpeg', '.gif', '.bmp', '.png', '.tiff')
ASKBOT_MAX_UPLOAD_FILE_SIZE = 1024 * 1024 #result in bytes
# ASKBOT_FILE_UPLOAD_DIR = os.path.join(os.path.dirname(__file__), 'askbot', 'upfiles')
PROJECT_ROOT = os.path.dirname(__file__)
TEMPLATE_CONTEXT_PROCESSORS = (
'django.core.context_processors.request',
'django.core.context_processors.static',
'askbot.context.application_settings',
#'django.core.context_processors.i18n',
'askbot.user_messages.context_processors.user_messages',#must be before auth
'django.core.context_processors.auth', #this is required for admin
'django.core.context_processors.csrf', #necessary for csrf protection
)
INSTALLED_APPS = INSTALLED_APPS + (
'django.contrib.sitemaps',
'django.contrib.admin',
'south',
'askbot.deps.livesettings',
'askbot',
'keyedcache', # TODO: Main askbot tree has this installed, but we get intermittent errors if we include it.
'robots',
'django_countries',
'djcelery',
'djkombu',
'followit',
)
CACHE_MIDDLEWARE_ANONYMOUS_ONLY = True
ASKBOT_URL = 'discussion/'
LOGIN_REDIRECT_URL = MITX_ROOT_URL + '/'
LOGIN_URL = MITX_ROOT_URL + '/'
# ASKBOT_UPLOADED_FILES_URL = '%s%s' % (ASKBOT_URL, 'upfiles/')
ALLOW_UNICODE_SLUGS = False
ASKBOT_USE_STACKEXCHANGE_URLS = False #mimic url scheme of stackexchange
ASKBOT_CSS_DEVEL = True
LIVESETTINGS_OPTIONS = {
1: {
'DB' : False,
'SETTINGS' : {
'ACCESS_CONTROL' : {
'ASKBOT_CLOSED_FORUM_MODE' : True,
},
'BADGES' : {
'DISCIPLINED_BADGE_MIN_UPVOTES' : 3,
'PEER_PRESSURE_BADGE_MIN_DOWNVOTES' : 3,
'TEACHER_BADGE_MIN_UPVOTES' : 1,
'NICE_ANSWER_BADGE_MIN_UPVOTES' : 2,
'GOOD_ANSWER_BADGE_MIN_UPVOTES' : 3,
'GREAT_ANSWER_BADGE_MIN_UPVOTES' : 5,
'NICE_QUESTION_BADGE_MIN_UPVOTES' : 2,
'GOOD_QUESTION_BADGE_MIN_UPVOTES' : 3,
'GREAT_QUESTION_BADGE_MIN_UPVOTES' : 5,
'POPULAR_QUESTION_BADGE_MIN_VIEWS' : 150,
'NOTABLE_QUESTION_BADGE_MIN_VIEWS' : 250,
'FAMOUS_QUESTION_BADGE_MIN_VIEWS' : 500,
'SELF_LEARNER_BADGE_MIN_UPVOTES' : 1,
'CIVIC_DUTY_BADGE_MIN_VOTES' : 100,
'ENLIGHTENED_BADGE_MIN_UPVOTES' : 3,
'ASSOCIATE_EDITOR_BADGE_MIN_EDITS' : 20,
'COMMENTATOR_BADGE_MIN_COMMENTS' : 10,
'ENTHUSIAST_BADGE_MIN_DAYS' : 30,
'FAVORITE_QUESTION_BADGE_MIN_STARS' : 3,
'GURU_BADGE_MIN_UPVOTES' : 5,
'NECROMANCER_BADGE_MIN_DELAY' : 30,
'NECROMANCER_BADGE_MIN_UPVOTES' : 1,
'STELLAR_QUESTION_BADGE_MIN_STARS' : 5,
'TAXONOMIST_BADGE_MIN_USE_COUNT' : 10,
},
'EMAIL' : {
'EMAIL_SUBJECT_PREFIX' : u'[Django] ',
'EMAIL_UNIQUE' : True,
'EMAIL_VALIDATION' : False,
'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_M_AND_C' : u'w',
'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_ALL' : u'w',
'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_ANS' : u'w',
'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_ASK' : u'w',
'DEFAULT_NOTIFICATION_DELIVERY_SCHEDULE_Q_SEL' : u'w',
'ENABLE_UNANSWERED_REMINDERS' : False,
'DAYS_BEFORE_SENDING_UNANSWERED_REMINDER' : 1,
'UNANSWERED_REMINDER_FREQUENCY' : 1,
'MAX_UNANSWERED_REMINDERS' : 5,
'ENABLE_ACCEPT_ANSWER_REMINDERS' : False,
'DAYS_BEFORE_SENDING_ACCEPT_ANSWER_REMINDER' : 3,
'ACCEPT_ANSWER_REMINDER_FREQUENCY' : 3,
'MAX_ACCEPT_ANSWER_REMINDERS' : 5,
'ANONYMOUS_USER_EMAIL' : u'anonymous@askbot.org',
'ALLOW_ASKING_BY_EMAIL' : False,
'REPLACE_SPACE_WITH_DASH_IN_EMAILED_TAGS' : True,
'MAX_ALERTS_PER_EMAIL' : 7,
},
'EMBEDDABLE_WIDGETS' : {
'QUESTIONS_WIDGET_CSS' : u"\nbody {\n overflow: hidden;\n}\n#container {\n width: 200px;\n height: 350px;\n}\nul {\n list-style: none;\n padding: 5px;\n margin: 5px;\n}\nli {\n border-bottom: #CCC 1px solid;\n padding-bottom: 5px;\n padding-top: 5px;\n}\nli:last-child {\n border: none;\n}\na {\n text-decoration: none;\n color: #464646;\n font-family: 'Yanone Kaffeesatz', sans-serif;\n font-size: 15px;\n}\n",
'QUESTIONS_WIDGET_FOOTER' : u"\n<link \n href='http://fonts.googleapis.com/css?family=Yanone+Kaffeesatz:300,400,700'\n rel='stylesheet'\n type='text/css'\n>\n",
'QUESTIONS_WIDGET_HEADER' : u'',
'QUESTIONS_WIDGET_MAX_QUESTIONS' : 7,
},
'EXTERNAL_KEYS' : {
'RECAPTCHA_KEY' : u'',
'RECAPTCHA_SECRET' : u'',
'FACEBOOK_KEY' : u'',
'FACEBOOK_SECRET' : u'',
'HOW_TO_CHANGE_LDAP_PASSWORD' : u'',
'IDENTICA_KEY' : u'',
'IDENTICA_SECRET' : u'',
'GOOGLE_ANALYTICS_KEY' : u'',
'GOOGLE_SITEMAP_CODE' : u'',
'LDAP_PROVIDER_NAME' : u'',
'LDAP_URL' : u'',
'LINKEDIN_KEY' : u'',
'LINKEDIN_SECRET' : u'',
'TWITTER_KEY' : u'',
'TWITTER_SECRET' : u'',
'USE_LDAP_FOR_PASSWORD_LOGIN' : False,
'USE_RECAPTCHA' : False,
},
'FLATPAGES' : {
'FORUM_ABOUT' : u'',
'FORUM_FAQ' : u'',
'FORUM_PRIVACY' : u'',
},
'FORUM_DATA_RULES' : {
'MIN_TITLE_LENGTH' : 1,
'MIN_QUESTION_BODY_LENGTH' : 1,
'MIN_ANSWER_BODY_LENGTH' : 1,
'WIKI_ON' : False,
'ALLOW_ASK_ANONYMOUSLY' : True,
'ALLOW_POSTING_BEFORE_LOGGING_IN' : False,
'ALLOW_SWAPPING_QUESTION_WITH_ANSWER' : False,
'MAX_TAG_LENGTH' : 20,
'MIN_TITLE_LENGTH' : 1,
'MIN_QUESTION_BODY_LENGTH' : 1,
'MIN_ANSWER_BODY_LENGTH' : 1,
'MANDATORY_TAGS' : u'',
'FORCE_LOWERCASE_TAGS' : False,
'TAG_LIST_FORMAT' : u'list',
'USE_WILDCARD_TAGS' : False,
'MAX_COMMENTS_TO_SHOW' : 5,
'MAX_COMMENT_LENGTH' : 300,
'USE_TIME_LIMIT_TO_EDIT_COMMENT' : True,
'MINUTES_TO_EDIT_COMMENT' : 10,
'SAVE_COMMENT_ON_ENTER' : True,
'MIN_SEARCH_WORD_LENGTH' : 4,
'DECOUPLE_TEXT_QUERY_FROM_SEARCH_STATE' : False,
'MAX_TAGS_PER_POST' : 5,
'DEFAULT_QUESTIONS_PAGE_SIZE' : u'30',
'UNANSWERED_QUESTION_MEANING' : u'NO_ACCEPTED_ANSWERS',
# Enabling video requires forked version of markdown
# pip uninstall markdown2
# pip install -e git+git://github.com/andryuha/python-markdown2.git#egg=markdown2
'ENABLE_VIDEO_EMBEDDING' : False,
},
'GENERAL_SKIN_SETTINGS' : {
'CUSTOM_CSS' : u'',
'CUSTOM_FOOTER' : u'',
'CUSTOM_HEADER' : u'',
'CUSTOM_HTML_HEAD' : u'',
'CUSTOM_JS' : u'',
'MITX_ROOT_URL' : MITX_ROOT_URL, # for askbot header.html file
'SITE_FAVICON' : unicode(MITX_ROOT_URL) + u'/images/favicon.gif',
'SITE_LOGO_URL' :unicode(MITX_ROOT_URL) + u'/images/logo.gif',
'SHOW_LOGO' : False,
'LOCAL_LOGIN_ICON' : unicode(MITX_ROOT_URL) + u'/images/pw-login.gif',
'ALWAYS_SHOW_ALL_UI_FUNCTIONS' : False,
'ASKBOT_DEFAULT_SKIN' : u'default',
'USE_CUSTOM_HTML_HEAD' : False,
'FOOTER_MODE' : u'default',
'USE_CUSTOM_CSS' : False,
'USE_CUSTOM_JS' : False,
},
'LEADING_SIDEBAR' : {
'ENABLE_LEADING_SIDEBAR' : False,
'LEADING_SIDEBAR' : u'',
},
'LOGIN_PROVIDERS' : {
'PASSWORD_REGISTER_SHOW_PROVIDER_BUTTONS' : True,
'SIGNIN_ALWAYS_SHOW_LOCAL_LOGIN' : True,
'SIGNIN_AOL_ENABLED' : True,
'SIGNIN_BLOGGER_ENABLED' : True,
'SIGNIN_CLAIMID_ENABLED' : True,
'SIGNIN_FACEBOOK_ENABLED' : True,
'SIGNIN_FLICKR_ENABLED' : True,
'SIGNIN_GOOGLE_ENABLED' : True,
'SIGNIN_IDENTI.CA_ENABLED' : True,
'SIGNIN_LINKEDIN_ENABLED' : True,
'SIGNIN_LIVEJOURNAL_ENABLED' : True,
'SIGNIN_LOCAL_ENABLED' : True,
'SIGNIN_OPENID_ENABLED' : True,
'SIGNIN_TECHNORATI_ENABLED' : True,
'SIGNIN_TWITTER_ENABLED' : True,
'SIGNIN_VERISIGN_ENABLED' : True,
'SIGNIN_VIDOOP_ENABLED' : True,
'SIGNIN_WORDPRESS_ENABLED' : True,
'SIGNIN_WORDPRESS_SITE_ENABLED' : False,
'SIGNIN_YAHOO_ENABLED' : True,
'WORDPRESS_SITE_ICON' : unicode(MITX_ROOT_URL) + u'/images/logo.gif',
'WORDPRESS_SITE_URL' : '',
},
'LICENSE_SETTINGS' : {
'LICENSE_ACRONYM' : u'cc-by-sa',
'LICENSE_LOGO_URL' : unicode(MITX_ROOT_URL) + u'/images/cc-by-sa.png',
'LICENSE_TITLE' : u'Creative Commons Attribution Share Alike 3.0',
'LICENSE_URL' : 'http://creativecommons.org/licenses/by-sa/3.0/legalcode',
'LICENSE_USE_LOGO' : True,
'LICENSE_USE_URL' : True,
'USE_LICENSE' : True,
},
'MARKUP' : {
'MARKUP_CODE_FRIENDLY' : False,
'ENABLE_MATHJAX' : True, # FIXME: Test with this enabled
'MATHJAX_BASE_URL' : u'/static/js/mathjax-MathJax-c9db6ac/',
'ENABLE_AUTO_LINKING' : False,
'AUTO_LINK_PATTERNS' : u'',
'AUTO_LINK_URLS' : u'',
},
'MIN_REP' : {
'MIN_REP_TO_ACCEPT_OWN_ANSWER' : 1,
'MIN_REP_TO_ANSWER_OWN_QUESTION' : 1,
'MIN_REP_TO_CLOSE_OTHERS_QUESTIONS' : 1200,
'MIN_REP_TO_CLOSE_OWN_QUESTIONS' : 1,
'MIN_REP_TO_DELETE_OTHERS_COMMENTS' : 5000,
'MIN_REP_TO_DELETE_OTHERS_POSTS' : 10000,
'MIN_REP_TO_EDIT_OTHERS_POSTS' : 5000,
'MIN_REP_TO_EDIT_WIKI' : 200,
'MIN_REP_TO_FLAG_OFFENSIVE' : 1,
'MIN_REP_TO_HAVE_STRONG_URL' : 250,
'MIN_REP_TO_LEAVE_COMMENTS' : 1,
'MIN_REP_TO_LOCK_POSTS' : 10000,
'MIN_REP_TO_REOPEN_OWN_QUESTIONS' : 1,
'MIN_REP_TO_RETAG_OTHERS_QUESTIONS' : 100,
'MIN_REP_TO_UPLOAD_FILES' : 1,
'MIN_REP_TO_VIEW_OFFENSIVE_FLAGS' : 2000,
'MIN_REP_TO_VOTE_DOWN' : 15,
'MIN_REP_TO_VOTE_UP' : 1,
},
'QA_SITE_SETTINGS' : {
'APP_COPYRIGHT' : u'Copyright Askbot, 2010-2011.',
'APP_DESCRIPTION' : u'Open source question and answer forum written in Python and Django',
'APP_KEYWORDS' : u'Askbot,CNPROG,forum,community',
'APP_SHORT_NAME' : u'Askbot',
'APP_TITLE' : u'Askbot: Open Source Q&A Forum',
'APP_URL' : u'http://askbot.org',
'FEEDBACK_SITE_URL' : u'',
'ENABLE_GREETING_FOR_ANON_USER' : True,
'GREETING_FOR_ANONYMOUS_USER' : u'First time here? Check out the FAQ!',
},
'REP_CHANGES' : {
'MAX_REP_GAIN_PER_USER_PER_DAY' : 200,
'REP_GAIN_FOR_ACCEPTING_ANSWER' : 2,
'REP_GAIN_FOR_CANCELING_DOWNVOTE' : 1,
'REP_GAIN_FOR_RECEIVING_ANSWER_ACCEPTANCE' : 15,
'REP_GAIN_FOR_RECEIVING_DOWNVOTE_CANCELATION' : 2,
'REP_GAIN_FOR_RECEIVING_UPVOTE' : 10,
'REP_LOSS_FOR_CANCELING_ANSWER_ACCEPTANCE' : -2,
'REP_LOSS_FOR_DOWNVOTING' : -2,
'REP_LOSS_FOR_RECEIVING_CANCELATION_OF_ANSWER_ACCEPTANCE' : -5,
'REP_LOSS_FOR_RECEIVING_DOWNVOTE' : -1,
'REP_LOSS_FOR_RECEIVING_FIVE_FLAGS_PER_REVISION' : -100,
'REP_LOSS_FOR_RECEIVING_FLAG' : -2,
'REP_LOSS_FOR_RECEIVING_THREE_FLAGS_PER_REVISION' : -30,
'REP_LOSS_FOR_RECEIVING_UPVOTE_CANCELATION' : -10,
},
'SOCIAL_SHARING' : {
'ENABLE_SHARING_TWITTER' : False,
'ENABLE_SHARING_FACEBOOK' : False,
'ENABLE_SHARING_LINKEDIN' : False,
'ENABLE_SHARING_IDENTICA' : False,
'ENABLE_SHARING_GOOGLE' : False,
},
'SIDEBAR_MAIN' : {
'SIDEBAR_MAIN_AVATAR_LIMIT' : 16,
'SIDEBAR_MAIN_FOOTER' : u'',
'SIDEBAR_MAIN_HEADER' : u'',
'SIDEBAR_MAIN_SHOW_AVATARS' : True,
'SIDEBAR_MAIN_SHOW_TAGS' : True,
'SIDEBAR_MAIN_SHOW_TAG_SELECTOR' : True,
},
'SIDEBAR_PROFILE' : {
'SIDEBAR_PROFILE_FOOTER' : u'',
'SIDEBAR_PROFILE_HEADER' : u'',
},
'SIDEBAR_QUESTION' : {
'SIDEBAR_QUESTION_FOOTER' : u'',
'SIDEBAR_QUESTION_HEADER' : u'',
'SIDEBAR_QUESTION_SHOW_META' : True,
'SIDEBAR_QUESTION_SHOW_RELATED' : True,
'SIDEBAR_QUESTION_SHOW_TAGS' : True,
},
'SITE_MODES' : {
'ACTIVATE_BOOTSTRAP_MODE' : False,
},
'SKIN_COUNTER_SETTINGS' : {
},
'SPAM_AND_MODERATION' : {
'AKISMET_API_KEY' : u'',
'USE_AKISMET' : False,
},
'USER_SETTINGS' : {
'EDITABLE_SCREEN_NAME' : False,
'EDITABLE_EMAIL' : False,
'ALLOW_ADD_REMOVE_LOGIN_METHODS' : False,
'ENABLE_GRAVATAR' : False,
'GRAVATAR_TYPE' : u'identicon',
'NAME_OF_ANONYMOUS_USER' : u'',
'DEFAULT_AVATAR_URL' : u'/images/nophoto.png',
'MIN_USERNAME_LENGTH' : 1,
'ALLOW_ACCOUNT_RECOVERY_BY_EMAIL' : True,
},
'VOTE_RULES' : {
'MAX_VOTES_PER_USER_PER_DAY' : 30,
'MAX_FLAGS_PER_USER_PER_DAY' : 5,
'MIN_DAYS_FOR_STAFF_TO_ACCEPT_ANSWER' : 0,
'MIN_DAYS_TO_ANSWER_OWN_QUESTION' : 0,
'MIN_FLAGS_TO_DELETE_POST' : 5,
'MIN_FLAGS_TO_HIDE_POST' : 3,
'MAX_DAYS_TO_CANCEL_VOTE' : 1,
'VOTES_LEFT_WARNING_THRESHOLD' : 5,
},
},
},
}
# Celery Settings
BROKER_TRANSPORT = "djkombu.transport.DatabaseTransport"
CELERY_ALWAYS_EAGER = True
ot = MAKO_TEMPLATES
MAKO_TEMPLATES['course'] = [DATA_DIR]
MAKO_TEMPLATES['sections'] = [DATA_DIR+'/sections']
MAKO_TEMPLATES['custom_tags'] = [DATA_DIR+'/custom_tags']
MAKO_TEMPLATES['main'] = [PROJECT_DIR+'/templates/', DATA_DIR+'/info']
MAKO_TEMPLATES.update(ot)
if MAKO_MODULE_DIR == None:
MAKO_MODULE_DIR = tempfile.mkdtemp('mako')
djcelery.setup_loader()
# Jasmine Settings
JASMINE_TEST_DIRECTORY = PROJECT_DIR+'/templates/coffee'
../../book_images/
\ No newline at end of file
../../data/images/
\ No newline at end of file
......@@ -34,15 +34,10 @@ Conveniently, you can install Node via `apt-get`, then use npm:
Compiling
---------
We're using Guard to watch your folder and automatic compile those CoffeeScript
files. First, install guard by using Bundler:
$ gem install bundler
$ bundle install
Then you can run this command:
$ bundle exec guard
The dev server will automatically compile coffeescript files that have changed.
Simply start the server using:
$ rake runserver
Testing
-------
......
......@@ -10,6 +10,11 @@ class window.Calculator
toggle: ->
$('li.calc-main').toggleClass 'open'
$('#calculator_wrapper #calculator_input').focus()
if $('.calc.closed').length
$('.calc').attr 'aria-label', 'Open Calculator'
else
$('.calc').attr 'aria-label', 'Close Calculator'
$('.calc').toggleClass 'closed'
helpToggle: ->
......
../../askbot-devel/askbot/skins/common/
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
.CodeMirror {
line-height: 1em;
font-family: monospace;
}
.CodeMirror-scroll {
overflow: auto;
height: 300px;
/* This is needed to prevent an IE[67] bug where the scrolled content
is visible outside of the scrolling box. */
position: relative;
outline: none;
}
.CodeMirror-gutter {
position: absolute; left: 0; top: 0;
z-index: 10;
background-color: #f7f7f7;
border-right: 1px solid #eee;
min-width: 2em;
height: 100%;
}
.CodeMirror-gutter-text {
color: #aaa;
text-align: right;
padding: .4em .2em .4em .4em;
white-space: pre !important;
}
.CodeMirror-lines {
padding: .4em;
white-space: pre;
}
.CodeMirror pre {
-moz-border-radius: 0;
-webkit-border-radius: 0;
-o-border-radius: 0;
border-radius: 0;
border-width: 0; margin: 0; padding: 0; background: transparent;
font-family: inherit;
font-size: inherit;
padding: 0; margin: 0;
white-space: pre;
word-wrap: normal;
}
.CodeMirror-wrap pre {
word-wrap: break-word;
white-space: pre-wrap;
}
.CodeMirror-wrap .CodeMirror-scroll {
overflow-x: hidden;
}
.CodeMirror textarea {
outline: none !important;
}
.CodeMirror pre.CodeMirror-cursor {
z-index: 10;
position: absolute;
visibility: hidden;
border-left: 1px solid black;
border-right:none;
width:0;
}
.CodeMirror pre.CodeMirror-cursor.CodeMirror-overwrite {}
.CodeMirror-focused pre.CodeMirror-cursor {
visibility: visible;
}
div.CodeMirror-selected { background: #d9d9d9; }
.CodeMirror-focused div.CodeMirror-selected { background: #d7d4f0; }
.CodeMirror-searching {
background: #ffa;
background: rgba(255, 255, 0, .4);
}
/* Default theme */
.cm-s-default span.cm-keyword {color: #708;}
.cm-s-default span.cm-atom {color: #219;}
.cm-s-default span.cm-number {color: #164;}
.cm-s-default span.cm-def {color: #00f;}
.cm-s-default span.cm-variable {color: black;}
.cm-s-default span.cm-variable-2 {color: #05a;}
.cm-s-default span.cm-variable-3 {color: #085;}
.cm-s-default span.cm-property {color: black;}
.cm-s-default span.cm-operator {color: black;}
.cm-s-default span.cm-comment {color: #a50;}
.cm-s-default span.cm-string {color: #a11;}
.cm-s-default span.cm-string-2 {color: #f50;}
.cm-s-default span.cm-meta {color: #555;}
.cm-s-default span.cm-error {color: #f00;}
.cm-s-default span.cm-qualifier {color: #555;}
.cm-s-default span.cm-builtin {color: #30a;}
.cm-s-default span.cm-bracket {color: #cc7;}
.cm-s-default span.cm-tag {color: #170;}
.cm-s-default span.cm-attribute {color: #00c;}
.cm-s-default span.cm-header {color: #a0a;}
.cm-s-default span.cm-quote {color: #090;}
.cm-s-default span.cm-hr {color: #999;}
.cm-s-default span.cm-link {color: #00c;}
span.cm-header, span.cm-strong {font-weight: bold;}
span.cm-em {font-style: italic;}
span.cm-emstrong {font-style: italic; font-weight: bold;}
span.cm-link {text-decoration: underline;}
div.CodeMirror span.CodeMirror-matchingbracket {color: #0f0;}
div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #f22;}
/*
* jQuery UI CSS Framework 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*/
/* Layout helpers
----------------------------------*/
.ui-helper-hidden { display: none; }
.ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
.ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
.ui-helper-clearfix { display: inline-block; }
/* required comment for clearfix to work in Opera \*/
* html .ui-helper-clearfix { height:1%; }
.ui-helper-clearfix { display:block; }
/* end clearfix */
.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
/* Interaction Cues
----------------------------------*/
.ui-state-disabled { cursor: default !important; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
/* Misc visuals
----------------------------------*/
/* Overlays */
.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
/*
* jQuery UI CSS Framework 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Theming/API
*
* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Helvetica,%20Arial,%20sans-serif&fwDefault=bold&fsDefault=1.1em&cornerRadius=2px&bgColorHeader=7fbcfd&bgTextureHeader=03_highlight_soft.png&bgImgOpacityHeader=50&borderColorHeader=dae5c9&fcHeader=031634&iconColorHeader=031634&bgColorContent=ffffff&bgTextureContent=01_flat.png&bgImgOpacityContent=75&borderColorContent=dae5c9&fcContent=031634&iconColorContent=adcc80&bgColorDefault=7fbcdf&bgTextureDefault=03_highlight_soft.png&bgImgOpacityDefault=100&borderColorDefault=dae5c9&fcDefault=7a994c&iconColorDefault=adcc80&bgColorHover=bddeff&bgTextureHover=03_highlight_soft.png&bgImgOpacityHover=25&borderColorHover=7fbcdf&fcHover=7a994c&iconColorHover=adcc80&bgColorActive=023063&bgTextureActive=02_glass.png&bgImgOpacityActive=65&borderColorActive=dae5c9&fcActive=dae5c9&iconColorActive=454545&bgColorHighlight=ffffff&bgTextureHighlight=01_flat.png&bgImgOpacityHighlight=55&borderColorHighlight=cccccc&fcHighlight=444444&iconColorHighlight=adcc80&bgColorError=ffffff&bgTextureError=01_flat.png&bgImgOpacityError=55&borderColorError=fa720a&fcError=222222&iconColorError=fa720a&bgColorOverlay=eeeeee&bgTextureOverlay=01_flat.png&bgImgOpacityOverlay=0&opacityOverlay=80&bgColorShadow=aaaaaa&bgTextureShadow=01_flat.png&bgImgOpacityShadow=0&opacityShadow=60&thicknessShadow=4px&offsetTopShadow=-4px&offsetLeftShadow=-4px&cornerRadiusShadow=0px
*/
/* Component containers
----------------------------------*/
.ui-widget { font-family: Helvetica, Arial, sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica, Arial, sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #dae5c9; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #031634; }
.ui-widget-content a { color: #031634; }
.ui-widget-header { border: 1px solid #dae5c9; background: #7fbcfd url(images/ui-bg_highlight-soft_50_7fbcfd_1x100.png) 50% 50% repeat-x; color: #031634; font-weight: bold; }
.ui-widget-header a { color: #031634; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #dae5c9; background: #7fbcdf url(images/ui-bg_highlight-soft_100_7fbcdf_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #7a994c; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #7a994c; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #7fbcdf; background: #bddeff url(images/ui-bg_highlight-soft_25_bddeff_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #7a994c; }
.ui-state-hover a, .ui-state-hover a:hover { color: #7a994c; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #dae5c9; background: #023063 url(images/ui-bg_glass_65_023063_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #dae5c9; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #dae5c9; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #cccccc; background: #ffffff url(images/ui-bg_flat_55_ffffff_40x100.png) 50% 50% repeat-x; color: #444444; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #444444; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #fa720a; background: #ffffff url(images/ui-bg_flat_55_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #222222; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #222222; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
/* Icons
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_adcc80_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_adcc80_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_031634_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_adcc80_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_adcc80_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_adcc80_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_fa720a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
.ui-icon-carat-1-ne { background-position: -16px 0; }
.ui-icon-carat-1-e { background-position: -32px 0; }
.ui-icon-carat-1-se { background-position: -48px 0; }
.ui-icon-carat-1-s { background-position: -64px 0; }
.ui-icon-carat-1-sw { background-position: -80px 0; }
.ui-icon-carat-1-w { background-position: -96px 0; }
.ui-icon-carat-1-nw { background-position: -112px 0; }
.ui-icon-carat-2-n-s { background-position: -128px 0; }
.ui-icon-carat-2-e-w { background-position: -144px 0; }
.ui-icon-triangle-1-n { background-position: 0 -16px; }
.ui-icon-triangle-1-ne { background-position: -16px -16px; }
.ui-icon-triangle-1-e { background-position: -32px -16px; }
.ui-icon-triangle-1-se { background-position: -48px -16px; }
.ui-icon-triangle-1-s { background-position: -64px -16px; }
.ui-icon-triangle-1-sw { background-position: -80px -16px; }
.ui-icon-triangle-1-w { background-position: -96px -16px; }
.ui-icon-triangle-1-nw { background-position: -112px -16px; }
.ui-icon-triangle-2-n-s { background-position: -128px -16px; }
.ui-icon-triangle-2-e-w { background-position: -144px -16px; }
.ui-icon-arrow-1-n { background-position: 0 -32px; }
.ui-icon-arrow-1-ne { background-position: -16px -32px; }
.ui-icon-arrow-1-e { background-position: -32px -32px; }
.ui-icon-arrow-1-se { background-position: -48px -32px; }
.ui-icon-arrow-1-s { background-position: -64px -32px; }
.ui-icon-arrow-1-sw { background-position: -80px -32px; }
.ui-icon-arrow-1-w { background-position: -96px -32px; }
.ui-icon-arrow-1-nw { background-position: -112px -32px; }
.ui-icon-arrow-2-n-s { background-position: -128px -32px; }
.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
.ui-icon-arrow-2-e-w { background-position: -160px -32px; }
.ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
.ui-icon-arrowstop-1-n { background-position: -192px -32px; }
.ui-icon-arrowstop-1-e { background-position: -208px -32px; }
.ui-icon-arrowstop-1-s { background-position: -224px -32px; }
.ui-icon-arrowstop-1-w { background-position: -240px -32px; }
.ui-icon-arrowthick-1-n { background-position: 0 -48px; }
.ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
.ui-icon-arrowthick-1-e { background-position: -32px -48px; }
.ui-icon-arrowthick-1-se { background-position: -48px -48px; }
.ui-icon-arrowthick-1-s { background-position: -64px -48px; }
.ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
.ui-icon-arrowthick-1-w { background-position: -96px -48px; }
.ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
.ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
.ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
.ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
.ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
.ui-icon-arrow-4 { background-position: 0 -80px; }
.ui-icon-arrow-4-diag { background-position: -16px -80px; }
.ui-icon-extlink { background-position: -32px -80px; }
.ui-icon-newwin { background-position: -48px -80px; }
.ui-icon-refresh { background-position: -64px -80px; }
.ui-icon-shuffle { background-position: -80px -80px; }
.ui-icon-transfer-e-w { background-position: -96px -80px; }
.ui-icon-transferthick-e-w { background-position: -112px -80px; }
.ui-icon-folder-collapsed { background-position: 0 -96px; }
.ui-icon-folder-open { background-position: -16px -96px; }
.ui-icon-document { background-position: -32px -96px; }
.ui-icon-document-b { background-position: -48px -96px; }
.ui-icon-note { background-position: -64px -96px; }
.ui-icon-mail-closed { background-position: -80px -96px; }
.ui-icon-mail-open { background-position: -96px -96px; }
.ui-icon-suitcase { background-position: -112px -96px; }
.ui-icon-comment { background-position: -128px -96px; }
.ui-icon-person { background-position: -144px -96px; }
.ui-icon-print { background-position: -160px -96px; }
.ui-icon-trash { background-position: -176px -96px; }
.ui-icon-locked { background-position: -192px -96px; }
.ui-icon-unlocked { background-position: -208px -96px; }
.ui-icon-bookmark { background-position: -224px -96px; }
.ui-icon-tag { background-position: -240px -96px; }
.ui-icon-home { background-position: 0 -112px; }
.ui-icon-flag { background-position: -16px -112px; }
.ui-icon-calendar { background-position: -32px -112px; }
.ui-icon-cart { background-position: -48px -112px; }
.ui-icon-pencil { background-position: -64px -112px; }
.ui-icon-clock { background-position: -80px -112px; }
.ui-icon-disk { background-position: -96px -112px; }
.ui-icon-calculator { background-position: -112px -112px; }
.ui-icon-zoomin { background-position: -128px -112px; }
.ui-icon-zoomout { background-position: -144px -112px; }
.ui-icon-search { background-position: -160px -112px; }
.ui-icon-wrench { background-position: -176px -112px; }
.ui-icon-gear { background-position: -192px -112px; }
.ui-icon-heart { background-position: -208px -112px; }
.ui-icon-star { background-position: -224px -112px; }
.ui-icon-link { background-position: -240px -112px; }
.ui-icon-cancel { background-position: 0 -128px; }
.ui-icon-plus { background-position: -16px -128px; }
.ui-icon-plusthick { background-position: -32px -128px; }
.ui-icon-minus { background-position: -48px -128px; }
.ui-icon-minusthick { background-position: -64px -128px; }
.ui-icon-close { background-position: -80px -128px; }
.ui-icon-closethick { background-position: -96px -128px; }
.ui-icon-key { background-position: -112px -128px; }
.ui-icon-lightbulb { background-position: -128px -128px; }
.ui-icon-scissors { background-position: -144px -128px; }
.ui-icon-clipboard { background-position: -160px -128px; }
.ui-icon-copy { background-position: -176px -128px; }
.ui-icon-contact { background-position: -192px -128px; }
.ui-icon-image { background-position: -208px -128px; }
.ui-icon-video { background-position: -224px -128px; }
.ui-icon-script { background-position: -240px -128px; }
.ui-icon-alert { background-position: 0 -144px; }
.ui-icon-info { background-position: -16px -144px; }
.ui-icon-notice { background-position: -32px -144px; }
.ui-icon-help { background-position: -48px -144px; }
.ui-icon-check { background-position: -64px -144px; }
.ui-icon-bullet { background-position: -80px -144px; }
.ui-icon-radio-off { background-position: -96px -144px; }
.ui-icon-radio-on { background-position: -112px -144px; }
.ui-icon-pin-w { background-position: -128px -144px; }
.ui-icon-pin-s { background-position: -144px -144px; }
.ui-icon-play { background-position: 0 -160px; }
.ui-icon-pause { background-position: -16px -160px; }
.ui-icon-seek-next { background-position: -32px -160px; }
.ui-icon-seek-prev { background-position: -48px -160px; }
.ui-icon-seek-end { background-position: -64px -160px; }
.ui-icon-seek-start { background-position: -80px -160px; }
/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
.ui-icon-seek-first { background-position: -80px -160px; }
.ui-icon-stop { background-position: -96px -160px; }
.ui-icon-eject { background-position: -112px -160px; }
.ui-icon-volume-off { background-position: -128px -160px; }
.ui-icon-volume-on { background-position: -144px -160px; }
.ui-icon-power { background-position: 0 -176px; }
.ui-icon-signal-diag { background-position: -16px -176px; }
.ui-icon-signal { background-position: -32px -176px; }
.ui-icon-battery-0 { background-position: -48px -176px; }
.ui-icon-battery-1 { background-position: -64px -176px; }
.ui-icon-battery-2 { background-position: -80px -176px; }
.ui-icon-battery-3 { background-position: -96px -176px; }
.ui-icon-circle-plus { background-position: 0 -192px; }
.ui-icon-circle-minus { background-position: -16px -192px; }
.ui-icon-circle-close { background-position: -32px -192px; }
.ui-icon-circle-triangle-e { background-position: -48px -192px; }
.ui-icon-circle-triangle-s { background-position: -64px -192px; }
.ui-icon-circle-triangle-w { background-position: -80px -192px; }
.ui-icon-circle-triangle-n { background-position: -96px -192px; }
.ui-icon-circle-arrow-e { background-position: -112px -192px; }
.ui-icon-circle-arrow-s { background-position: -128px -192px; }
.ui-icon-circle-arrow-w { background-position: -144px -192px; }
.ui-icon-circle-arrow-n { background-position: -160px -192px; }
.ui-icon-circle-zoomin { background-position: -176px -192px; }
.ui-icon-circle-zoomout { background-position: -192px -192px; }
.ui-icon-circle-check { background-position: -208px -192px; }
.ui-icon-circlesmall-plus { background-position: 0 -208px; }
.ui-icon-circlesmall-minus { background-position: -16px -208px; }
.ui-icon-circlesmall-close { background-position: -32px -208px; }
.ui-icon-squaresmall-plus { background-position: -48px -208px; }
.ui-icon-squaresmall-minus { background-position: -64px -208px; }
.ui-icon-squaresmall-close { background-position: -80px -208px; }
.ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
.ui-icon-grip-solid-vertical { background-position: -32px -224px; }
.ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
.ui-icon-grip-diagonal-se { background-position: -80px -224px; }
/* Misc visuals
----------------------------------*/
/* Corner radius */
.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 2px; -webkit-border-top-left-radius: 2px; -khtml-border-top-left-radius: 2px; border-top-left-radius: 2px; }
.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 2px; -webkit-border-top-right-radius: 2px; -khtml-border-top-right-radius: 2px; border-top-right-radius: 2px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 2px; -webkit-border-bottom-left-radius: 2px; -khtml-border-bottom-left-radius: 2px; border-bottom-left-radius: 2px; }
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 2px; -webkit-border-bottom-right-radius: 2px; -khtml-border-bottom-right-radius: 2px; border-bottom-right-radius: 2px; }
/* Overlays */
.ui-widget-overlay { background: #eeeeee url(images/ui-bg_flat_0_eeeeee_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
.ui-widget-shadow { margin: -4px 0 0 -4px; padding: 4px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; }/*
* jQuery UI Resizable 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizable#theming
*/
.ui-resizable { position: relative;}
.ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
* jQuery UI Selectable 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Selectable#theming
*/
.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
/*
* jQuery UI Accordion 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Accordion#theming
*/
/* IE/Win - Fix animation bug - #4615 */
.ui-accordion { width: 100%; }
.ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
.ui-accordion .ui-accordion-li-fix { display: inline; }
.ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
.ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
.ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
.ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
.ui-accordion .ui-accordion-content-active { display: block; }
/*
* jQuery UI Autocomplete 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Autocomplete#theming
*/
.ui-autocomplete { position: absolute; cursor: default; }
/* workarounds */
* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
/*
* jQuery UI Menu 1.8.16
*
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Menu#theming
*/
.ui-menu {
list-style:none;
padding: 2px;
margin: 0;
display:block;
float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
}
.ui-menu .ui-menu-item {
margin:0;
padding: 0;
zoom: 1;
float: left;
clear: left;
width: 100%;
}
.ui-menu .ui-menu-item a {
text-decoration:none;
display:block;
padding:.2em .4em;
line-height:1.5;
zoom:1;
}
.ui-menu .ui-menu-item a.ui-state-hover,
.ui-menu .ui-menu-item a.ui-state-active {
font-weight: normal;
margin: -1px;
}
/*
* jQuery UI Button 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Button#theming
*/
.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
.ui-button-icons-only { width: 3.4em; }
button.ui-button-icons-only { width: 3.7em; }
/*button text element */
.ui-button .ui-button-text { display: block; line-height: 1.4; }
.ui-button-text-only .ui-button-text { padding: .4em 1em; }
.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
/* no icon support for input elements, provide padding by default */
input.ui-button { padding: .4em 1em; }
/*button icon element(s) */
.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
/*button sets*/
.ui-buttonset { margin-right: 7px; }
.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
/*
* jQuery UI Dialog 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Dialog#theming
*/
.ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
.ui-draggable .ui-dialog-titlebar { cursor: move; }
/*
* jQuery UI Slider 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider#theming
*/
.ui-slider { position: relative; text-align: left; }
.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
.ui-slider-horizontal { height: .8em; }
.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
.ui-slider-horizontal .ui-slider-range-min { left: 0; }
.ui-slider-horizontal .ui-slider-range-max { right: 0; }
.ui-slider-vertical { width: .8em; height: 100px; }
.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
.ui-slider-vertical .ui-slider-range-min { bottom: 0; }
.ui-slider-vertical .ui-slider-range-max { top: 0; }/*
* jQuery UI Tabs 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Tabs#theming
*/
.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
.ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
.ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
.ui-tabs .ui-tabs-hide { display: none !important; }
/*
* jQuery UI Datepicker 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Datepicker#theming
*/
.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
.ui-datepicker .ui-datepicker-prev { left:2px; }
.ui-datepicker .ui-datepicker-next { right:2px; }
.ui-datepicker .ui-datepicker-prev-hover { left:1px; }
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
/* with multiple calendars */
.ui-datepicker.ui-datepicker-multi { width:auto; }
.ui-datepicker-multi .ui-datepicker-group { float:left; }
.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
/* RTL support */
.ui-datepicker-rtl { direction: rtl; }
.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
.ui-datepicker-rtl .ui-datepicker-group { float:right; }
.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
display: none; /*sorry for IE5*/
display/**/: block; /*sorry for IE5*/
position: absolute; /*must have*/
z-index: -1; /*must have*/
filter: mask(); /*must have*/
top: -4px; /*must have*/
left: -4px; /*must have*/
width: 200px; /*must have*/
height: 200px; /*must have*/
}/*
* jQuery UI Progressbar 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* http://docs.jquery.com/UI/Progressbar#theming
*/
.ui-progressbar { height:2em; text-align: left; }
.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }
\ No newline at end of file
body{margin:0;padding:0}.wrapper,.subpage,section.copyright,section.tos,section.privacy-policy,section.honor-code,header.announcement div,section.index-content,footer{margin:0;overflow:hidden}div#enroll form{display:none}
html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}nav ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent}ins{background-color:#ff9;color:#000;text-decoration:none}mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold}del{text-decoration:line-through}abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help}table{border-collapse:collapse;border-spacing:0}hr{display:block;height:1px;border:0;border-top:1px solid #cccccc;margin:1em 0;padding:0}input,select{vertical-align:middle}@font-face{font-family:'Open Sans';src:url("/static/fonts/OpenSans-Regular-webfont.eot");src:url("/static/fonts/OpenSans-Regular-webfont.eot?#iefix") format("embedded-opentype"),url("/static/fonts/OpenSans-Regular-webfont.woff") format("woff"),url("/static/fonts/OpenSans-Regular-webfont.ttf") format("truetype"),url("/static/fonts/OpenSans-Regular-webfont.svg#OpenSansRegular") format("svg");font-weight:600;font-style:normal}@font-face{font-family:'Open Sans';src:url("/static/fonts/OpenSans-Italic-webfont.eot");src:url("/static/fonts/OpenSans-Italic-webfont.eot?#iefix") format("embedded-opentype"),url("/static/fonts/OpenSans-Italic-webfont.woff") format("woff"),url("/static/fonts/OpenSans-Italic-webfont.ttf") format("truetype"),url("/static/fonts/OpenSans-Italic-webfont.svg#OpenSansItalic") format("svg");font-weight:400;font-style:italic}@font-face{font-family:'Open Sans';src:url("/static/fonts/OpenSans-Bold-webfont.eot");src:url("/static/fonts/OpenSans-Bold-webfont.eot?#iefix") format("embedded-opentype"),url("/static/fonts/OpenSans-Bold-webfont.woff") format("woff"),url("/static/fonts/OpenSans-Bold-webfont.ttf") format("truetype"),url("/static/fonts/OpenSans-Bold-webfont.svg#OpenSansBold") format("svg");font-weight:700;font-style:normal}@font-face{font-family:'Open Sans';src:url("/static/fonts/OpenSans-BoldItalic-webfont.eot");src:url("/static/fonts/OpenSans-BoldItalic-webfont.eot?#iefix") format("embedded-opentype"),url("/static/fonts/OpenSans-BoldItalic-webfont.woff") format("woff"),url("/static/fonts/OpenSans-BoldItalic-webfont.ttf") format("truetype"),url("/static/fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic") format("svg");font-weight:700;font-style:italic}@font-face{font-family:'Open Sans';src:url("/static/fonts/OpenSans-ExtraBold-webfont.eot");src:url("/static/fonts/OpenSans-ExtraBold-webfont.eot?#iefix") format("embedded-opentype"),url("/static/fonts/OpenSans-ExtraBold-webfont.woff") format("woff"),url("/static/fonts/OpenSans-ExtraBold-webfont.ttf") format("truetype"),url("/static/fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold") format("svg");font-weight:800;font-style:normal}@font-face{font-family:'Open Sans';src:url("/static/fonts/OpenSans-ExtraBoldItalic-webfont.eot");src:url("/static/fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix") format("embedded-opentype"),url("/static/fonts/OpenSans-ExtraBoldItalic-webfont.woff") format("woff"),url("/static/fonts/OpenSans-ExtraBoldItalic-webfont.ttf") format("truetype"),url("/static/fonts/OpenSans-ExtraBoldItalic-webfont.svg#OpenSansExtraboldItalic") format("svg");font-weight:800;font-style:italic}.wrapper,.subpage,section.copyright,section.tos,section.privacy-policy,section.honor-code,header.announcement div,footer,section.index-content{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;margin:0 auto;max-width:1400px;padding:25.888px;width:100%}.subpage>div,section.copyright>div,section.tos>div,section.privacy-policy>div,section.honor-code>div{padding-left:34.171%}@media screen and (max-width: 940px){.subpage>div,section.copyright>div,section.tos>div,section.privacy-policy>div,section.honor-code>div{padding-left:0}}.subpage>div p,section.copyright>div p,section.tos>div p,section.privacy-policy>div p,section.honor-code>div p{margin-bottom:25.888px;line-height:25.888px}.subpage>div h1,section.copyright>div h1,section.tos>div h1,section.privacy-policy>div h1,section.honor-code>div h1{margin-bottom:12.944px}.subpage>div h2,section.copyright>div h2,section.tos>div h2,section.privacy-policy>div h2,section.honor-code>div h2{font:18px "Open Sans",Helvetica,Arial,sans-serif;color:#000;margin-bottom:12.944px}.subpage>div ul,section.copyright>div ul,section.tos>div ul,section.privacy-policy>div ul,section.honor-code>div ul{list-style:disc outside none}.subpage>div ul li,section.copyright>div ul li,section.tos>div ul li,section.privacy-policy>div ul li,section.honor-code>div ul li{list-style:disc outside none;line-height:25.888px}.subpage>div dl,section.copyright>div dl,section.tos>div dl,section.privacy-policy>div dl,section.honor-code>div dl{margin-bottom:25.888px}.subpage>div dl dd,section.copyright>div dl dd,section.tos>div dl dd,section.privacy-policy>div dl dd,section.honor-code>div dl dd{margin-bottom:12.944px}.clearfix:after,.subpage:after,section.copyright:after,section.tos:after,section.privacy-policy:after,section.honor-code:after,header.announcement div section:after,footer:after,section.index-content:after,section.index-content section:after,section.index-content section.about section:after,div.leanModal_box#enroll ol:after{content:".";display:block;height:0;clear:both;visibility:hidden}.button,header.announcement div section.course section a,section.index-content section.course a,section.index-content section.staff a,section.index-content section.about-course section.cta a.enroll{-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;zoom:1;*display:inline;*vertical-align:auto;-webkit-transition-property:all;-moz-transition-property:all;-ms-transition-property:all;-o-transition-property:all;transition-property:all;-webkit-transition-duration:0.15s;-moz-transition-duration:0.15s;-ms-transition-duration:0.15s;-o-transition-duration:0.15s;transition-duration:0.15s;-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-delay:0;-moz-transition-delay:0;-ms-transition-delay:0;-o-transition-delay:0;transition-delay:0;background-color:#933;border:1px solid #732626;color:#fff;margin:25.888px 0 12.944px;padding:6.472px 12.944px;text-decoration:none;font-style:normal;-webkit-box-shadow:inset 0 1px 0 #b83d3d;-moz-box-shadow:inset 0 1px 0 #b83d3d;box-shadow:inset 0 1px 0 #b83d3d;-webkit-font-smoothing:antialiased}.button:hover,header.announcement div section.course section a:hover,section.index-content section.course a:hover,section.index-content section.staff a:hover,section.index-content section.about-course section.cta a.enroll:hover{background-color:#732626;border-color:#4d1919}.button span,header.announcement div section.course section a span,section.index-content section.course a span,section.index-content section.staff a span,section.index-content section.about-course section.cta a.enroll span{font-family:Garamond, Baskerville, "Baskerville Old Face", "Hoefler Text", "Times New Roman", serif;font-style:italic}p.ie-warning{display:block !important;line-height:1.3em;background:yellow;margin-bottom:25.888px;padding:25.888px}body{background-color:#fff;color:#444;font:16px Georgia,serif}body :focus{outline-color:#ccc}body h1{font:800 24px "Open Sans",Helvetica,Arial,sans-serif}body li{margin-bottom:25.888px}body em{font-style:italic}body a{color:#933;font-style:italic;text-decoration:none}body a:hover,body a:focus{color:#732626}body input[type="email"],body input[type="number"],body input[type="password"],body input[type="search"],body input[type="tel"],body input[type="text"],body input[type="url"],body input[type="color"],body input[type="date"],body input[type="datetime"],body input[type="datetime-local"],body input[type="month"],body input[type="time"],body input[type="week"],body textarea{-webkit-box-shadow:0 -1px 0 #fff;-moz-box-shadow:0 -1px 0 #fff;box-shadow:0 -1px 0 #fff;background-color:#eee;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #eee),color-stop(100%, #fff));background-image:-webkit-linear-gradient(top, #eee,#fff);background-image:-moz-linear-gradient(top, #eee,#fff);background-image:-ms-linear-gradient(top, #eee,#fff);background-image:-o-linear-gradient(top, #eee,#fff);background-image:linear-gradient(top, #eee,#fff);border:1px solid #999;font:16px Georgia,serif;padding:4px;width:100%}body input[type="email"]:focus,body input[type="number"]:focus,body input[type="password"]:focus,body input[type="search"]:focus,body input[type="tel"]:focus,body input[type="text"]:focus,body input[type="url"]:focus,body input[type="color"]:focus,body input[type="date"]:focus,body input[type="datetime"]:focus,body input[type="datetime-local"]:focus,body input[type="month"]:focus,body input[type="time"]:focus,body input[type="week"]:focus,body textarea:focus{border-color:#933}header.announcement{-webkit-background-size:cover;-moz-background-size:cover;-ms-background-size:cover;-o-background-size:cover;background-size:cover;background:#333;border-bottom:1px solid #000;color:#fff;-webkit-font-smoothing:antialiased}header.announcement.home{background:#e3e3e3 url("/static/images/marketing/shot-5-medium.jpg")}@media screen and (min-width: 1200px){header.announcement.home{background:#e3e3e3 url("/static/images/marketing/shot-5-large.jpg")}}header.announcement.home div{padding:258.88px 25.888px 77.664px}@media screen and (max-width:780px){header.announcement.home div{padding:64.72px 25.888px 51.776px}}header.announcement.home div nav h1{margin-right:0}header.announcement.home div nav a.login{display:none}header.announcement.course{background:#e3e3e3 url("/static/images/marketing/course-bg-small.jpg")}@media screen and (min-width: 1200px){header.announcement.course{background:#e3e3e3 url("/static/images/marketing/course-bg-large.jpg")}}@media screen and (max-width: 1199px) and (min-width: 700px){header.announcement.course{background:#e3e3e3 url("/static/images/marketing/course-bg-medium.jpg")}}header.announcement.course div{padding:103.552px 25.888px 51.776px}@media screen and (max-width:780px){header.announcement.course div{padding:64.72px 25.888px 51.776px}}header.announcement div{position:relative}header.announcement div nav{position:absolute;top:0;right:25.888px;-webkit-border-radius:0 0 3px 3px;-moz-border-radius:0 0 3px 3px;-ms-border-radius:0 0 3px 3px;-o-border-radius:0 0 3px 3px;border-radius:0 0 3px 3px;background:#333;background:rgba(0,0,0,0.7);padding:12.944px 25.888px}header.announcement div nav h1{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;zoom:1;*display:inline;*vertical-align:auto;margin-right:12.944px}header.announcement div nav h1 a{font:italic 800 18px "Open Sans",Helvetica,Arial,sans-serif;color:#fff;text-decoration:none}header.announcement div nav h1 a:hover,header.announcement div nav h1 a:focus{color:#999}header.announcement div nav a.login{text-decoration:none;color:#fff;font-size:12px;font-style:normal;font-family:"Open Sans",Helvetica,Arial,sans-serif}header.announcement div nav a.login:hover,header.announcement div nav a.login:focus{color:#999}header.announcement div section{background:#933;display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;zoom:1;*display:inline;*vertical-align:auto;margin-left:34.171%;padding:25.888px 38.832px}@media screen and (max-width: 780px){header.announcement div section{margin-left:0}}header.announcement div section h1{font-family:"Open Sans";font-size:30px;font-weight:800;display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;zoom:1;*display:inline;*vertical-align:auto;line-height:1.2em;margin:0 25.888px 0 0}header.announcement div section h2{font-family:"Open Sans";font-size:24px;font-weight:400;display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;zoom:1;*display:inline;*vertical-align:auto;line-height:1.2em}header.announcement div section.course section{float:left;margin-left:0;margin-right:3.817%;padding:0;width:48.092%}@media screen and (max-width: 780px){header.announcement div section.course section{float:none;width:100%;margin-right:0}}header.announcement div section.course section a{background-color:#4d1919;border-color:#260d0d;-webkit-box-shadow:inset 0 1px 0 #732626,0 1px 0 #ac3939;-moz-box-shadow:inset 0 1px 0 #732626,0 1px 0 #ac3939;box-shadow:inset 0 1px 0 #732626,0 1px 0 #ac3939;display:block;padding:12.944px 25.888px;text-align:center}header.announcement div section.course section a:hover{background-color:#732626;border-color:#4d1919}header.announcement div section.course p{width:48.092%;line-height:25.888px;float:left}@media screen and (max-width: 780px){header.announcement div section.course p{float:none;width:100%}}footer{padding-top:0}footer div.footer-wrapper{border-top:1px solid #e5e5e5;padding:25.888px 0;background:url("/static/images/marketing/mit-logo.png") right center no-repeat}@media screen and (max-width: 780px){footer div.footer-wrapper{background-position:left bottom;padding-bottom:77.664px}}footer div.footer-wrapper a{color:#888;text-decoration:none;-webkit-transition-property:all;-moz-transition-property:all;-ms-transition-property:all;-o-transition-property:all;transition-property:all;-webkit-transition-duration:0.15s;-moz-transition-duration:0.15s;-ms-transition-duration:0.15s;-o-transition-duration:0.15s;transition-duration:0.15s;-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-delay:0;-moz-transition-delay:0;-ms-transition-delay:0;-o-transition-delay:0;transition-delay:0}footer div.footer-wrapper a:hover,footer div.footer-wrapper a:focus{color:#666}footer div.footer-wrapper p{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;zoom:1;*display:inline;*vertical-align:auto;margin-right:25.888px}footer div.footer-wrapper ul{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;zoom:1;*display:inline;*vertical-align:auto}@media screen and (max-width: 780px){footer div.footer-wrapper ul{margin-top:25.888px}}footer div.footer-wrapper ul li{display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;zoom:1;*display:inline;*vertical-align:auto;margin-bottom:0}footer div.footer-wrapper ul li:after{content:' |';display:inline;color:#ccc}footer div.footer-wrapper ul li:last-child:after{content:none}footer div.footer-wrapper ul.social{float:right;margin-right:60px;position:relative;top:-5px}@media screen and (max-width: 780px){footer div.footer-wrapper ul.social{float:none}}footer div.footer-wrapper ul.social li{float:left;margin-right:12.944px}footer div.footer-wrapper ul.social li:after{content:none;display:none}footer div.footer-wrapper ul.social li a{display:block;height:29px;width:28px;text-indent:-9999px}footer div.footer-wrapper ul.social li a:hover{opacity:.8}footer div.footer-wrapper ul.social li.twitter a{background:url("/static/images/marketing/twitter.png") 0 0 no-repeat}footer div.footer-wrapper ul.social li.facebook a{background:url("/static/images/marketing/facebook.png") 0 0 no-repeat}footer div.footer-wrapper ul.social li.linkedin a{background:url("/static/images/marketing/linkedin.png") 0 0 no-repeat}section.index-content section{float:left}@media screen and (max-width: 780px){section.index-content section{float:none;width:auto;margin-right:0}}section.index-content section h1{font-size:800 24px "Open Sans";margin-bottom:25.888px}section.index-content section p{line-height:25.888px;margin-bottom:25.888px}section.index-content section ul{margin:0}section.index-content section.about{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-right:1px solid #e5e5e5;margin-right:2.513%;padding-right:1.256%;width:65.829%}@media screen and (max-width: 780px){section.index-content section.about{width:100%;border-right:0;margin-right:0;padding-right:0}}section.index-content section.about section{margin-bottom:25.888px}section.index-content section.about section p{width:48.092%;float:left}@media screen and (max-width: 780px){section.index-content section.about section p{float:none;width:auto}}section.index-content section.about section p:nth-child(odd){margin-right:3.817%}@media screen and (max-width: 780px){section.index-content section.about section p:nth-child(odd){margin-right:0}}section.index-content section.about section.intro section{margin-bottom:0}section.index-content section.about section.intro section.intro-text{margin-right:3.817%;width:48.092%}@media screen and (max-width: 780px){section.index-content section.about section.intro section.intro-text{margin-right:0;width:auto}}section.index-content section.about section.intro section.intro-text p{margin-right:0;width:auto;float:none}section.index-content section.about section.intro section.intro-video{width:48.092%}@media screen and (max-width: 780px){section.index-content section.about section.intro section.intro-video{width:auto}}section.index-content section.about section.intro section.intro-video a{display:block;width:100%}section.index-content section.about section.intro section.intro-video a img{width:100%}section.index-content section.about section.intro section.intro-video a span{display:none}section.index-content section.about section.features{border-top:1px solid #E5E5E5;padding-top:25.888px;margin-bottom:0}section.index-content section.about section.features h2{text-transform:uppercase;letter-spacing:1px;color:#888;margin-bottom:25.888px;font-weight:normal;font-size:14px}section.index-content section.about section.features h2 span{text-transform:none}section.index-content section.about section.features p{width:auto;clear:both}section.index-content section.about section.features p strong{font-family:"Open sans";font-weight:800}section.index-content section.about section.features p a{color:#933;text-decoration:none;-webkit-transition-property:all;-moz-transition-property:all;-ms-transition-property:all;-o-transition-property:all;transition-property:all;-webkit-transition-duration:0.15s;-moz-transition-duration:0.15s;-ms-transition-duration:0.15s;-o-transition-duration:0.15s;transition-duration:0.15s;-webkit-transition-timing-function:ease-out;-moz-transition-timing-function:ease-out;-ms-transition-timing-function:ease-out;-o-transition-timing-function:ease-out;transition-timing-function:ease-out;-webkit-transition-delay:0;-moz-transition-delay:0;-ms-transition-delay:0;-o-transition-delay:0;transition-delay:0}section.index-content section.about section.features p a:hover,section.index-content section.about section.features p a:focus{color:#602020}section.index-content section.about section.features ul{margin-bottom:0}section.index-content section.about section.features ul li{line-height:25.888px;width:48.092%;float:left;margin-bottom:12.944px}@media screen and (max-width: 780px){section.index-content section.about section.features ul li{width:auto;float:none}}section.index-content section.about section.features ul li:nth-child(odd){margin-right:3.817%}@media screen and (max-width: 780px){section.index-content section.about section.features ul li:nth-child(odd){margin-right:0}}section.index-content section.course,section.index-content section.staff{width:31.658%}@media screen and (max-width: 780px){section.index-content section.course,section.index-content section.staff{width:auto}}section.index-content section.course h1,section.index-content section.staff h1{color:#888;font:normal 16px Georgia,serif;font-size:14px;letter-spacing:1px;margin-bottom:25.888px;text-transform:uppercase}section.index-content section.course h2,section.index-content section.staff h2{font:800 24px "Open Sans",Helvetica,Arial,sans-serif}section.index-content section.course h3,section.index-content section.staff h3{font:400 18px "Open Sans",Helvetica,Arial,sans-serif}section.index-content section.course a span.arrow,section.index-content section.staff a span.arrow{color:rgba(255,255,255,0.6);font-style:normal;display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;zoom:1;*display:inline;*vertical-align:auto;padding-left:10px}section.index-content section.course ul,section.index-content section.staff ul{list-style:none}section.index-content section.course ul li img,section.index-content section.staff ul li img{float:left;margin-right:12.944px}section.index-content section.course h2{padding-top:129.44px;background:url("/static/images/marketing/circuits-bg.jpg") 0 0 no-repeat;-webkit-background-size:contain;-moz-background-size:contain;-ms-background-size:contain;-o-background-size:contain;background-size:contain}@media screen and (max-width: 998px) and (min-width: 781px){section.index-content section.course h2{background:url("/static/images/marketing/circuits-medium-bg.jpg") 0 0 no-repeat}}@media screen and (max-width: 780px){section.index-content section.course h2{padding-top:129.44px;background:url("/static/images/marketing/circuits-bg.jpg") 0 0 no-repeat}}@media screen and (min-width: 500px) and (max-width: 781px){section.index-content section.course h2{padding-top:207.104px}}section.index-content section.course div.announcement p.announcement-button a{margin-top:0}section.index-content section.course div.announcement img{max-width:100%;margin-bottom:25.888px}section.index-content section.about-course{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;border-right:1px solid #e5e5e5;margin-right:2.513%;padding-right:1.256%;width:65.829%}@media screen and (max-width: 780px){section.index-content section.about-course{width:auto;border-right:0;margin-right:0;padding-right:0}}section.index-content section.about-course section{width:48.092%}@media screen and (max-width: 780px){section.index-content section.about-course section{width:auto}}section.index-content section.about-course section.about-info{margin-right:3.817%}@media screen and (max-width: 780px){section.index-content section.about-course section.about-info{margin-right:0}}section.index-content section.about-course section.requirements{clear:both;width:100%;border-top:1px solid #E5E5E5;padding-top:25.888px;margin-bottom:0}section.index-content section.about-course section.requirements p{float:left;width:48.092%;margin-right:3.817%}@media screen and (max-width: 780px){section.index-content section.about-course section.requirements p{margin-right:0;float:none;width:auto}}section.index-content section.about-course section.requirements p:nth-child(odd){margin-right:0}section.index-content section.about-course section.cta{width:100%;text-align:center}section.index-content section.about-course section.cta a.enroll{padding:12.944px 51.776px;display:-moz-inline-box;-moz-box-orient:vertical;display:inline-block;vertical-align:baseline;zoom:1;*display:inline;*vertical-align:auto;text-align:center;font:800 18px "Open Sans",Helvetica,Arial,sans-serif}section.index-content section.staff h1{margin-top:25.888px}#lean_overlay{background:#000;display:none;height:100%;left:0px;position:fixed;top:0px;width:100%;z-index:100}div.leanModal_box{background:#fff;border:none;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 0 6px #000;-moz-box-shadow:0 0 6px #000;box-shadow:0 0 6px #000;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:none;padding:51.776px;text-align:left}div.leanModal_box a.modal_close{color:#aaa;display:block;font-style:normal;height:14px;position:absolute;right:12px;top:12px;width:14px;z-index:2}div.leanModal_box a.modal_close:hover{color:#933;text-decoration:none}div.leanModal_box h1{border-bottom:1px solid #eee;font-size:24px;margin-bottom:25.888px;margin-top:0;padding-bottom:25.888px;text-align:left}div.leanModal_box#enroll{max-width:600px}div.leanModal_box#enroll ol{padding-top:25.888px}div.leanModal_box#enroll ol li.terms,div.leanModal_box#enroll ol li.honor-code{float:none;width:auto}div.leanModal_box#enroll ol li div.tip{display:none}div.leanModal_box#enroll ol li:hover div.tip{background:#333;color:#fff;display:block;font-size:16px;line-height:25.888px;margin:0 0 0 -10px;padding:10px;position:absolute;-webkit-font-smoothing:antialiased;width:500px}div.leanModal_box form{text-align:left}div.leanModal_box form div#enroll_error,div.leanModal_box form div#login_error,div.leanModal_box form div#pwd_error{background-color:#333;border:#000;color:#fff;font-family:"Open sans";font-weight:bold;letter-spacing:1px;margin:-25.888px -25.888px 25.888px;padding:12.944px;text-shadow:0 1px 0 #1a1a1a;-webkit-font-smoothing:antialiased}div.leanModal_box form div#enroll_error:empty,div.leanModal_box form div#login_error:empty,div.leanModal_box form div#pwd_error:empty{padding:0}div.leanModal_box form ol{list-style:none;margin-bottom:25.888px}div.leanModal_box form ol li{margin-bottom:12.944px}div.leanModal_box form ol li.terms,div.leanModal_box form ol li.remember{border-top:1px solid #eee;clear:both;float:none;padding-top:25.888px;width:auto}div.leanModal_box form ol li.honor-code{float:none;width:auto}div.leanModal_box form ol li label{display:block;font-weight:bold}div.leanModal_box form ol li input[type="email"],div.leanModal_box form ol li input[type="number"],div.leanModal_box form ol li input[type="password"],div.leanModal_box form ol li input[type="search"],div.leanModal_box form ol li input[type="tel"],div.leanModal_box form ol li input[type="text"],div.leanModal_box form ol li input[type="url"],div.leanModal_box form ol li input[type="color"],div.leanModal_box form ol li input[type="date"],div.leanModal_box form ol li input[type="datetime"],div.leanModal_box form ol li input[type="datetime-local"],div.leanModal_box form ol li input[type="month"],div.leanModal_box form ol li input[type="time"],div.leanModal_box form ol li input[type="week"],div.leanModal_box form ol li textarea{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:100%}div.leanModal_box form ol li input[type="checkbox"]{margin-right:10px}div.leanModal_box form ol li ul{list-style:disc outside none;margin:12.944px 0 25.888px 25.888px}div.leanModal_box form ol li ul li{color:#666;float:none;font-size:14px;list-style:disc outside none;margin-bottom:12.944px}div.leanModal_box form input[type="button"],div.leanModal_box form input[type="submit"]{border:1px solid #691b1b;-webkit-border-radius:3px;-moz-border-radius:3px;-ms-border-radius:3px;-o-border-radius:3px;border-radius:3px;-webkit-box-shadow:inset 0 1px 0 0 #bc5c5c;-moz-box-shadow:inset 0 1px 0 0 #bc5c5c;box-shadow:inset 0 1px 0 0 #bc5c5c;color:#fff;display:inline;font-size:11px;font-weight:bold;background-color:#933;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #933),color-stop(100%, #761e1e));background-image:-webkit-linear-gradient(top, #933,#761e1e);background-image:-moz-linear-gradient(top, #933,#761e1e);background-image:-ms-linear-gradient(top, #933,#761e1e);background-image:-o-linear-gradient(top, #933,#761e1e);background-image:linear-gradient(top, #933,#761e1e);padding:6px 18px 7px;text-shadow:0 1px 0 #5d1414;-webkit-background-clip:padding-box;font-size:18px;padding:12.944px}div.leanModal_box form input[type="button"]:hover,div.leanModal_box form input[type="submit"]:hover{-webkit-box-shadow:inset 0 1px 0 0 #a44141;-moz-box-shadow:inset 0 1px 0 0 #a44141;box-shadow:inset 0 1px 0 0 #a44141;cursor:pointer;background-color:#823030;background-image:-webkit-gradient(linear, left top, left bottom, color-stop(0%, #823030),color-stop(100%, #691c1c));background-image:-webkit-linear-gradient(top, #823030,#691c1c);background-image:-moz-linear-gradient(top, #823030,#691c1c);background-image:-ms-linear-gradient(top, #823030,#691c1c);background-image:-o-linear-gradient(top, #823030,#691c1c);background-image:linear-gradient(top, #823030,#691c1c)}div.leanModal_box form input[type="button"]:active,div.leanModal_box form input[type="submit"]:active{border:1px solid #691b1b;-webkit-box-shadow:inset 0 0 8px 4px #5c1919,inset 0 0 8px 4px #5c1919,0 1px 1px 0 #eee;-moz-box-shadow:inset 0 0 8px 4px #5c1919,inset 0 0 8px 4px #5c1919,0 1px 1px 0 #eee;box-shadow:inset 0 0 8px 4px #5c1919,inset 0 0 8px 4px #5c1919,0 1px 1px 0 #eee}div#login{min-width:400px}div#login header{border-bottom:1px solid #ddd;margin-bottom:25.888px;padding-bottom:25.888px}div#login header h1{border-bottom:0;padding-bottom:0;margin-bottom:6.472px}div#login ol li{float:none;width:auto}div.lost-password{margin-top:25.888px;text-align:left}div.lost-password a{color:#999}div.lost-password a:hover{color:#444}div#pwd_reset p{margin-bottom:25.888px}div#pwd_reset input[type="email"]{margin-bottom:25.888px}div#apply_name_change,div#change_email,div#unenroll,div#deactivate-account{max-width:700px}div#apply_name_change ul,div#change_email ul,div#unenroll ul,div#deactivate-account ul{list-style:none}div#apply_name_change ul li,div#change_email ul li,div#unenroll ul li,div#deactivate-account ul li{margin-bottom:12.944px}div#apply_name_change ul li textarea,div#apply_name_change ul li input[type="email"],div#apply_name_change ul li input[type="number"],div#apply_name_change ul li input[type="password"],div#apply_name_change ul li input[type="search"],div#apply_name_change ul li input[type="tel"],div#apply_name_change ul li input[type="text"],div#apply_name_change ul li input[type="url"],div#apply_name_change ul li input[type="color"],div#apply_name_change ul li input[type="date"],div#apply_name_change ul li input[type="datetime"],div#apply_name_change ul li input[type="datetime-local"],div#apply_name_change ul li input[type="month"],div#apply_name_change ul li input[type="time"],div#apply_name_change ul li input[type="week"],div#change_email ul li textarea,div#change_email ul li input[type="email"],div#change_email ul li input[type="number"],div#change_email ul li input[type="password"],div#change_email ul li input[type="search"],div#change_email ul li input[type="tel"],div#change_email ul li input[type="text"],div#change_email ul li input[type="url"],div#change_email ul li input[type="color"],div#change_email ul li input[type="date"],div#change_email ul li input[type="datetime"],div#change_email ul li input[type="datetime-local"],div#change_email ul li input[type="month"],div#change_email ul li input[type="time"],div#change_email ul li input[type="week"],div#unenroll ul li textarea,div#unenroll ul li input[type="email"],div#unenroll ul li input[type="number"],div#unenroll ul li input[type="password"],div#unenroll ul li input[type="search"],div#unenroll ul li input[type="tel"],div#unenroll ul li input[type="text"],div#unenroll ul li input[type="url"],div#unenroll ul li input[type="color"],div#unenroll ul li input[type="date"],div#unenroll ul li input[type="datetime"],div#unenroll ul li input[type="datetime-local"],div#unenroll ul li input[type="month"],div#unenroll ul li input[type="time"],div#unenroll ul li input[type="week"],div#deactivate-account ul li textarea,div#deactivate-account ul li input[type="email"],div#deactivate-account ul li input[type="number"],div#deactivate-account ul li input[type="password"],div#deactivate-account ul li input[type="search"],div#deactivate-account ul li input[type="tel"],div#deactivate-account ul li input[type="text"],div#deactivate-account ul li input[type="url"],div#deactivate-account ul li input[type="color"],div#deactivate-account ul li input[type="date"],div#deactivate-account ul li input[type="datetime"],div#deactivate-account ul li input[type="datetime-local"],div#deactivate-account ul li input[type="month"],div#deactivate-account ul li input[type="time"],div#deactivate-account ul li input[type="week"]{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;width:100%}div#apply_name_change ul li textarea,div#change_email ul li textarea,div#unenroll ul li textarea,div#deactivate-account ul li textarea{height:60px}div#apply_name_change ul li input[type="submit"],div#change_email ul li input[type="submit"],div#unenroll ul li input[type="submit"],div#deactivate-account ul li input[type="submit"]{white-space:normal}div#feedback_div form ol li{float:none;width:100%}div#feedback_div form ol li textarea#feedback_message{height:100px}
../../askbot-devel/askbot/skins/default/
\ No newline at end of file
../../data/handouts/
\ No newline at end of file
// Generated by CoffeeScript 1.3.2-pre
(function() {
window.Calculator = (function() {
function Calculator() {}
Calculator.bind = function() {
var calculator;
calculator = new Calculator;
$('.calc').click(calculator.toggle);
$('form#calculator').submit(calculator.calculate).submit(function(e) {
return e.preventDefault();
});
return $('div.help-wrapper a').hover(calculator.helpToggle).click(function(e) {
return e.preventDefault();
});
};
Calculator.prototype.toggle = function() {
$('li.calc-main').toggleClass('open');
$('#calculator_wrapper #calculator_input').focus();
return $('.calc').toggleClass('closed');
};
Calculator.prototype.helpToggle = function() {
return $('.help').toggleClass('shown');
};
Calculator.prototype.calculate = function() {
return $.getJSON('/calculate', {
equation: $('#calculator_input').val()
}, function(data) {
return $('#calculator_output').val(data.result);
});
};
return Calculator;
})();
window.Courseware = (function() {
function Courseware() {}
Courseware.bind = function() {
return this.Navigation.bind();
};
Courseware.Navigation = (function() {
function Navigation() {}
Navigation.bind = function() {
var active, navigation;
if ($('#accordion').length) {
navigation = new Navigation;
active = $('#accordion ul:has(li.active)').index('#accordion ul');
$('#accordion').bind('accordionchange', navigation.log).accordion({
active: active >= 0 ? active : 1,
header: 'h3',
autoHeight: false
});
return $('#open_close_accordion a').click(navigation.toggle);
}
};
Navigation.prototype.log = function(event, ui) {
return log_event('accordion', {
newheader: ui.newHeader.text(),
oldheader: ui.oldHeader.text()
});
};
Navigation.prototype.toggle = function() {
return $('.course-wrapper').toggleClass('closed');
};
return Navigation;
})();
return Courseware;
}).call(this);
window.FeedbackForm = (function() {
function FeedbackForm() {}
FeedbackForm.bind = function() {
return $('#feedback_button').click(function() {
var data;
data = {
subject: $('#feedback_subject').val(),
message: $('#feedback_message').val(),
url: window.location.href
};
return $.post('/send_feedback', data, function() {
return $('#feedback_div').html('Feedback submitted. Thank you');
}, 'json');
});
};
return FeedbackForm;
})();
$(function() {
$.ajaxSetup({
headers: {
'X-CSRFToken': $.cookie('csrftoken')
}
});
Calculator.bind();
Courseware.bind();
FeedbackForm.bind();
return $("a[rel*=leanModal]").leanModal();
});
}).call(this);
......@@ -47,28 +47,3 @@
.treeview li.lastExpandable { background-position: -32px -67px }
.treeview div.lastCollapsable-hitarea, .treeview div.lastExpandable-hitarea { background-position: 0; }
.treeview-red li { background-image: url(images/treeview-red-line.gif); }
.treeview-red .hitarea, .treeview-red li.lastCollapsable, .treeview-red li.lastExpandable { background-image: url(images/treeview-red.gif); }
.treeview-black li { background-image: url(images/treeview-black-line.gif); }
.treeview-black .hitarea, .treeview-black li.lastCollapsable, .treeview-black li.lastExpandable { background-image: url(images/treeview-black.gif); }
.treeview-gray li { background-image: url(images/treeview-gray-line.gif); }
.treeview-gray .hitarea, .treeview-gray li.lastCollapsable, .treeview-gray li.lastExpandable { background-image: url(images/treeview-gray.gif); }
.treeview-famfamfam li { background-image: url(images/treeview-famfamfam-line.gif); }
.treeview-famfamfam .hitarea, .treeview-famfamfam li.lastCollapsable, .treeview-famfamfam li.lastExpandable { background-image: url(images/treeview-famfamfam.gif); }
.treeview .placeholder {
background: url(images/ajax-loader.gif) 0 0 no-repeat;
height: 16px;
width: 16px;
display: block;
}
.filetree li { padding: 3px 0 2px 16px; }
.filetree span.folder, .filetree span.file { padding: 1px 0 1px 16px; display: block; }
.filetree span.folder { background: url(images/folder.gif) 0 0 no-repeat; }
.filetree li.expandable span.folder { background: url(images/folder-closed.gif) 0 0 no-repeat; }
.filetree span.file { background: url(images/file.gif) 0 0 no-repeat; }
......@@ -19,20 +19,7 @@ This should ensure that you have all the dependencies required for compiling.
Compiling
---------
We're using Guard to watch your folder and automatic compile those SASS files.
If you already install all the dependencies using Bundler, you can just do:
$ bundle exec guard
This will generate the sass file for development which some debugging
information.
### Before Commit
Since this compiled style you're going to push are going to be used on live
production site, you're encouraged to compress all of the style to save some
bandwidth. You can do that by run this command:
$ bundle exec guard -g production
Guard will watch your directory and generated a compressed version of CSS.
The dev server will automatically compile sass files that have changed. Simply start
the server using:
$ rake runserver
......@@ -121,7 +121,7 @@ div.info-wrapper {
}
div.hitarea {
background-image: url('/static/images/treeview-default.gif');
background-image: url('../images/treeview-default.gif');
display: block;
height: 100%;
left: lh(.75);
......
......@@ -22,7 +22,7 @@ div.book-wrapper {
padding-left: 30px;
div.hitarea {
background-image: url('/static/images/treeview-default.gif');
background-image: url('../images/treeview-default.gif');
margin-left: -22px;
position: relative;
top: 4px;
......@@ -106,7 +106,7 @@ div.book-wrapper {
padding: 0;
a {
background-image: url('/static/images/slide-right-icon.png');
background-image: url('../images/slide-right-icon.png');
}
h2 {
......
......@@ -141,7 +141,7 @@ h1.top-header {
}
span.ui-icon {
background-image: url(images/ui-icons_454545_256x240.png);
background-image: url(../images/ui-icons_454545_256x240.png);
}
&.active {
......@@ -170,7 +170,7 @@ h1.top-header {
}
a {
background: #eee url('/static/images/slide-left-icon.png') center center no-repeat;
background: #eee url('../images/slide-left-icon.png') center center no-repeat;
border: 1px solid #D3D3D3;
@include border-radius(3px 0 0 3px);
height: 16px;
......
/* Generated by Font Squirrel (http://www.fontsquirrel.com) on January 25, 2012 05:06:34 PM America/New_York */
// Not used in UI
// @font-face {
// font-family: 'Open Sans';
// src: url('../fonts/OpenSans-Light-webfont.eot');
// src: url('../fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
// url('../fonts/OpenSans-Light-webfont.woff') format('woff'),
// url('../fonts/OpenSans-Light-webfont.ttf') format('truetype'),
// url('../fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
// font-weight: 300;
// font-style: normal;
// }
// @font-face {
// font-family: 'Open Sans';
// src: url('../fonts/OpenSans-LightItalic-webfont.eot');
// src: url('../fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'),
// url('../fonts/OpenSans-LightItalic-webfont.woff') format('woff'),
// url('../fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'),
// url('../fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg');
// font-weight: 300;
// font-style: italic;
// }
@font-face {
font-family: 'Open Sans';
src: url('../fonts/OpenSans-Regular-webfont.eot');
src: url('../fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Regular-webfont.woff') format('woff'),
url('../fonts/OpenSans-Regular-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Open Sans';
src: url('../fonts/OpenSans-Italic-webfont.eot');
src: url('../fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Italic-webfont.woff') format('woff'),
url('../fonts/OpenSans-Italic-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg');
font-weight: 400;
font-style: italic;
}
// Not used in UI
// @font-face {
// font-family: 'Open Sans';
// src: url('../fonts/OpenSans-Semibold-webfont.eot');
// src: url('../fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
// url('../fonts/OpenSans-Semibold-webfont.woff') format('woff'),
// url('../fonts/OpenSans-Semibold-webfont.ttf') format('truetype'),
// url('../fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
// font-weight: 600;
// font-style: normal;
// }
// @font-face {
// font-family: 'Open Sans';
// src: url('../fonts/OpenSans-SemiboldItalic-webfont.eot');
// src: url('../fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'),
// url('../fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'),
// url('../fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'),
// url('../fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg');
// font-weight: 600;
// font-style: italic;
// }
@font-face {
font-family: 'Open Sans';
src: url('../fonts/OpenSans-Bold-webfont.eot');
src: url('../fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-Bold-webfont.woff') format('woff'),
url('../fonts/OpenSans-Bold-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Open Sans';
src: url('../fonts/OpenSans-BoldItalic-webfont.eot');
src: url('../fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-BoldItalic-webfont.woff') format('woff'),
url('../fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg');
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: 'Open Sans';
src: url('../fonts/OpenSans-ExtraBold-webfont.eot');
src: url('../fonts/OpenSans-ExtraBold-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-ExtraBold-webfont.woff') format('woff'),
url('../fonts/OpenSans-ExtraBold-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold') format('svg');
font-weight: 800;
font-style: normal;
}
@font-face {
font-family: 'Open Sans';
src: url('../fonts/OpenSans-ExtraBoldItalic-webfont.eot');
src: url('../fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/OpenSans-ExtraBoldItalic-webfont.woff') format('woff'),
url('../fonts/OpenSans-ExtraBoldItalic-webfont.ttf') format('truetype'),
url('../fonts/OpenSans-ExtraBoldItalic-webfont.svg#OpenSansExtraboldItalic') format('svg');
font-weight: 800;
font-style: italic;
}
......@@ -228,7 +228,7 @@ section.tool-wrapper {
}
.ui-slider-handle {
background: lighten( #586e75, 5% ) url('/static/images/amplifier-slider-handle.png') center no-repeat;
background: lighten( #586e75, 5% ) url('../images/amplifier-slider-handle.png') center no-repeat;
border: 1px solid darken(#002b36, 8%);
@include box-shadow(inset 0 1px 0 lighten( #586e75, 20% ));
margin-top: -.3em;
......
......@@ -91,7 +91,7 @@ div.course-wrapper {
span {
&.unanswered, &.ui-icon-bullet {
@include inline-block();
background: url('/static/images/unanswered-icon.png') center center no-repeat;
background: url('../images/unanswered-icon.png') center center no-repeat;
height: 14px;
position: relative;
top: 4px;
......@@ -100,7 +100,7 @@ div.course-wrapper {
&.correct, &.ui-icon-check {
@include inline-block();
background: url('/static/images/correct-icon.png') center center no-repeat;
background: url('../images/correct-icon.png') center center no-repeat;
height: 20px;
position: relative;
top: 6px;
......@@ -109,7 +109,7 @@ div.course-wrapper {
&.incorrect, &.ui-icon-close {
@include inline-block();
background: url('/static/images/incorrect-icon.png') center center no-repeat;
background: url('../images/incorrect-icon.png') center center no-repeat;
height: 20px;
width: 20px;
position: relative;
......@@ -258,7 +258,7 @@ div.course-wrapper {
a.ui-slider-handle {
@include box-shadow(inset 0 1px 0 lighten($mit-red, 10%));
background: $mit-red url(/static/images/slider-bars.png) center center no-repeat;
background: $mit-red url(../images/slider-bars.png) center center no-repeat;
border: 1px solid darken($mit-red, 20%);
cursor: pointer;
......@@ -296,7 +296,7 @@ div.course-wrapper {
padding: 0;
a {
background-image: url('/static/images/slide-right-icon.png');
background-image: url('../images/slide-right-icon.png');
}
h2 {
......
......@@ -69,57 +69,57 @@ nav.sequence-nav {
//video
&.seq_video_inactive {
@extend .inactive;
background-image: url('/static/images/sequence-nav/video-icon-normal.png');
background-image: url('../images/sequence-nav/video-icon-normal.png');
background-position: center;
}
&.seq_video_visited {
@extend .visited;
background-image: url('/static/images/sequence-nav/video-icon-visited.png');
background-image: url('../images/sequence-nav/video-icon-visited.png');
background-position: center;
}
&.seq_video_active {
@extend .active;
background-image: url('/static/images/sequence-nav/video-icon-current.png');
background-image: url('../images/sequence-nav/video-icon-current.png');
background-position: center;
}
//other
&.seq_other_inactive {
@extend .inactive;
background-image: url('/static/images/sequence-nav/document-icon-normal.png');
background-image: url('../images/sequence-nav/document-icon-normal.png');
background-position: center;
}
&.seq_other_visited {
@extend .visited;
background-image: url('/static/images/sequence-nav/document-icon-visited.png');
background-image: url('../images/sequence-nav/document-icon-visited.png');
background-position: center;
}
&.seq_other_active {
@extend .active;
background-image: url('/static/images/sequence-nav/document-icon-current.png');
background-image: url('../images/sequence-nav/document-icon-current.png');
background-position: center;
}
//vertical & problems
&.seq_vertical_inactive, &.seq_problem_inactive {
@extend .inactive;
background-image: url('/static/images/sequence-nav/list-icon-normal.png');
background-image: url('../images/sequence-nav/list-icon-normal.png');
background-position: center;
}
&.seq_vertical_visited, &.seq_problem_visited {
@extend .visited;
background-image: url('/static/images/sequence-nav/list-icon-visited.png');
background-image: url('../images/sequence-nav/list-icon-visited.png');
background-position: center;
}
&.seq_vertical_active, &.seq_problem_active {
@extend .active;
background-image: url('/static/images/sequence-nav/list-icon-current.png');
background-image: url('../images/sequence-nav/list-icon-current.png');
background-position: center;
}
......@@ -211,7 +211,7 @@ nav.sequence-nav {
&.prev {
a {
background-image: url('/static/images/sequence-nav/previous-icon.png');
background-image: url('../images/sequence-nav/previous-icon.png');
&:hover {
background-color: none;
......@@ -221,7 +221,7 @@ nav.sequence-nav {
&.next {
a {
background-image: url('/static/images/sequence-nav/next-icon.png');
background-image: url('../images/sequence-nav/next-icon.png');
@include border-top-right-radius(4px);
&:hover {
......@@ -282,7 +282,7 @@ section.course-content {
&.prev {
a {
background-image: url('/static/images/sequence-nav/previous-icon.png');
background-image: url('../images/sequence-nav/previous-icon.png');
border-right: 1px solid darken(#f6efd4, 20%);
&:hover {
......@@ -293,7 +293,7 @@ section.course-content {
&.next {
a {
background-image: url('/static/images/sequence-nav/next-icon.png');
background-image: url('../images/sequence-nav/next-icon.png');
&:hover {
background-color: none;
......
......@@ -116,7 +116,7 @@ section.course-content {
}
a.ui-slider-handle {
background: $mit-red url(/static/images/slider-handle.png) center center no-repeat;
background: $mit-red url(../images/slider-handle.png) center center no-repeat;
@include background-size(50%);
border: 1px solid darken($mit-red, 20%);
@include border-radius(15px);
......@@ -159,7 +159,7 @@ section.course-content {
width: 14px;
&.play {
background: url('/static/images/play-icon.png') center center no-repeat;
background: url('../images/play-icon.png') center center no-repeat;
&:hover {
background-color: #444;
......@@ -167,7 +167,7 @@ section.course-content {
}
&.pause {
background: url('/static/images/pause-icon.png') center center no-repeat;
background: url('../images/pause-icon.png') center center no-repeat;
&:hover {
background-color: #444;
......@@ -192,7 +192,7 @@ section.course-content {
float: left;
a {
background: url('/static/images/closed-arrow.png') 10px center no-repeat;
background: url('../images/closed-arrow.png') 10px center no-repeat;
border-left: 1px solid #000;
border-right: 1px solid #000;
@include box-shadow(1px 0 0 #555, inset 1px 0 0 #555);
......@@ -209,7 +209,7 @@ section.course-content {
width: 110px;
&.open {
background: url('/static/images/open-arrow.png') 10px center no-repeat;
background: url('../images/open-arrow.png') 10px center no-repeat;
ol#video_speeds {
display: block;
......@@ -280,7 +280,7 @@ section.course-content {
}
a.add-fullscreen {
background: url(/static/images/fullscreen.png) center no-repeat;
background: url(../images/fullscreen.png) center no-repeat;
border-right: 1px solid #000;
@include box-shadow(1px 0 0 #555, inset 1px 0 0 #555);
color: #797979;
......@@ -301,7 +301,7 @@ section.course-content {
}
a.hide-subtitles {
background: url('/static/images/cc.png') center no-repeat;
background: url('../images/cc.png') center no-repeat;
color: #797979;
display: block;
float: left;
......
......@@ -162,12 +162,12 @@ body.user-messages {
color: #735005;
text-decoration: none;
line-height: 18px;
background: -6px -5px url(../images/sprites.png) no-repeat;
background: -6px -5px url(../default/media/images/sprites.png) no-repeat;
cursor: pointer;
width: 20px;
height: 20px;
&:hover {
background: -26px -5px url(../images/sprites.png) no-repeat; } }
background: -26px -5px url(../default/media/images/sprites.png) no-repeat; } }
#header {
margin-top: 0px;
......@@ -235,11 +235,11 @@ body.user-messages {
&:hover {
text-decoration: underline; } } }
#navtags {
background: -50px -5px url(../images/sprites.png) no-repeat; }
background: -50px -5px url(../default/media/images/sprites.png) no-repeat; }
#navusers {
background: -125px -5px url(../images/sprites.png) no-repeat; }
background: -125px -5px url(../default/media/images/sprites.png) no-repeat; }
#navbadges {
background: -210px -5px url(../images/sprites.png) no-repeat; } }
background: -210px -5px url(../default/media/images/sprites.png) no-repeat; } }
// #header {
// &.with-logo #usertoolsnav {
......@@ -262,13 +262,13 @@ body.user-messages {
// font-family: 'yanone kaffeesatz',sans-serif;
// #homebutton {
// border-right: #afaf9e 1px solid;
// background: -6px -36px url(../images/sprites.png) no-repeat;
// background: -6px -36px url(../default/media/images/sprites.png) no-repeat;
// height: 55px;
// width: 43px;
// display: block;
// float: left;
// &:hover {
// background: -51px -36px url(../images/sprites.png) no-repeat; } }
// background: -51px -36px url(../default/media/images/sprites.png) no-repeat; } }
// #scopewrapper {
// width: 688px;
// float: left;
......@@ -282,7 +282,7 @@ body.user-messages {
// line-height: 55px;
// margin-left: 24px; }
// .on {
// background: url(../images/scopearrow.png) no-repeat center bottom; }
// background: url(../default/media/images/scopearrow.png) no-repeat center bottom; }
// .ask-message {
// font-size: 24px; } } }
......@@ -321,10 +321,10 @@ body.user-messages {
float: right;
margin: 0px;
width: 48px;
background: -98px -36px url(../images/sprites.png) no-repeat;
background: -98px -36px url(../default/media/images/sprites.png) no-repeat;
cursor: pointer;
&:hover {
background: -146px -36px url(../images/sprites.png) no-repeat; } }
background: -146px -36px url(../default/media/images/sprites.png) no-repeat; } }
.cancelsearchbtn {
font-size: 30px;
color: #ce8888;
......@@ -346,7 +346,7 @@ body.anon #searchbar {
width: 405px; } }
#askbutton {
background: url(../images/bigbutton.png) repeat-x bottom;
background: url(../default/media/images/bigbutton.png) repeat-x bottom;
line-height: 44px;
text-align: center;
width: 200px;
......@@ -366,7 +366,7 @@ body.anon #searchbar {
box-shadow: 1px 1px 2px #636363;
&:hover {
text-decoration: none;
background: url(../images/bigbutton.png) repeat-x top;
background: url(../default/media/images/bigbutton.png) repeat-x top;
text-shadow: 0px 1px 0px #c6d9dd;
-moz-text-shadow: 0px 1px 0px #c6d9dd;
-webkit-text-shadow: 0px 1px 0px #c6d9dd; } }
......@@ -416,7 +416,7 @@ body.anon #searchbar {
// /*font-family: 'yanone kaffeesatz',sans-serif;*/
// padding-left: 0px; }
// .contributorback {
// background: #eceeeb url(../images/contributorsback.png) no-repeat center left; }
// background: #eceeeb url(../default/media/images/contributorsback.png) no-repeat center left; }
// label {
// color: #707070;
// font-size: 15px;
......@@ -452,7 +452,7 @@ body.anon #searchbar {
border: #c9c9b5 1px solid;
height: 25px; }
#interestingtagadd, #ignoredtagadd {
background: url(../images/small-button-blue.png) repeat-x top;
background: url(../default/media/images/small-button-blue.png) repeat-x top;
border: 0;
color: #4a757f;
font-weight: bold;
......@@ -473,12 +473,12 @@ body.anon #searchbar {
-moz-box-shadow: 1px 1px 2px #808080;
box-shadow: 1px 1px 2px #808080; }
#interestingtagadd:hover, #ignoredtagadd:hover {
background: url(../images/small-button-blue.png) repeat-x bottom; } }*/
background: url(../default/media/images/small-button-blue.png) repeat-x bottom; } }*/
// img.gravatar {
// margin: 1px; }
// a {
// &.followed, &.follow {
// background: url(../images/medium-button.png) top repeat-x;
// background: url(../default/media/images/medium-button.png) top repeat-x;
// height: 34px;
// line-height: 34px;
// text-align: center;
......@@ -503,7 +503,7 @@ body.anon #searchbar {
// padding: 0; }
// &.followed:hover, &.follow:hover {
// text-decoration: none;
// background: url(../images/medium-button.png) bottom repeat-x;
// background: url(../default/media/images/medium-button.png) bottom repeat-x;
// text-shadow: 0px 1px 0px #c6d9dd;
// -moz-text-shadow: 0px 1px 0px #c6d9dd;
// -webkit-text-shadow: 0px 1px 0px #c6d9dd; }
......@@ -550,7 +550,7 @@ body.anon #searchbar {
// li {
// color: #707070;
// font-size: 13px;
// list-style-image: url(../images/tips.png); }
// list-style-image: url(../default/media/images/tips.png); }
// a {
// font-size: 16px; } }
......@@ -634,7 +634,7 @@ body.anon #searchbar {
// width: 52px;
// padding-left: 2px;
// padding-top: 3px;
// background: white url(../images/feed-icon-small.png) no-repeat center right;
// background: white url(../default/media/images/feed-icon-small.png) no-repeat center right;
// float: right;
// font-family: georgia,serif;
// font-size: 16px;
......@@ -691,7 +691,7 @@ body.anon #searchbar {
// overflow: hidden;
// width: 710px;
// float: left;
// background: url(../images/summary-background.png) repeat-x;
// background: url(../default/media/images/summary-background.png) repeat-x;
// h2 {
// font-size: 24px;
// font-weight: normal;
......@@ -744,11 +744,11 @@ body.anon #searchbar {
// height: 44px;
// border: #dbdbd4 1px solid; }
// .votes {
// background: url(../images/vote-background.png) repeat-x; }
// background: url(../default/media/images/vote-background.png) repeat-x; }
// .answers {
// background: url(../images/answers-background.png) repeat-x; }
// background: url(../default/media/images/answers-background.png) repeat-x; }
// .views {
// background: url(../images/view-background.png) repeat-x; }
// background: url(../default/media/images/view-background.png) repeat-x; }
// .no-votes .item-count {
// color: #b1b5b6; }
// .some-votes .item-count {
......@@ -762,7 +762,7 @@ body.anon #searchbar {
// .some-views .item-count {
// color: #d33f00; }
// .accepted .item-count {
// background: url(../images/accept.png) no-repeat top right;
// background: url(../default/media/images/accept.png) no-repeat top right;
// display: block;
// text-align: center;
// width: 40px;
......@@ -1089,7 +1089,7 @@ body.anon #searchbar {
// #fmanswer input.submit, .ask-page input.submit, .edit-question-page input.submit {
// float: left;
// background: url(../images/medium-button.png) top repeat-x;
// background: url(../default/media/images/medium-button.png) top repeat-x;
// height: 34px;
// border: 0;
// font-family: 'yanone kaffeesatz',sans-serif;
......@@ -1109,7 +1109,7 @@ body.anon #searchbar {
// #fmanswer input.submit:hover, .ask-page input.submit:hover, .edit-question-page input.submit:hover {
// text-decoration: none;
// background: url(../images/medium-button.png) bottom repeat-x;
// background: url(../default/media/images/medium-button.png) bottom repeat-x;
// text-shadow: 0px 1px 0px #c6d9dd;
// -moz-text-shadow: 0px 1px 0px #c6d9dd;
// -webkit-text-shadow: 0px 1px 0px #c6d9dd; }
......@@ -1271,7 +1271,7 @@ body.anon #searchbar {
// float: right;
// width: 175px; }
// .post-update-info {
// background: white url(../images/background-user-info.png) repeat-x bottom;
// background: white url(../default/media/images/background-user-info.png) repeat-x bottom;
// float: right;
// font-size: 9px;
// font-family: arial;
......@@ -1338,21 +1338,21 @@ body.anon #searchbar {
// height: 18px;
// font-size: 18px; }
// .question-delete {
// background: url(../images/delete.png) no-repeat center left;
// background: url(../default/media/images/delete.png) no-repeat center left;
// padding-left: 16px; } }
// .answer-controls .question-delete {
// background: url(../images/delete.png) no-repeat center left;
// background: url(../default/media/images/delete.png) no-repeat center left;
// padding-left: 16px; }
// .post-controls .question-flag, .answer-controls .question-flag {
// background: url(../images/flag.png) no-repeat center left; }
// background: url(../default/media/images/flag.png) no-repeat center left; }
// .post-controls .question-edit, .answer-controls .question-edit {
// background: url(../images/edit2.png) no-repeat center left; }
// background: url(../default/media/images/edit2.png) no-repeat center left; }
// .post-controls .question-retag, .answer-controls .question-retag {
// background: url(../images/retag.png) no-repeat center left; }
// background: url(../default/media/images/retag.png) no-repeat center left; }
// .post-controls .question-close, .answer-controls .question-close {
// background: url(../images/close.png) no-repeat center left; }
// background: url(../default/media/images/close.png) no-repeat center left; }
// .post-controls .permant-link, .answer-controls .permant-link {
// background: url(../images/link.png) no-repeat center left; }
// background: url(../default/media/images/link.png) no-repeat center left; }
// .tabbar {
// width: 100%; }
// #questioncount {
......@@ -1364,25 +1364,25 @@ body.anon #searchbar {
// height: 20px;
// cursor: pointer; }
// .question-img-upvote, .answer-img-upvote {
// background: url(../images/vote-arrow-up-new.png) no-repeat; }
// background: url(../default/media/images/vote-arrow-up-new.png) no-repeat; }
// .question-img-downvote, .answer-img-downvote {
// background: url(../images/vote-arrow-down-new.png) no-repeat; }
// background: url(../default/media/images/vote-arrow-down-new.png) no-repeat; }
// .question-img-upvote {
// &:hover, &.on {
// background: url(../images/vote-arrow-up-on-new.png) no-repeat; } }
// background: url(../default/media/images/vote-arrow-up-on-new.png) no-repeat; } }
// .answer-img-upvote {
// &:hover, &.on {
// background: url(../images/vote-arrow-up-on-new.png) no-repeat; } }
// background: url(../default/media/images/vote-arrow-up-on-new.png) no-repeat; } }
// .question-img-downvote {
// &:hover, &.on {
// background: url(../images/vote-arrow-down-on-new.png) no-repeat; } }
// background: url(../default/media/images/vote-arrow-down-on-new.png) no-repeat; } }
// .answer-img-downvote {
// &:hover, &.on {
// background: url(../images/vote-arrow-down-on-new.png) no-repeat; } }
// background: url(../default/media/images/vote-arrow-down-on-new.png) no-repeat; } }
// #fmanswer_button {
// margin: 8px 0px; }
// .question-img-favorite:hover {
// background: url(../images/vote-favorite-on.png); }
// background: url(../default/media/images/vote-favorite-on.png); }
// div.comments {
// padding: 0; }
// #comment-title {
......@@ -1405,7 +1405,7 @@ body.anon #searchbar {
// padding: 0 3px 2px 22px;
// font-family: arial;
// font-size: 13px;
// background: url(../images/comment.png) no-repeat center left;
// background: url(../default/media/images/comment.png) no-repeat center left;
// &:hover {
// background-color: #f5f0c9;
// text-decoration: none; } }
......@@ -1441,7 +1441,7 @@ body.anon #searchbar {
// vertical-align: top;
// width: 100px; }
// button {
// background: url(../images/small-button-blue.png) repeat-x top;
// background: url(../default/media/images/small-button-blue.png) repeat-x top;
// border: 0;
// color: #4a757f;
// font-family: arial;
......@@ -1464,7 +1464,7 @@ body.anon #searchbar {
// -moz-box-shadow: 1px 1px 2px #808080;
// box-shadow: 1px 1px 2px #808080;
// &:hover {
// background: url(../images/small-button-blue.png) bottom repeat-x;
// background: url(../default/media/images/small-button-blue.png) bottom repeat-x;
// text-shadow: 0px 1px 0px #c6d9dd;
// -moz-text-shadow: 0px 1px 0px #c6d9dd;
// -webkit-text-shadow: 0px 1px 0px #c6d9dd; } }
......@@ -1487,7 +1487,7 @@ body.anon #searchbar {
// font-family: arial;
// font-size: 11px;
// min-height: 25px;
// background: white url(../images/comment-background.png) bottom repeat-x;
// background: white url(../default/media/images/comment-background.png) bottom repeat-x;
// border-radius: 5px;
// -ms-border-radius: 5px;
// -moz-border-radius: 5px;
......@@ -1502,7 +1502,7 @@ body.anon #searchbar {
// &:hover {
// text-decoration: underline; } }
// span.delete-icon {
// background: url(../images/close-small.png) no-repeat;
// background: url(../default/media/images/close-small.png) no-repeat;
// border: 0;
// width: 14px;
// height: 14px;
......@@ -1551,10 +1551,10 @@ body.anon #searchbar {
// &.upvoted {
// color: #d64000; }
// &.hover {
// background: url(../images/go-up-grey.png) no-repeat;
// background: url(../default/media/images/go-up-grey.png) no-repeat;
// background-position: right 1px; }
// &:hover {
// background: url(../images/go-up-orange.png) no-repeat;
// background: url(../default/media/images/go-up-orange.png) no-repeat;
// background-position: right 1px; } }
// .help-text {
// float: right;
......@@ -1632,7 +1632,7 @@ body.anon #searchbar {
// // margin-right: 10px; }
// }
// .answer-img-accept:hover {
// background: url(../images/vote-accepted-on.png); }
// background: url(../default/media/images/vote-accepted-on.png); }
// .answer-body {
// a {
// color: #1b79bd; }
......@@ -1657,7 +1657,7 @@ body.anon #searchbar {
// padding-left: 3px !important; } }
// .facebook-share.icon, .twitter-share.icon, .linkedin-share.icon, .identica-share.icon {
// background: url(../images/socialsprite.png) no-repeat;
// background: url(../default/media/images/socialsprite.png) no-repeat;
// display: block;
// text-indent: -100em;
// height: 25px;
......@@ -1721,7 +1721,7 @@ body.anon #searchbar {
// font-size: 14px; }
// .openid-signin input.submit, .meta input.submit, .users-page input.submit, .user-profile-edit-page input.submit, .user-profile-page input.submit {
// background: url(../images/small-button-blue.png) repeat-x top;
// background: url(../default/media/images/small-button-blue.png) repeat-x top;
// border: 0;
// color: #4a757f;
// font-weight: bold;
......@@ -1744,15 +1744,15 @@ body.anon #searchbar {
// box-shadow: 1px 1px 2px #808080; }
// .openid-signin input.submit:hover, .meta input.submit:hover, .users-page input.submit:hover, .user-profile-edit-page input.submit:hover, .user-profile-page input.submit:hover {
// background: url(../images/small-button-blue.png) repeat-x bottom;
// background: url(../default/media/images/small-button-blue.png) repeat-x bottom;
// text-decoration: none; }
.openid-signin .cancel, .meta .cancel, .users-page .cancel, .user-profile-edit-page .cancel, .user-profile-page .cancel {
background: url(../images/small-button-cancel.png) repeat-x top !important;
background: url(../default/media/images/small-button-cancel.png) repeat-x top !important;
color: #525252 !important; }
.openid-signin .cancel:hover, .meta .cancel:hover, .users-page .cancel:hover, .user-profile-edit-page .cancel:hover, .user-profile-page .cancel:hover {
background: url(../images/small-button-cancel.png) repeat-x bottom !important; }
background: url(../default/media/images/small-button-cancel.png) repeat-x bottom !important; }
#email-input-fs, #local_login_buttons, #password-fs, #openid-fs {
margin-top: 10px; }
......@@ -1767,7 +1767,7 @@ body.anon #searchbar {
width: 200px; }
#email-input-fs .submit-b, #local_login_buttons .submit-b, #password-fs .submit-b, #openid-fs .submit-b {
background: url(../images/small-button-blue.png) repeat-x top;
background: url(../default/media/images/small-button-blue.png) repeat-x top;
border: 0;
color: #4a757f;
font-weight: bold;
......@@ -1791,16 +1791,16 @@ body.anon #searchbar {
box-shadow: 1px 1px 2px #808080; }
#email-input-fs .submit-b:hover, #local_login_buttons .submit-b:hover, #password-fs .submit-b:hover, #openid-fs .submit-b:hover {
background: url(../images/small-button-blue.png) repeat-x bottom; }
background: url(../default/media/images/small-button-blue.png) repeat-x bottom; }
.openid-input {
background: url(../images/openid.gif) no-repeat;
background: url(../default/media/images/openid.gif) no-repeat;
padding-left: 15px;
cursor: pointer; }
.openid-login-input {
background-position: center left;
background: url(../images/openid.gif) no-repeat 0% 50%;
background: url(../default/media/images/openid.gif) no-repeat 0% 50%;
padding: 5px 5px 5px 15px;
cursor: pointer;
font-family: trebuchet ms;
......@@ -1853,7 +1853,7 @@ body.anon #searchbar {
// margin-right: 5px;
// color: #333;
// text-decoration: none;
// background: url(../images/medala.gif) no-repeat;
// background: url(../default/media/images/medala.gif) no-repeat;
// border-left: 1px solid #eee;
// border-top: 1px solid #eee;
// border-bottom: 1px solid #ccc;
......@@ -1862,7 +1862,7 @@ body.anon #searchbar {
// &:hover.medal {
// color: #333;
// text-decoration: none;
// background: url(../images/medala_on.gif) no-repeat;
// background: url(../default/media/images/medala_on.gif) no-repeat;
// border-left: 1px solid #e7e296;
// border-top: 1px solid #e7e296;
// border-bottom: 1px solid #d1ca3d;
......@@ -1917,7 +1917,7 @@ body.anon #searchbar {
// font-size: 15px;
// cursor: pointer;
// font-family: 'yanone kaffeesatz',sans-serif;
// background: url(../images/small-button-blue.png) repeat-x top;
// background: url(../default/media/images/small-button-blue.png) repeat-x top;
// border-radius: 4px;
// -ms-border-radius: 4px;
// -moz-border-radius: 4px;
......@@ -1931,7 +1931,7 @@ body.anon #searchbar {
// box-shadow: 1px 1px 2px #808080; }
// .follow-toggle:hover, .submit:hover {
// background: url(../images/small-button-blue.png) repeat-x bottom;
// background: url(../default/media/images/small-button-blue.png) repeat-x bottom;
// text-decoration: none !important; }
// .follow-toggle {
......@@ -2132,7 +2132,7 @@ ins {
// -webkit-border-radius: 4px;
// -khtml-border-radius: 4px;
// h3 {
// background: url(../images/notification.png) repeat-x top;
// background: url(../default/media/images/notification.png) repeat-x top;
// padding: 10px 10px 10px 10px;
// font-size: 13px;
// margin-bottom: 5px;
......
......@@ -74,7 +74,7 @@ body.askbot {
}
.acLoading {
background : url('../images/indicator.gif') right center no-repeat;
background : url('../default/media/images/indicator.gif') right center no-repeat;
}
.acSelect {
......
......@@ -52,7 +52,7 @@
margin-left: 5px;
margin-right: 5px;
position: absolute;
background-image: url(/static/images/askbot/wmd-buttons.png);
background-image: url(../images/askbot/wmd-buttons.png);
background-repeat: no-repeat;
background-position: 0px 0px;
display: inline-block;
......
......@@ -82,7 +82,7 @@ body.user-profile-page {
&.up {
background-color:#d1e3a8;
background-image: url(/static/images/askbot/vote-arrow-up-activate.png);
background-image: url(../images/askbot/vote-arrow-up-activate.png);
margin-right: 6px;
span.vote-count {
......@@ -91,7 +91,7 @@ body.user-profile-page {
}
&.down {
background-image: url(/static/images/askbot/vote-arrow-down-activate.png);
background-image: url(../images/askbot/vote-arrow-down-activate.png);
background-color:#eac6ad;
span.vote-count {
......
......@@ -38,23 +38,23 @@ div.question-header {
}
&.question-img-upvote, &.answer-img-upvote {
background-image: url(/static/images/askbot/vote-arrow-up.png);
background-image: url(../images/askbot/vote-arrow-up.png);
@include box-shadow(inset 0 1px 0px rgba(255, 255, 255, 0.5));
&:hover, &.on {
background-color:#d1e3a8;
border-color: darken(#D1E3A8, 20%);
background-image: url(/static/images/askbot/vote-arrow-up-activate.png);
background-image: url(../images/askbot/vote-arrow-up-activate.png);
}
}
&.question-img-downvote, &.answer-img-downvote {
background-image: url(/static/images/askbot/vote-arrow-down.png);
background-image: url(../images/askbot/vote-arrow-down.png);
&:hover, &.on {
background-color:#EAC6AD;
border-color: darken(#EAC6AD, 20%);
background-image: url(/static/images/askbot/vote-arrow-down-activate.png);
background-image: url(../images/askbot/vote-arrow-down-activate.png);
}
}
}
......
......@@ -108,7 +108,7 @@ div.discussion-wrapper aside {
input[type='submit'] {
@include box-shadow(none);
opacity: 0.5;
background: url(/static/images/askbot/search-icon.png) no-repeat center;
background: url(../images/askbot/search-icon.png) no-repeat center;
border: 0;
margin-left: 3px;
position: absolute;
......
......@@ -16,7 +16,7 @@ li.calc-main {
}
a.calc {
background: url("/static/images/calc-icon.png") rgba(#111, .9) no-repeat center;
background: url("../images/calc-icon.png") rgba(#111, .9) no-repeat center;
border-bottom: 0;
@include border-radius(3px 3px 0 0);
color: #fff;
......@@ -35,7 +35,7 @@ li.calc-main {
}
&.closed {
background-image: url("/static/images/close-calc-icon.png");
background-image: url("../images/close-calc-icon.png");
}
}
......@@ -115,7 +115,7 @@ li.calc-main {
top: 15px;
a {
background: url("/static/images/info-icon.png") center center no-repeat;
background: url("../images/info-icon.png") center center no-repeat;
height: 17px;
@include hide-text;
width: 17px;
......
......@@ -80,15 +80,15 @@ footer {
}
&.twitter a {
background: url('/static/images/twitter.png') 0 0 no-repeat;
background: url('../images/twitter.png') 0 0 no-repeat;
}
&.facebook a {
background: url('/static/images/facebook.png') 0 0 no-repeat;
background: url('../images/facebook.png') 0 0 no-repeat;
}
&.linkedin a {
background: url('/static/images/linkedin.png') 0 0 no-repeat;
background: url('../images/linkedin.png') 0 0 no-repeat;
}
}
}
......
......@@ -6,7 +6,7 @@ footer {
div.footer-wrapper {
border-top: 1px solid #e5e5e5;
padding: lh() 0;
background: url('/static/images/marketing/mit-logo.png') right center no-repeat;
background: url('../images/marketing/mit-logo.png') right center no-repeat;
@media screen and (max-width: 780px) {
background-position: left bottom;
......@@ -84,15 +84,15 @@ footer {
}
&.twitter a {
background: url('/static/images/marketing/twitter.png') 0 0 no-repeat;
background: url('../images/marketing/twitter.png') 0 0 no-repeat;
}
&.facebook a {
background: url('/static/images/marketing/facebook.png') 0 0 no-repeat;
background: url('../images/marketing/facebook.png') 0 0 no-repeat;
}
&.linkedin a {
background: url('/static/images/marketing/linkedin.png') 0 0 no-repeat;
background: url('../images/marketing/linkedin.png') 0 0 no-repeat;
}
}
}
......
......@@ -6,10 +6,10 @@ header.announcement {
-webkit-font-smoothing: antialiased;
&.home {
background: #e3e3e3 url("/static/images/marketing/shot-5-medium.jpg");
background: #e3e3e3 url("../images/marketing/shot-5-medium.jpg");
@media screen and (min-width: 1200px) {
background: #e3e3e3 url("/static/images/marketing/shot-5-large.jpg");
background: #e3e3e3 url("../images/marketing/shot-5-large.jpg");
}
div {
......@@ -33,14 +33,14 @@ header.announcement {
}
&.course {
background: #e3e3e3 url("/static/images/marketing/course-bg-small.jpg");
background: #e3e3e3 url("../images/marketing/course-bg-small.jpg");
@media screen and (min-width: 1200px) {
background: #e3e3e3 url("/static/images/marketing/course-bg-large.jpg");
background: #e3e3e3 url("../images/marketing/course-bg-large.jpg");
}
@media screen and (max-width: 1199px) and (min-width: 700px) {
background: #e3e3e3 url("/static/images/marketing/course-bg-medium.jpg");
background: #e3e3e3 url("../images/marketing/course-bg-medium.jpg");
}
div {
......
......@@ -222,16 +222,16 @@ section.index-content {
&.course {
h2 {
padding-top: lh(5);
background: url('/static/images/marketing/circuits-bg.jpg') 0 0 no-repeat;
background: url('../images/marketing/circuits-bg.jpg') 0 0 no-repeat;
@include background-size(contain);
@media screen and (max-width: 998px) and (min-width: 781px){
background: url('/static/images/marketing/circuits-medium-bg.jpg') 0 0 no-repeat;
background: url('../images/marketing/circuits-medium-bg.jpg') 0 0 no-repeat;
}
@media screen and (max-width: 780px) {
padding-top: lh(5);
background: url('/static/images/marketing/circuits-bg.jpg') 0 0 no-repeat;
background: url('../images/marketing/circuits-bg.jpg') 0 0 no-repeat;
}
@media screen and (min-width: 500px) and (max-width: 781px) {
......
......@@ -59,26 +59,26 @@
.ui-widget { font-family: Helvetica, Arial, sans-serif; font-size: 1.1em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Helvetica, Arial, sans-serif; font-size: 1em; }
.ui-widget-content { border: 1px solid #dae5c9; background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #031634; }
.ui-widget-content { border: 1px solid #dae5c9; background: #ffffff url(../images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; color: #031634; }
.ui-widget-content a { color: #031634; }
.ui-widget-header { border: 1px solid #dae5c9; background: #7fbcfd url(images/ui-bg_highlight-soft_50_7fbcfd_1x100.png) 50% 50% repeat-x; color: #031634; font-weight: bold; }
.ui-widget-header { border: 1px solid #dae5c9; background: #7fbcfd url(../images/ui-bg_highlight-soft_50_7fbcfd_1x100.png) 50% 50% repeat-x; color: #031634; font-weight: bold; }
.ui-widget-header a { color: #031634; }
/* Interaction states
----------------------------------*/
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #dae5c9; background: #7fbcdf url(images/ui-bg_highlight-soft_100_7fbcdf_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #7a994c; }
.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #dae5c9; background: #7fbcdf url(../images/ui-bg_highlight-soft_100_7fbcdf_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #7a994c; }
.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #7a994c; text-decoration: none; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #7fbcdf; background: #bddeff url(images/ui-bg_highlight-soft_25_bddeff_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #7a994c; }
.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #7fbcdf; background: #bddeff url(../images/ui-bg_highlight-soft_25_bddeff_1x100.png) 50% 50% repeat-x; font-weight: bold; color: #7a994c; }
.ui-state-hover a, .ui-state-hover a:hover { color: #7a994c; text-decoration: none; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #dae5c9; background: #023063 url(images/ui-bg_glass_65_023063_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #dae5c9; }
.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #dae5c9; background: #023063 url(../images/ui-bg_glass_65_023063_1x400.png) 50% 50% repeat-x; font-weight: bold; color: #dae5c9; }
.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #dae5c9; text-decoration: none; }
.ui-widget :active { outline: none; }
/* Interaction Cues
----------------------------------*/
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #cccccc; background: #ffffff url(images/ui-bg_flat_55_ffffff_40x100.png) 50% 50% repeat-x; color: #444444; }
.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #cccccc; background: #ffffff url(../images/ui-bg_flat_55_ffffff_40x100.png) 50% 50% repeat-x; color: #444444; }
.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #444444; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #fa720a; background: #ffffff url(images/ui-bg_flat_55_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #fa720a; background: #ffffff url(../images/ui-bg_flat_55_ffffff_40x100.png) 50% 50% repeat-x; color: #222222; }
.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #222222; }
.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #222222; }
.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
......@@ -89,14 +89,14 @@
----------------------------------*/
/* states and images */
.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_adcc80_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(images/ui-icons_adcc80_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(images/ui-icons_031634_256x240.png); }
.ui-state-default .ui-icon { background-image: url(images/ui-icons_adcc80_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_adcc80_256x240.png); }
.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_adcc80_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_fa720a_256x240.png); }
.ui-icon { width: 16px; height: 16px; background-image: url(../images/ui-icons_adcc80_256x240.png); }
.ui-widget-content .ui-icon {background-image: url(../images/ui-icons_adcc80_256x240.png); }
.ui-widget-header .ui-icon {background-image: url(../images/ui-icons_031634_256x240.png); }
.ui-state-default .ui-icon { background-image: url(../images/ui-icons_adcc80_256x240.png); }
.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(../images/ui-icons_adcc80_256x240.png); }
.ui-state-active .ui-icon {background-image: url(../images/ui-icons_454545_256x240.png); }
.ui-state-highlight .ui-icon {background-image: url(../images/ui-icons_adcc80_256x240.png); }
.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(../images/ui-icons_fa720a_256x240.png); }
/* positioning */
.ui-icon-carat-1-n { background-position: 0 0; }
......@@ -286,8 +286,8 @@
.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 2px; -webkit-border-bottom-right-radius: 2px; -khtml-border-bottom-right-radius: 2px; border-bottom-right-radius: 2px; }
/* Overlays */
.ui-widget-overlay { background: #eeeeee url(images/ui-bg_flat_0_eeeeee_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
.ui-widget-shadow { margin: -4px 0 0 -4px; padding: 4px; background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; }/*
.ui-widget-overlay { background: #eeeeee url(../images/ui-bg_flat_0_eeeeee_40x100.png) 50% 50% repeat-x; opacity: .80;filter:Alpha(Opacity=80); }
.ui-widget-shadow { margin: -4px 0 0 -4px; padding: 4px; background: #aaaaaa url(../images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; opacity: .60;filter:Alpha(Opacity=60); -moz-border-radius: 0px; -khtml-border-radius: 0px; -webkit-border-radius: 0px; border-radius: 0px; }/*
* jQuery UI Resizable 1.8.16
*
* Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
......
......@@ -58,15 +58,15 @@ div.wiki-wrapper {
@include transition();
&.view {
background-image: url('/static/images/sequence-nav/view.png');
background-image: url('../images/sequence-nav/view.png');
}
&.history {
background-image: url('/static/images/sequence-nav/history.png');
background-image: url('../images/sequence-nav/history.png');
}
&.edit {
background-image: url('/static/images/sequence-nav/edit.png');
background-image: url('../images/sequence-nav/edit.png');
}
&:hover {
......
../../data/subs/
\ No newline at end of file
<h1>Kirchhoff's circuit laws</h1>
<div>From Wikipedia, the free encyclopedia. See <a href="http://en.wikipedia.org/wiki/Kirchhoff's_circuit_laws">original page</a> for copyright and attribution</div>
<h2>Kirchhoff's current law (KCL)</h2>
<div>
<div style="width:198px;"><a href="http://en.wikipedia.org/wiki/File:KCL.png"><img alt="" src="/static/Kirchhoff_files/KCL.png" width="196" height="195"></a>
<div>The current entering any junction is equal to the current leaving that junction. <i>i</i><sub>1</sub> + <i>i</i><sub>4</sub> = <i>i</i><sub>2</sub> + <i>i</i><sub>3</sub></div>
</div>
</div>
<p>This law is also called <b>Kirchhoff's first law</b>, <b>Kirchhoff's point rule</b>, <b>Kirchhoff's junction rule</b> (or nodal rule), and <b>Kirchhoff's first rule</b>.</p>
<p>The principle of conservation of <a href="http://en.wikipedia.org/wiki/Electric_charge" title="Electric charge">electric charge</a> implies that:</p>
<dl>
<dd>At any node (junction) in an <a href="http://en.wikipedia.org/wiki/Electrical_circuit" title="Electrical circuit">electrical circuit</a>, the sum of <a href="http://en.wikipedia.org/wiki/Current_(electricity)" title="Current (electricity)">currents</a> flowing into that node is equal to the sum of currents flowing out of that node.
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>or</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
<dd>The algebraic sum of currents in a network of conductors meeting at a point is zero.</dd>
</dl>
<p>Recalling that current is a signed (positive or negative) quantity reflecting direction towards or away from a node, this principle can be stated as:</p>
<dl>
<dd><img alt="\sum_{k=1}^n {I}_k = 0" src="/static/Kirchhoff_files/17bbbd9b6e69b94dab881bacae540191.png"></dd>
</dl>
<p><i>n</i> is the total number of branches with currents flowing towards or away from the node.</p>
<p>This formula is valid for <a href="http://en.wikipedia.org/wiki/Complex_number" title="Complex number">complex</a> currents:</p>
<dl>
<dd><img alt="\sum_{k=1}^n \tilde{I}_k = 0" src="/static/Kirchhoff_files/912713fc906c190d03a73f02b2f738ab.png"></dd>
</dl>
<p>The law is based on the conservation of charge whereby the charge (measured in coulombs) is the product of the current (in amperes) and the time (in seconds).</p>
<h3>Changing charge density</h3>
<p>KCL is only valid if the <a href="http://en.wikipedia.org/wiki/Charge_density" title="Charge density">charge density</a> remains constant at the point to which it is applied. Consider the current entering a single plate of a capacitor. If one imagines a closed surface around that single plate, current enters through the surface, but does not exit, thus violating KCL. Certainly, the currents through a closed surface around the entire capacitor will meet KCL since the current entering one plate is balanced by the current exiting the other plate, and that is usually all that is important in circuit analysis, but there is a problem when considering just one plate. Another common example is the current in an <a href="http://en.wikipedia.org/wiki/Antenna_(radio)" title="Antenna (radio)">antenna</a> where current enters the antenna from the transmitter feeder but no current exits from the other end.(Johnson and Graham, pp.36-37)</p>
<p><a href="http://en.wikipedia.org/wiki/James_Clerk_Maxwell" title="James Clerk Maxwell">Maxwell</a> introduced the concept of <a href="http://en.wikipedia.org/wiki/Displacement_current" title="Displacement current">displacement currents</a> to describe these situations. The current flowing into a capacitor plate is equal to the rate of accumulation of charge and hence is also equal to the rate of change of <a href="http://en.wikipedia.org/wiki/Electric_flux" title="Electric flux">electric flux</a> due to that charge (electric flux is measured in the same units, <a href="http://en.wikipedia.org/wiki/Coulomb" title="Coulomb">Coulombs</a>, as electric charge in the <a href="http://en.wikipedia.org/wiki/SI_system" title="SI system">SI system</a> of units). This rate of change of flux, <img alt="\psi \ " src="/static/Kirchhoff_files/ec93733267512bc18567c04e5a728e24.png">, is what Maxwell called displacement current <span dir="ltr"><i>I</i><sub>D</sub></span>;</p>
<dl>
<dd><img alt="I_\mathrm D = \frac {d \psi}{d t}" src="/static/Kirchhoff_files/c449f0cd2e060f03076e28ae5f8f0a75.png"></dd>
</dl>
<p>When the displacement currents are included, Kirchhoff's current law once again holds. Displacement currents are not real currents in that they do not consist of moving charges, they should be viewed more as a correction factor to make KCL true. In the case of the capacitor plate, the real current entering the plate is exactly cancelled by a displacement current leaving the plate and heading for the opposite plate.</p>
<p>This can also be expressed in terms of vector field quantities by taking the <a href="http://en.wikipedia.org/wiki/Divergence" title="Divergence">divergence</a> of <a href="http://en.wikipedia.org/wiki/Amp%C3%A8re%27s_law" title="Ampere&#39;s law">Ampere's law</a> with Maxwell's correction and combining with <a href="http://en.wikipedia.org/wiki/Gauss%27s_law" title="Gauss&#39;s law">Gauss's law</a>, yielding:</p>
<dl>
<dd><img alt="\nabla \cdot \mathbf{J} = -\nabla \cdot \frac{\partial \mathbf{D}}{\partial t} = -\frac{\partial \rho}{\partial t}" src="/static/Kirchhoff_files/229253cd444bad52ccf237f182f18267.png"></dd>
</dl>
<p>This is simply the charge conservation equation (in integral form, it says that the current flowing out of a closed surface is equal to the rate of loss of charge within the enclosed volume (<a href="http://en.wikipedia.org/wiki/Divergence_theorem" title="Divergence theorem">Divergence theorem</a>)). Kirchhoff's current law is equivalent to the statement that the divergence of the current is zero, true for time-invariant p, or always true if the displacement current is included with <b>J</b>.</p>
<h3>Uses</h3>
<p>A <a href="http://en.wikipedia.org/wiki/Matrix_(mathematics)" title="Matrix (mathematics)">matrix</a> version of Kirchhoff's current law is the basis of most <a href="http://en.wikipedia.org/wiki/Electronic_circuit_simulation" title="Electronic circuit simulation">circuit simulation software</a>, such as <a href="http://en.wikipedia.org/wiki/SPICE" title="SPICE">SPICE</a>.</p>
<h2><span>[<a href="http://en.wikipedia.org/w/index.php?title=Kirchhoff%27s_circuit_laws&action=edit&section=4" title="Edit section: Kirchhoff&#39;s voltage law (KVL)">edit</a>]</span> <span id="Kirchhoff.27s_voltage_law_.28KVL.29">Kirchhoff's voltage law (KVL)</span></h2>
<div>
<div style="width:202px;"><a href="http://en.wikipedia.org/wiki/File:Kirchhoff_voltage_law.svg"><img alt="" src="/static/Kirchhoff_files/200px-Kirchhoff_voltage_law.svg.png" width="200" height="175"></a>
<div>
<div><a href="http://en.wikipedia.org/wiki/File:Kirchhoff_voltage_law.svg" title="Enlarge"><img src="/static/Kirchhoff_files/magnify-clip.png" width="15" height="11" alt=""></a></div>
The sum of all the voltages around the loop is equal to zero. v<sub>1</sub> + v<sub>2</sub> + v<sub>3</sub> - v<sub>4</sub> = 0</div>
</div>
</div>
<p>This law is also called <b>Kirchhoff's second law</b>, <b>Kirchhoff's loop (or mesh) rule</b>, and <b>Kirchhoff's second rule</b>.</p>
<p>The principle of conservation of energy implies that</p>
<dl>
<dd>The directed sum of the electrical <a href="http://en.wikipedia.org/wiki/Potential_difference" title="Potential difference">potential differences</a> (voltage) around any closed circuit is zero.
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>or</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
<dd>More simply, the sum of the <a href="http://en.wikipedia.org/wiki/Electromotive_force" title="Electromotive force">emfs</a> in any closed loop is equivalent to the sum of the potential drops in that loop.
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>
<dl>
<dd>or</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
</dl>
</dd>
<dd>The algebraic sum of the products of the resistances of the conductors and the currents in them in a closed loop is equal to the total <a href="http://en.wikipedia.org/wiki/Electromotive_force" title="Electromotive force">emf</a> available in that loop.</dd>
</dl>
<p>Similarly to KCL, it can be stated as:</p>
<dl>
<dd><img alt="\sum_{k=1}^n V_k = 0" src="/static/Kirchhoff_files/08d7bd7060be987d4da37b7fc263a740.png"></dd>
</dl>
<p>Here, <i>n</i> is the total number of voltages measured. The voltages may also be complex:</p>
<dl>
<dd><img alt="\sum_{k=1}^n \tilde{V}_k = 0" src="/static/Kirchhoff_files/98720898396d325be0abb463b68caf90.png"></dd>
</dl>
<p>This law is based on the conservation of "energy given/taken by potential field" (not including energy taken by dissipation). Given a voltage potential, a charge which has completed a closed loop doesn't gain or lose energy as it has gone back to initial potential level.</p>
<p>This law holds true even when resistance (which causes <b>dissipation</b> of energy) is present in a circuit. The validity of this law in this case can be understood if one realizes that a charge in fact doesn't go back to its starting point, due to dissipation of energy. A charge will just terminate at the negative terminal, instead of positive terminal. This means all the energy given by the potential difference has been fully consumed by resistance which in turn loses the energy as heat dissipation.</p>
<p>To summarize, Kirchhoff's voltage law has nothing to do with gain or loss of energy by electronic components (resistors, capacitors, etc.). It is a law referring to the potential field generated by voltage sources. In this potential field, regardless of what electronic components are present, the gain or loss in "energy given by the potential field" must be zero when a charge completes a closed loop.</p>
<h3>Electric field and electric potential</h3>
<p>Kirchhoff's voltage law could be viewed as a consequence of the principle of <a href="http://en.wikipedia.org/wiki/Conservation_of_energy" title="Conservation of energy">conservation of energy</a>. Otherwise, it would be possible to build a <a href="http://en.wikipedia.org/wiki/Perpetual_motion_machine" title="Perpetual motion machine">perpetual motion machine</a> that passed a current in a circle around the circuit.</p>
<p>Considering that electric potential is defined as a <a href="http://en.wikipedia.org/wiki/Line_integral" title="Line integral">line integral</a> over an <a href="http://en.wikipedia.org/wiki/Electric_field" title="Electric field">electric field</a>, Kirchhoff's voltage law can be expressed equivalently as</p>
<dl>
<dd><img alt="\oint_C \mathbf{E} \cdot d\mathbf{l} = 0," src="/static/Kirchhoff_files/07172609b59c136393705e4067de95d0.png"></dd>
</dl>
<p>which states that the <a href="http://en.wikipedia.org/wiki/Line_integral" title="Line integral">line integral</a> of the <a href="http://en.wikipedia.org/wiki/Electric_field" title="Electric field">electric field</a> around closed loop C is zero.</p>
<p>In order to return to the more special form, this integral can be "cut in pieces" in order to get the voltage at specific components.</p>
<h3>Limitations</h3>
<p>This is a simplification of <a href="http://en.wikipedia.org/wiki/Faraday%27s_law_of_induction" title="Faraday&#39;s law of induction">Faraday's law of induction</a> for the special case where there is no fluctuating <a href="http://en.wikipedia.org/wiki/Magnetic_field" title="Magnetic field">magnetic field</a> linking the closed loop. Therefore, it practically suffices for explaining circuits containing only resistors and capacitors.</p>
<p>In the presence of a changing magnetic field the electric field is not <a href="http://en.wikipedia.org/wiki/Conservative_vector_field" title="Conservative vector field">conservative</a> and it cannot therefore define a pure scalar <a href="http://en.wikipedia.org/wiki/Potential" title="Potential">potential</a>-the <a href="http://en.wikipedia.org/wiki/Line_integral" title="Line integral">line integral</a> of the electric field around the circuit is not zero. This is because energy is being transferred from the magnetic field to the current (or vice versa). In order to "fix" Kirchhoff's voltage law for circuits containing inductors, an effective potential drop, or <a href="http://en.wikipedia.org/wiki/Electromotive_force" title="Electromotive force">electromotive force</a> (emf), is associated with each <a href="http://en.wikipedia.org/wiki/Inductance" title="Inductance">inductance</a> of the circuit, exactly equal to the amount by which the line integral of the electric field is not zero by <a href="http://en.wikipedia.org/wiki/Faraday%27s_law_of_induction" title="Faraday&#39;s law of induction">Faraday's law of induction</a>.</p>
......@@ -20,7 +20,7 @@
<section class="main-content">
<div class="course-wrapper">
<section class="course-index">
<section aria-label="Course Navigation" class="course-index">
<header id="open_close_accordion">
<h2>Courseware Index</h2>
<a href="#">close</a>
......
<%inherit file="main.html" />
<%namespace name='static' file='static_content.html'/>
<%block name="headextra">
<script type="text/javascript" src="/static/js/flot/jquery.flot.js"></script>
<script type="text/javascript" src="/static/js/flot/jquery.flot.stack.js"></script>
<script type="text/javascript" src="/static/js/flot/jquery.flot.symbol.js"></script>
<script type="text/javascript" src="${static.url('js/flot/jquery.flot.js')}"></script>
<script type="text/javascript" src="${static.url('js/flot/jquery.flot.stack.js')}"></script>
<script type="text/javascript" src="${static.url('js/flot/jquery.flot.symbol.js')}"></script>
<style type="text/css">
.grade_a {color:green;}
......
<%inherit file="main.html" />
<%namespace name='static' file='static_content.html'/>
<%namespace name="profile_graphs" file="profile_graphs.js"/>
<%block name="headextra">
<script type="text/javascript" src="/static/js/flot/jquery.flot.js"></script>
<script type="text/javascript" src="/static/js/flot/jquery.flot.stack.js"></script>
<script type="text/javascript" src="/static/js/flot/jquery.flot.symbol.js"></script>
<script type="text/javascript" src="${static.url('js/flot/jquery.flot.js')}"></script>
<script type="text/javascript" src="${static.url('js/flot/jquery.flot.stack.js')}"></script>
<script type="text/javascript" src="${static.url('js/flot/jquery.flot.symbol.js')}"></script>
% for s in students:
<script>
${profile_graphs.body(s['grade_info']['grade_summary'], "grade-detail-graph-" + str(s['id']))}
......
<%inherit file="marketing.html" />
<%namespace name='static' file='static_content.html'/>
<%block name="title">MITx 6.002x: Circuits & Electronics</%block>
<%block name="description">6.002x (Circuits and Electronics) is an experimental on-line adaptation of MIT's first undergraduate analog design course: 6.002.</%block>
......@@ -61,17 +62,17 @@
<ul>
<li>
<img src="/static/staff/agarwal-mit-news-small.jpg" alt="Anant Agarwal">
<img src="${static.url('staff/agarwal-mit-news-small.jpg')}" alt="Anant Agarwal">
<h2>Anant Agarwal</h2>
<p>Director of MIT&rsquo;s Computer Science and Artificial Intelligence Laboratory (CSAIL) and a professor of the Electrical Engineering and Computer Science department at MIT. His research focus is in parallel computer architectures and cloud software systems, and he is a founder of several successful startups, including Tilera, a company that produces scalable multicore processors. Prof. Agarwal won MIT&rsquo;s Smullin and Jamieson prizes for teaching and co-authored the course textbook &ldquo;Foundations of Analog and Digital Electronic Circuits.&rdquo;</p></li>
<li>
<img src="/static/staff/gjs-small.jpg" alt="Gerald Sussman">
<img src="${static.url('staff/gjs-small.jpg')}" alt="Gerald Sussman">
<h2>Gerald Sussman</h2>
<p>Professor of Electrical Engineering at MIT. He is a well known educator in the computer science community, perhaps best known as the author of Structure and Interpretation of Computer Programs, which is universally acknowledged as one of the top ten textbooks in computer science, and as the creator of Scheme, a popular teaching language. His research spans a range of topics, from artificial intelligence, to physics and chaotic systems, to supercomputer design.</p></li>
<li>
<img src="/static/staff/pmitros-small.jpg" alt="Piotr Mitros">
<img src="${static.url('staff/pmitros-small.jpg')}" alt="Piotr Mitros">
<h2>Piotr Mitros</h2>
<p>Research Scientist at MIT. His research focus is in finding ways to apply techniques from control systems to optimizing the learning process. Dr. Mitros has worked as an analog designer at Texas Instruments, Talking Lights, and most recently, designed the analog front end for a novel medical imaging modality for Rhythmia Medical.</p></li>
</ul>
......
......@@ -27,14 +27,14 @@ $(document).ready(function(){
<section class="updates">
<%include file="updates.html" />
</section>
<section class="handouts">
<section aria-label="Handout Navigation" class="handouts">
<%include file="handouts.html" />
</section>
% else:
<section class="updates">
<%include file="guest_updates.html" />
</section>
<section class="handouts">
<section aria-label="Handout Navigation" class="handouts">
<%include file="guest_handouts.html" />
</section>
% endif
......
<%namespace name='static' file='static_content.html'/>
<!DOCTYPE html>
<html>
<head>
<%block name="title"><title>MITx 6.002x</title></%block>
<link rel="stylesheet" href="${ settings.LIB_URL }jquery.treeview.css" type="text/css" media="all" />
<link rel="stylesheet" href="/static/css/application.css?v3" type="text/css" media="all" />
<link rel="stylesheet" href="${static.url('js/jquery.treeview.css')}" type="text/css" media="all" />
<%static:css group='application'/>
<script type="text/javascript" src="${ settings.LIB_URL }jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="${ settings.LIB_URL }jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="${ settings.LIB_URL }swfobject/swfobject.js"></script>
<script type="text/javascript" src="/static/js/application.js"></script>
<script type="text/javascript" src="${static.url('js/jquery-1.6.2.min.js')}"></script>
<script type="text/javascript" src="${static.url('js/jquery-ui-1.8.16.custom.min.js')}"></script>
<script type="text/javascript" src="${static.url('js/swfobject/swfobject.js')}"></script>
<%static:js group='application'/>
<!--[if lt IE 9]>
<script src="/static/js/html5shiv.js"></script>
<script src="${static.url('js/html5shiv.js')}"></script>
<![endif]-->
<script type="text/x-mathjax-config">
......@@ -23,8 +24,10 @@
</script>
<%block name="headextra"/>
<!-- This must appear after all mathjax-config blocks, so it is after the imports from the other templates -->
<script type="text/javascript" src="${ settings.LIB_URL }mathjax-MathJax-c9db6ac/MathJax.js?config=TeX-AMS_HTML-full"></script>
<!-- This must appear after all mathjax-config blocks, so it is after the imports from the other templates.
It can't be run through static.url because MathJax uses crazy url introspection to do lazy loading of
MathJax extension libraries -->
<script type="text/javascript" src="/static/js/mathjax-MathJax-c9db6ac/MathJax.js?config=TeX-AMS_HTML-full"></script>
</head>
<body class="<%block name='bodyclass'/>">
......@@ -40,7 +43,7 @@
<p> Copyright &copy; 2012. MIT. <a href="/t/copyright.html">Some rights reserved.</a>
</p>
<nav>
<ul class="social">
<ul aria-label="Social Links" class="social">
<li class="linkedin">
<a href="http://www.linkedin.com/groups/Friends-Alumni-MITx-4316538">Linked In</a>
</li>
......@@ -54,7 +57,7 @@
<ul>
<li><a href="#feedback_div" rel="leanModal">Feedback</a></li>
<li class="calc-main">
<a href="#" class="calc">Calculator</a>
<a aria-label="Open Calculator" href="#" class="calc">Calculator</a>
<div id="calculator_wrapper">
<form id="calculator">
......@@ -106,13 +109,13 @@
</form>
</div>
<script type="text/javascript" src="${ settings.LIB_URL }jquery.treeview.js"></script>
<script type="text/javascript" src="/static/js/jquery.leanModal.min.js"></script>
<script type="text/javascript" src="/static/js/jquery.qtip.min.js"></script>
<script type="text/javascript" src="/static/js/jquery.cookie.js"></script>
<script type="text/javascript" src="/static/js/video_player.js"></script>
<script type="text/javascript" src="/static/js/schematic.js"></script>
<script type="text/javascript" src="/static/js/cktsim.js"></script>
<script type="text/javascript" src="${static.url('js/jquery.treeview.js')}"></script>
<script type="text/javascript" src="${static.url('js/jquery.leanModal.min.js')}"></script>
<script type="text/javascript" src="${static.url('js/jquery.qtip.min.js')}"></script>
<script type="text/javascript" src="${static.url('js/jquery.cookie.js')}"></script>
<script type="text/javascript" src="${static.url('js/video_player.js')}"></script>
<script type="text/javascript" src="${static.url('js/schematic.js')}"></script>
<script type="text/javascript" src="${static.url('js/cktsim.js')}"></script>
<%block name="js_extra"/>
</body>
......
<%namespace name='static' file='static_content.html'/>
<!DOCTYPE html>
<html>
<head>
......@@ -8,23 +9,22 @@
<meta name="keywords" content="<%block name="keywords">MITx, online learning, MIT, online laboratory, education, learners, undergraduate, certificate</%block>" />
<!--link rel="stylesheet" href="${ settings.LIB_URL }jquery.treeview.css" type="text/css" media="all" /-->
<link rel="stylesheet" href="/static/css/marketing.css" type="text/css" media="all" />
<%static:css group='marketing'/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<!--[if lt IE 8]>
<link rel="stylesheet" href="/static/css/marketing-ie.css" type="text/css" media="all" />
<%static:css group='marketing-ie'/>
<![endif]-->
<script type="text/javascript" src="${ settings.LIB_URL }jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="${ settings.LIB_URL }jquery-ui-1.8.16.custom.min.js"></script>
<script type="text/javascript" src="${static.url('js/jquery-1.6.2.min.js')}"></script>
<script type="text/javascript" src="${static.url('js/jquery-ui-1.8.16.custom.min.js')}"></script>
<script type="text/javascript" src="/static/js/jquery.leanModal.min.js"></script>
<!--script type="text/javascript" src="${ settings.LIB_URL }swfobject/swfobject.js"></script-->
<!--script type="text/javascript" src="${ settings.LIB_URL }jquery.treeview.js"></script-->
<!--script type="text/javascript" src="/static/js/video_player.js"></script-->
<!-- <script type="text/javascript" src="/static/js/schematic.js"></script> -->
<script src="/static/js/html5shiv.js"></script>
<script type="text/javascript" src="${static.url('js/jquery.leanModal.min.js')}"></script>
<!--script type="text/javascript" src="${static.url('js/swfobject/swfobject.js')}"></script-->
<!--script type="text/javascript" src="${static.url('js/jquery.treeview.js')}"></script-->
<!--script type="text/javascript" src="${static.url('js/video_player.js')}"></script-->
<!-- <script type="text/javascript" src="${static.url('js/schematic.js')}"></script> -->
<script src="${static.url('js/html5shiv.js')}"></script>
<%block name="headextra"/>
......@@ -97,7 +97,7 @@ function postJSON(url, data, callback) {
<li><a href="/t/mitx_help.html">Help</a></li>
</ul>
<ul class="social">
<ul aria-label="Social Links" class="social">
<li class="linkedin">
<a href="http://www.linkedin.com/groups/Friends-Alumni-MITx-4316538">Linked In</a>
</li>
......
##
## File: templates/mathjax_include.html
##
## Advanced mathjax using 2.0-latest CDN for Dynamic Math
##
## This enables ASCIIMathJAX, and is used by js_textbox
<script type="text/x-mathjax-config">
// (function () {
var QUEUE = MathJax.Hub.queue; // shorthand for the queue
var math = null;
var jaxset = {}; // associative array of the element jaxs for the math output.
var mmlset = {}; // associative array of mathml from each jax
// constructs mathML of the specified jax element
function toMathML(jax,callback) {
var mml;
try {
mml = jax.root.toMathML("");
} catch(err) {
if (!err.restart) {throw err} // an actual error
return MathJax.Callback.After([toMathML,jax,callback],err.restart);
}
MathJax.Callback(callback)(mml);
}
// function to queue in MathJax to get put the MathML expression in in the right document element
function UpdateMathML(jax,id) {
toMathML(jax,function (mml) {
// document.getElementById(id+'_fromjs').value=math.originalText+ "\n\n=>\n\n"+ mml;
delem = document.getElementById("input_" + id + "_fromjs");
if (delem) { delem.value=mml; };
mmlset[id] = mml;
})
}
MathJax.Hub.Config({
tex2jax: {
inlineMath: [
["\\(","\\)"],
['[mathjaxinline]','[/mathjaxinline]']
],
displayMath: [
["\\[","\\]"],
['[mathjax]','[/mathjax]']
]
}
});
//
// The onchange event handler that typesets the
// math entered by the user
//
window.UpdateMath = function (Am,id) {
QUEUE.Push(["Text",jaxset[id],Am]);
QUEUE.Push(UpdateMathML(jaxset[id],id));
}
// })();
function DoUpdateMath(inputId) {
var str = document.getElementById("input_"+inputId).value;
// make sure the input field is in the jaxset
if ($.inArray(inputId,jaxset) == -1){
//alert('missing '+inputId);
if (document.getElementById("display_" + inputId)){
MathJax.Hub.queue.Push(function () {
math = MathJax.Hub.getAllJax("display_" + inputId)[0];
if (math){
jaxset[inputId] = math;
}
});
};
}
UpdateMath(str,inputId)
}
</script>
<%block name="headextra"/>
<!-- This must appear after all mathjax-config blocks, so it is after the imports from the other templates -->
<!-- TODO: move to settings -->
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/2.0-latest/MathJax.js?config=TeX-MML-AM_HTMLorMML-full">
</script>
<%inherit file="marketing.html" />
<%namespace name='static' file='static_content.html'/>
<%block name="header_class">home</%block>
......@@ -12,7 +13,7 @@
</section>
<section class="intro-video">
<a id="video-overlay-link" rel="leanModal" href="#video-overlay"><img src="/static/images/video-image.png" id="video-img" alt="Link to MITx introduction video" /><span> Watch intro video</span></a>
<a id="video-overlay-link" rel="leanModal" href="#video-overlay"><img src="${static.url('images/video-image.png')}" id="video-img" alt="Link to MITx introduction video" /><span> Watch intro video</span></a>
</section>
</section>
......
......@@ -28,10 +28,10 @@ $(document).ready(function(){
<hr width="100%">
<h3>Courses available:</h3>
<ul>
<li><a href=${ MITX_ROOT_URL }/courseware/6.002_Spring_2012/>6.002 (Spring 2012)</a></li>
<li><a href=${ MITX_ROOT_URL }/courseware/8.02_Spring_2013/>8.02 (Spring 2013)</a></li>
<li><a href=${ MITX_ROOT_URL }/courseware/8.01_Spring_2013/>8.01 (Spring 201x)</a></li>
</ul>
% for coursename, info in courseinfo.items():
<li><a href=${ MITX_ROOT_URL }/courseware/${coursename}/>${info['title']} (${coursename})</a></li>
% endfor
</ul>
</section>
</div>
</section>
<%page args="active_page" />
<div class="header-wrapper">
<header>
<header aria-label="Global Navigation">
<hgroup>
<h1><em>
% if settings.ENABLE_MULTICOURSE:
......
<form class="option-input">
<select name="input_${id}" id="input_${id}" >
<option value="option_${id}_dummy_default"> </option>
% for option_id, option_description in options.items():
<option value="${option_id}"
% if (option_id==value):
selected="true"
% endif
> ${option_description}</option>
% endfor
</select>
<span id="answer_${id}"></span>
% if state == 'unsubmitted':
<span class="unanswered" style="display:inline-block;" id="status_${id}"></span>
% elif state == 'correct':
<span class="correct" id="status_${id}"></span>
% elif state == 'incorrect':
<span class="incorrect" id="status_${id}"></span>
% elif state == 'incomplete':
<span class="incorrect" id="status_${id}"></span>
% endif
</form>
<link href="${url}" rel="stylesheet" type="${type}" \
% if media:
media="${media}" \
% endif
% if title:
title="${title}" \
% endif
% if charset:
charset="${charset}" \
% endif
/>
<script \
% if async:
async \
% endif
if defer:
defer \
type="text/javascript" charset="utf-8">
${source | safe}
</script>
<script \
% if async:
async \
% endif
% if defer:
defer \
% endif
type="${type}" src="${ url }" charset="utf-8"></script>
<%namespace name='static' file='static_content.html'/>
<h2 class="problem-header">${ problem['name'] }
% if problem['weight']:
: ${ problem['weight'] } points
% endif
% if settings.QUICKEDIT:
<span class="staff">
<br/>
<br/>
<br/>
<br/>
<font size=-2><a href=${MITX_ROOT_URL}/quickedit/${id}>Quick
Edit Problem</a></font></span>
% endif
</h2>
<section class="problem">
${ problem['html'] }
${ static.replace_urls(problem['html']) }
<section class="action">
<input type="hidden" name="problem_id" value="${ problem['name'] }">
......
<%inherit file="main.html" />
<%namespace name='static' file='static_content.html'/>
<%namespace name="profile_graphs" file="profile_graphs.js"/>
<%block name="title"><title>Profile - MITx 6.002x</title></%block>
......@@ -8,9 +9,9 @@
%>
<%block name="headextra">
<script type="text/javascript" src="/static/js/flot/jquery.flot.js"></script>
<script type="text/javascript" src="/static/js/flot/jquery.flot.stack.js"></script>
<script type="text/javascript" src="/static/js/flot/jquery.flot.symbol.js"></script>
<script type="text/javascript" src="${static.url('js/flot/jquery.flot.js')}"></script>
<script type="text/javascript" src="${static.url('js/flot/jquery.flot.stack.js')}"></script>
<script type="text/javascript" src="${static.url('js/flot/jquery.flot.symbol.js')}"></script>
<script>
${profile_graphs.body(grade_summary, "grade-detail-graph")}
</script>
......@@ -179,7 +180,7 @@ $(function() {
</section>
<section class="user-info">
<section aria-label="Profile Navigation" class="user-info">
<header>
<h1>Student Profile</h1>
......@@ -189,7 +190,7 @@ $(function() {
<li>
Name: <strong>${name}</strong>
%if True:
<a href="#apply_name_change" rel="leanModal" class="name-edit">Edit</a>
<a href="#apply_name_change" rel="leanModal" class="name-edit" aria-label="Edit Name">Edit</a>
%else:
(Name change pending)
%endif
......@@ -200,18 +201,18 @@ $(function() {
</li>
<li>
E-mail: <strong>${email}</strong> <a href="#change_email" rel="leanModal" class="edit-email">Edit</a>
E-mail: <strong>${email}</strong> <a href="#change_email" rel="leanModal" class="edit-email" aria-label="Edit Email">Edit</a>
</li>
<li>
Location: <div id="location_sub">${location}</div><div id="description"></div> <a href="#" id="change_location">Edit</a>
Location: <div id="location_sub">${location}</div><div id="description"></div> <a href="#" id="change_location" aria-label="Edit Location">Edit</a>
</li>
<li>
Language: <div id="language_sub">${language}</div> <a href="#" id="change_language">Edit</a>
Language: <div id="language_sub">${language}</div> <a href="#" id="change_language" aria-label="Edit Language">Edit</a>
</li>
<li>
Password reset
<input id="id_email" type="hidden" name="email" maxlength="75" value="${email}" />
<input type="submit" id="pwd_reset_button" value="Reset" />
<input type="submit" id="pwd_reset_button" value="Reset" aria-label="Reset Password" />
<p>We'll e-mail a password reset link to ${email}.</p>
</li>
</ul>
......
{% load compressed %}
{% load staticfiles %}
<!DOCTYPE html>
<html>
<head>
<title>Reset password - MITx 6.002x</title>
<link rel="stylesheet" href="/static/css/application.css" type="text/css" media="all" />
{% compressed_css 'application' %}
<!--[if lt IE 9]>
<script src="/static/js/html5shiv.js"></script>
<script src="{% static 'js/html5shiv.js' %}"></script>
<![endif]-->
</head>
......
/* Generated by Font Squirrel (http://www.fontsquirrel.com) on January 25, 2012 05:06:34 PM America/New_York */
// Not used in UI
// @font-face {
// font-family: 'Open Sans';
// src: url('/static/fonts/OpenSans-Light-webfont.eot');
// src: url('/static/fonts/OpenSans-Light-webfont.eot?#iefix') format('embedded-opentype'),
// url('/static/fonts/OpenSans-Light-webfont.woff') format('woff'),
// url('/static/fonts/OpenSans-Light-webfont.ttf') format('truetype'),
// url('/static/fonts/OpenSans-Light-webfont.svg#OpenSansLight') format('svg');
// font-weight: 300;
// font-style: normal;
// }
// @font-face {
// font-family: 'Open Sans';
// src: url('/static/fonts/OpenSans-LightItalic-webfont.eot');
// src: url('/static/fonts/OpenSans-LightItalic-webfont.eot?#iefix') format('embedded-opentype'),
// url('/static/fonts/OpenSans-LightItalic-webfont.woff') format('woff'),
// url('/static/fonts/OpenSans-LightItalic-webfont.ttf') format('truetype'),
// url('/static/fonts/OpenSans-LightItalic-webfont.svg#OpenSansLightItalic') format('svg');
// font-weight: 300;
// font-style: italic;
// }
@font-face {
font-family: 'Open Sans';
src: url('/static/fonts/OpenSans-Regular-webfont.eot');
src: url('/static/fonts/OpenSans-Regular-webfont.eot?#iefix') format('embedded-opentype'),
url('/static/fonts/OpenSans-Regular-webfont.woff') format('woff'),
url('/static/fonts/OpenSans-Regular-webfont.ttf') format('truetype'),
url('/static/fonts/OpenSans-Regular-webfont.svg#OpenSansRegular') format('svg');
font-weight: 600;
font-style: normal;
}
@font-face {
font-family: 'Open Sans';
src: url('/static/fonts/OpenSans-Italic-webfont.eot');
src: url('/static/fonts/OpenSans-Italic-webfont.eot?#iefix') format('embedded-opentype'),
url('/static/fonts/OpenSans-Italic-webfont.woff') format('woff'),
url('/static/fonts/OpenSans-Italic-webfont.ttf') format('truetype'),
url('/static/fonts/OpenSans-Italic-webfont.svg#OpenSansItalic') format('svg');
font-weight: 400;
font-style: italic;
}
// Not used in UI
// @font-face {
// font-family: 'Open Sans';
// src: url('/static/fonts/OpenSans-Semibold-webfont.eot');
// src: url('/static/fonts/OpenSans-Semibold-webfont.eot?#iefix') format('embedded-opentype'),
// url('/static/fonts/OpenSans-Semibold-webfont.woff') format('woff'),
// url('/static/fonts/OpenSans-Semibold-webfont.ttf') format('truetype'),
// url('/static/fonts/OpenSans-Semibold-webfont.svg#OpenSansSemibold') format('svg');
// font-weight: 600;
// font-style: normal;
// }
// @font-face {
// font-family: 'Open Sans';
// src: url('/static/fonts/OpenSans-SemiboldItalic-webfont.eot');
// src: url('/static/fonts/OpenSans-SemiboldItalic-webfont.eot?#iefix') format('embedded-opentype'),
// url('/static/fonts/OpenSans-SemiboldItalic-webfont.woff') format('woff'),
// url('/static/fonts/OpenSans-SemiboldItalic-webfont.ttf') format('truetype'),
// url('/static/fonts/OpenSans-SemiboldItalic-webfont.svg#OpenSansSemiboldItalic') format('svg');
// font-weight: 600;
// font-style: italic;
// }
@font-face {
font-family: 'Open Sans';
src: url('/static/fonts/OpenSans-Bold-webfont.eot');
src: url('/static/fonts/OpenSans-Bold-webfont.eot?#iefix') format('embedded-opentype'),
url('/static/fonts/OpenSans-Bold-webfont.woff') format('woff'),
url('/static/fonts/OpenSans-Bold-webfont.ttf') format('truetype'),
url('/static/fonts/OpenSans-Bold-webfont.svg#OpenSansBold') format('svg');
font-weight: 700;
font-style: normal;
}
@font-face {
font-family: 'Open Sans';
src: url('/static/fonts/OpenSans-BoldItalic-webfont.eot');
src: url('/static/fonts/OpenSans-BoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('/static/fonts/OpenSans-BoldItalic-webfont.woff') format('woff'),
url('/static/fonts/OpenSans-BoldItalic-webfont.ttf') format('truetype'),
url('/static/fonts/OpenSans-BoldItalic-webfont.svg#OpenSansBoldItalic') format('svg');
font-weight: 700;
font-style: italic;
}
@font-face {
font-family: 'Open Sans';
src: url('/static/fonts/OpenSans-ExtraBold-webfont.eot');
src: url('/static/fonts/OpenSans-ExtraBold-webfont.eot?#iefix') format('embedded-opentype'),
url('/static/fonts/OpenSans-ExtraBold-webfont.woff') format('woff'),
url('/static/fonts/OpenSans-ExtraBold-webfont.ttf') format('truetype'),
url('/static/fonts/OpenSans-ExtraBold-webfont.svg#OpenSansExtrabold') format('svg');
font-weight: 800;
font-style: normal;
}
@font-face {
font-family: 'Open Sans';
src: url('/static/fonts/OpenSans-ExtraBoldItalic-webfont.eot');
src: url('/static/fonts/OpenSans-ExtraBoldItalic-webfont.eot?#iefix') format('embedded-opentype'),
url('/static/fonts/OpenSans-ExtraBoldItalic-webfont.woff') format('woff'),
url('/static/fonts/OpenSans-ExtraBoldItalic-webfont.ttf') format('truetype'),
url('/static/fonts/OpenSans-ExtraBoldItalic-webfont.svg#OpenSansExtraboldItalic') format('svg');
font-weight: 800;
font-style: italic;
}
<nav class="sequence-nav">
<nav aria-label="Section Navigation" class="sequence-nav">
<ol>
% for t in range(1,1+len(items)):
<li><a href="#" class="seq_inactive" id="tt_${ t }"></a></li>
......@@ -14,7 +14,7 @@
<div id="seq_content"></div>
<nav class="sequence-bottom">
<ul>
<ul aria-label="Section Navigation">
<li class="${ id }prev prev"><a href="#">Previous</a></li>
<li class="${ id }next next"><a href="#">Next</a></li>
</ul>
......
##This file is based on the template from the SimpleWiki source which carries the GPL license
<%inherit file="main.html"/>
<%namespace name='static' file='static_content.html'/>
<%block name="headextra">
<!-- <link rel="stylesheet" media="screen,print" href="/static/simplewiki/css/base.css" /> -->
<!-- <link rel="stylesheet" media="print" href="/static/simplewiki/css/base_print.css" /> -->
<!-- <link rel="stylesheet" href="/static/simplewiki/css/autosuggest_inquisitor.css" /> -->
<!-- <link rel="stylesheet" href="/static/css/local.css" type="text/css" media="all" /> -->
<script type="text/javascript" src="/static/js/simplewiki/bsn.AutoSuggest_c_2.0.js"></script>
<script type="text/javascript" src="${static.url('js/simplewiki/bsn.AutoSuggest_c_2.0.js')}"></script>
<%!
from django.core.urlresolvers import reverse
......@@ -77,7 +74,7 @@
<section class="main-content">
<div class="wiki-wrapper">
<%block name="wiki_panel">
<div id="wiki_panel">
<div aria-label="Wiki Navigation" id="wiki_panel">
<h2>Course Wiki</h2>
<%
if (wiki_article is not UNDEFINED):
......
<%!
from staticfiles.storage import staticfiles_storage
from pipeline_mako import compressed_css, compressed_js
from static_replace import replace_urls
%>
<%def name='url(file)'>${staticfiles_storage.url(file)}</%def>
<%def name='css(group)'>${compressed_css(group)}</%def>
<%def name='js(group)'>${compressed_js(group)}</%def>
<%def name='replace_urls(text)'>${replace_urls(text)}</%def>
......@@ -59,7 +59,7 @@ $("#open_close_accordion a").click(function(){
<section class="main-content">
<div class="book-wrapper">
<section class="book-sidebar">
<section aria-label="Textbook Navigation" class="book-sidebar">
<header id="open_close_accordion">
<h2>Table of Contents</h2>
<a href="#">close</a>
......
from django.conf import settings
from django.conf.urls.defaults import patterns, include, url
from django.contrib import admin
from django.contrib.staticfiles.urls import staticfiles_urlpatterns
from django.conf.urls.static import static
import django.contrib.auth.views
......@@ -67,10 +67,11 @@ if settings.COURSEWARE_ENABLED:
url(r'^edit_circuit/(?P<circuit>[^/]*)$', 'circuit.views.edit_circuit'),
url(r'^save_circuit/(?P<circuit>[^/]*)$', 'circuit.views.save_circuit'),
url(r'^calculate$', 'util.views.calculate'),
url(r'^heartbeat$', include('heartbeat.urls')),
)
if settings.ENABLE_MULTICOURSE:
urlpatterns += (url(r'^mitxhome$', 'util.views.mitxhome'),)
urlpatterns += (url(r'^mitxhome$', 'multicourse.views.mitxhome'),)
if settings.QUICKEDIT:
urlpatterns += (url(r'^quickedit/(?P<id>[^/]*)$', 'courseware.views.quickedit'),)
......@@ -90,6 +91,4 @@ if settings.DEBUG:
urlpatterns = patterns(*urlpatterns)
if settings.DEBUG:
urlpatterns += staticfiles_urlpatterns()
urlpatterns += static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
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