Commit b4585ffe by Matthew Mongeau

Course navigation work

parent 79b9ba8f
...@@ -67,7 +67,7 @@ def info(request, course_id=None): ...@@ -67,7 +67,7 @@ def info(request, course_id=None):
# We're bypassing the templating system for this part. We should cache # We're bypassing the templating system for this part. We should cache
# this. # this.
sections = ["updates", "handouts", "guest_updates", "guest_handouts"] sections = ["updates", "handouts", "guest_updates", "guest_handouts"]
sections_to_content = {} sections_to_content = { 'course': course }
for section in sections: for section in sections:
filename = section + ".html" filename = section + ".html"
with open(course.path / "info" / filename) as f: with open(course.path / "info" / filename) as f:
......
...@@ -44,6 +44,7 @@ class I4xSystem(object): ...@@ -44,6 +44,7 @@ class I4xSystem(object):
filestore - A filestore ojbect. Defaults to an instance of OSFS based at filestore - A filestore ojbect. Defaults to an instance of OSFS based at
settings.DATA_DIR. settings.DATA_DIR.
''' '''
self.course = course
self.ajax_url = ajax_url self.ajax_url = ajax_url
self.track_function = track_function self.track_function = track_function
self.filestore = filestore self.filestore = filestore
......
...@@ -70,7 +70,7 @@ def gradebook(request): ...@@ -70,7 +70,7 @@ def gradebook(request):
if 'course_admin' not in user_groups(request.user): if 'course_admin' not in user_groups(request.user):
raise Http404 raise Http404
coursename = multicourse_settings.get_coursename_from_request(request) course = settings.COURSES_BY_ID[course_id]
student_objects = User.objects.all()[:100] student_objects = User.objects.all()[:100]
student_info = [] student_info = []
...@@ -89,15 +89,15 @@ def gradebook(request): ...@@ -89,15 +89,15 @@ def gradebook(request):
'realname': UserProfile.objects.get(user=student).name 'realname': UserProfile.objects.get(user=student).name
}) })
return render_to_response('gradebook.html', {'students': student_info}) return render_to_response('gradebook.html', {'students': student_info, 'course': course})
@login_required @login_required
@cache_control(no_cache=True, no_store=True, must_revalidate=True) @cache_control(no_cache=True, no_store=True, must_revalidate=True)
def profile(request, student_id=None): def profile(request, course_id=None, student_id=None):
''' User profile. Show username, location, etc, as well as grades . ''' User profile. Show username, location, etc, as well as grades .
We need to allow the user to change some of these settings .''' We need to allow the user to change some of these settings .'''
course = settings.COURSES_BY_ID[course_id]
if student_id is None: if student_id is None:
student = request.user student = request.user
else: else:
...@@ -197,12 +197,16 @@ def index(request, course=None, chapter=None, section=None, ...@@ -197,12 +197,16 @@ def index(request, course=None, chapter=None, section=None,
if not settings.COURSEWARE_ENABLED: if not settings.COURSEWARE_ENABLED:
return redirect('/') return redirect('/')
course = clean(get_course(request, course)) # course = clean(get_course(request, course))
if not multicourse_settings.is_valid_course(course): # if not multicourse_settings.is_valid_course(course):
return redirect('/') # return redirect('/')
try:
course = settings.COURSES_BY_ID[course_id]
except KeyError:
raise Http404("Course not found")
# keep track of current course being viewed in django's request.session # keep track of current course being viewed in django's request.session
request.session['coursename'] = course request.session['coursename'] = course.title
chapter = clean(chapter) chapter = clean(chapter)
section = clean(section) section = clean(section)
...@@ -210,7 +214,8 @@ def index(request, course=None, chapter=None, section=None, ...@@ -210,7 +214,8 @@ def index(request, course=None, chapter=None, section=None,
context = { context = {
'csrf': csrf(request)['csrf_token'], 'csrf': csrf(request)['csrf_token'],
'accordion': render_accordion(request, course, chapter, section), 'accordion': render_accordion(request, course, chapter, section),
'COURSE_TITLE': multicourse_settings.get_course_title(course), 'COURSE_TITLE': course.title,
'course': course,
'init': '', 'init': '',
'content': '' 'content': ''
} }
......
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from mitxmako.shortcuts import render_to_response from mitxmako.shortcuts import render_to_response
from django.conf import settings
@login_required @login_required
def index(request, page=0): def index(request, course_id=None, page=0):
return render_to_response('staticbook.html',{'page':int(page)}) course = settings.COURSES_BY_ID[course_id]
return render_to_response('staticbook.html',{'page':int(page), 'course': course})
def index_shifted(request, page): def index_shifted(request, page):
return index(request, int(page)+24) return index(request, int(page)+24)
...@@ -6,19 +6,22 @@ def url_class(url): ...@@ -6,19 +6,22 @@ def url_class(url):
return "active" return "active"
return "" return ""
%> %>
<%!
from django.core.urlresolvers import reverse
%>
<nav class="${active_page} course-material"> <nav class="${active_page} course-material">
<div class="inner-wrapper"> <div class="inner-wrapper">
<ol class="course-tabs"> <ol class="course-tabs">
<li class="courseware"><a href="${ MITX_ROOT_URL }/courseware/" class="${url_class('courseware')}">Courseware</a></li> <li class="courseware"><a href="${reverse('courseware', args=[course.id])}" class="${url_class('courseware')}">Courseware</a></li>
<li class="info"><a href="${ MITX_ROOT_URL }/info" class="${url_class('info')}">Course Info</a></li> <li class="info"><a href="${reverse('info', args=[course.id])}" class="${url_class('info')}">Course Info</a></li>
% if user.is_authenticated(): % if user.is_authenticated():
<li class="book"><a href="${ MITX_ROOT_URL }/book" class="${url_class('book')}">Textbook</a></li> <li class="book"><a href="${reverse('book', args=[course.id])}" class="${url_class('book')}">Textbook</a></li>
<li class="discussion"><a href="${ MITX_ROOT_URL }/discussion/questions/">Discussion</a></li> <li class="discussion"><a href="${ MITX_ROOT_URL }/discussion/questions/">Discussion</a></li>
% endif % endif
<li class="wiki"><a href="${ MITX_ROOT_URL }/wiki/view/" class="${url_class('wiki')}">Wiki</a></li> <li class="wiki"><a href="${reverse('wiki_root')}" class="${url_class('wiki')}">Wiki</a></li>
% if user.is_authenticated(): % if user.is_authenticated():
<li class="profile"><a href="${ MITX_ROOT_URL }/profile" class="${url_class('profile')}">Profile</a></li> <li class="profile"><a href="${reverse('profile', args=[course.id])}" class="${url_class('profile')}">Profile</a></li>
% endif % endif
</ol> </ol>
</div> </div>
......
...@@ -49,11 +49,10 @@ if settings.PERFSTATS: ...@@ -49,11 +49,10 @@ if settings.PERFSTATS:
if settings.COURSEWARE_ENABLED: if settings.COURSEWARE_ENABLED:
urlpatterns += ( urlpatterns += (
url(r'^courseware/$', 'courseware.views.index', name="courseware"),
url(r'^wiki/', include('simplewiki.urls')), url(r'^wiki/', include('simplewiki.urls')),
url(r'^masquerade/', include('masquerade.urls')), url(r'^masquerade/', include('masquerade.urls')),
url(r'^courseware/(?P<course>[^/]*)/(?P<chapter>[^/]*)/(?P<section>[^/]*)/(?P<position>[^/]*)$', 'courseware.views.index'), url(r'^courseware/(?P<course>[^/]*)/(?P<chapter>[^/]*)/(?P<section>[^/]*)/(?P<position>[^/]*)$', 'courseware.views.index'),
url(r'^courseware/(?P<course>[^/]*)/(?P<chapter>[^/]*)/(?P<section>[^/]*)/$', 'courseware.views.index', name="courseware_section"), # url(r'^courseware/(?P<course>[^/]*)/(?P<chapter>[^/]*)/(?P<section>[^/]*)/$', 'courseware.views.index', name="courseware_section"),
url(r'^courseware/(?P<course>[^/]*)/(?P<chapter>[^/]*)/$', 'courseware.views.index', name="courseware_chapter"), url(r'^courseware/(?P<course>[^/]*)/(?P<chapter>[^/]*)/$', 'courseware.views.index', name="courseware_chapter"),
url(r'^courseware/(?P<course>[^/]*)/$', 'courseware.views.index', name="courseware_course"), url(r'^courseware/(?P<course>[^/]*)/$', 'courseware.views.index', name="courseware_course"),
url(r'^jumpto/(?P<probname>[^/]+)/$', 'courseware.views.jump_to'), url(r'^jumpto/(?P<probname>[^/]+)/$', 'courseware.views.jump_to'),
...@@ -74,8 +73,12 @@ if settings.COURSEWARE_ENABLED: ...@@ -74,8 +73,12 @@ if settings.COURSEWARE_ENABLED:
# Multicourse related: # Multicourse related:
url(r'^courses$', 'courseware.views.courses'), url(r'^courses$', 'courseware.views.courses'),
url(r'^courses/(?P<course_id>[^/]*)/info$', 'util.views.info'), url(r'^courses/(?P<course_id>[^/]*)/info$', 'util.views.info', name="info"),
url(r'^courses/(?P<course_id>[^/]*)/courseware$', 'courseware.views.index'), url(r'^courses/(?P<course_id>[^/]*)/book$', 'staticbook.views.index', name="book"),
url(r'^courses/(?P<course_id>[^/]*)/courseware/?$', 'courseware.views.index', name="courseware"),
url(r'^courses/(?P<course_id>[^/]*)/courseware/(?P<chapter>[^/]*)/(?P<section>[^/]*)/$', 'courseware.views.index', name="courseware_section"),
url(r'^courses/(?P<course_id>[^/]*)/profile$', 'courseware.views.profile', name="profile"),
url(r'^courses/(?P<course_id>[^/]*)/profile/(?P<student_id>[^/]*)/$', 'courseware.views.profile'),
) )
......
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