Commit f9a49ece by David Ormsbee

Dynamically find the start and end pages of a textbook instead of hardcoding to 6.002 values

parent 10a838cb
...@@ -21,7 +21,15 @@ class CourseDescriptor(SequenceDescriptor): ...@@ -21,7 +21,15 @@ class CourseDescriptor(SequenceDescriptor):
self.title = title self.title = title
self.book_url = book_url self.book_url = book_url
self.table_of_contents = self._get_toc_from_s3() self.table_of_contents = self._get_toc_from_s3()
self.start_page = int(self.table_of_contents[0].attrib['page'])
# The last page should be the last element in the table of contents,
# but it may be nested. So recurse all the way down the last element
last_el = self.table_of_contents[-1]
while last_el.getchildren():
last_el = last_el[-1]
self.end_page = int(last_el.attrib['page'])
@property @property
def table_of_contents(self): def table_of_contents(self):
......
...@@ -7,7 +7,7 @@ from courseware.courses import get_course_with_access ...@@ -7,7 +7,7 @@ from courseware.courses import get_course_with_access
from lxml import etree from lxml import etree
@login_required @login_required
def index(request, course_id, book_index, page=0): def index(request, course_id, book_index, page=None):
course = get_course_with_access(request.user, course_id, 'load') course = get_course_with_access(request.user, course_id, 'load')
staff_access = has_access(request.user, course, 'staff') staff_access = has_access(request.user, course, 'staff')
...@@ -15,10 +15,15 @@ def index(request, course_id, book_index, page=0): ...@@ -15,10 +15,15 @@ def index(request, course_id, book_index, page=0):
textbook = course.textbooks[book_index] textbook = course.textbooks[book_index]
table_of_contents = textbook.table_of_contents table_of_contents = textbook.table_of_contents
if page is None:
page = textbook.start_page
return render_to_response('staticbook.html', return render_to_response('staticbook.html',
{'book_index': book_index, 'page': int(page), {'book_index': book_index, 'page': int(page),
'course': course, 'book_url': textbook.book_url, 'course': course, 'book_url': textbook.book_url,
'table_of_contents': table_of_contents, 'table_of_contents': table_of_contents,
'start_page' : textbook.start_page,
'end_page' : textbook.end_page,
'staff_access': staff_access}) 'staff_access': staff_access})
def index_shifted(request, course_id, page): def index_shifted(request, course_id, page):
......
...@@ -38,14 +38,14 @@ function goto_page(n) { ...@@ -38,14 +38,14 @@ function goto_page(n) {
function prev_page() { function prev_page() {
var newpage=page-1; var newpage=page-1;
if(newpage<0) newpage=0; if(newpage< ${start_page}) newpage=${start_page};
goto_page(newpage); goto_page(newpage);
log_event("book", {"type":"prevpage","new":page}); log_event("book", {"type":"prevpage","new":page});
} }
function next_page() { function next_page() {
var newpage=page+1; var newpage=page+1;
if(newpage>1008) newpage=1008; if(newpage> ${end_page}) newpage=${end_page};
goto_page(newpage); goto_page(newpage);
log_event("book", {"type":"nextpage","new":page}); log_event("book", {"type":"nextpage","new":page});
} }
......
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