diff --git a/common/lib/xmodule/xmodule/course_module.py b/common/lib/xmodule/xmodule/course_module.py index 54e532cb24..71c0d761ef 100644 --- a/common/lib/xmodule/xmodule/course_module.py +++ b/common/lib/xmodule/xmodule/course_module.py @@ -21,7 +21,15 @@ class CourseDescriptor(SequenceDescriptor): self.title = title self.book_url = book_url 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 def table_of_contents(self): diff --git a/lms/djangoapps/staticbook/views.py b/lms/djangoapps/staticbook/views.py index 37087af597..fabb8b861c 100644 --- a/lms/djangoapps/staticbook/views.py +++ b/lms/djangoapps/staticbook/views.py @@ -7,7 +7,7 @@ from courseware.courses import get_course_with_access from lxml import etree @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') staff_access = has_access(request.user, course, 'staff') @@ -15,10 +15,15 @@ def index(request, course_id, book_index, page=0): textbook = course.textbooks[book_index] table_of_contents = textbook.table_of_contents + if page is None: + page = textbook.start_page + return render_to_response('staticbook.html', {'book_index': book_index, 'page': int(page), 'course': course, 'book_url': textbook.book_url, 'table_of_contents': table_of_contents, + 'start_page' : textbook.start_page, + 'end_page' : textbook.end_page, 'staff_access': staff_access}) def index_shifted(request, course_id, page): diff --git a/lms/templates/staticbook.html b/lms/templates/staticbook.html index 6eec836c3a..ab92d22257 100644 --- a/lms/templates/staticbook.html +++ b/lms/templates/staticbook.html @@ -38,14 +38,14 @@ function goto_page(n) { function prev_page() { var newpage=page-1; - if(newpage<0) newpage=0; + if(newpage< ${start_page}) newpage=${start_page}; goto_page(newpage); log_event("book", {"type":"prevpage","new":page}); } function next_page() { var newpage=page+1; - if(newpage>1008) newpage=1008; + if(newpage> ${end_page}) newpage=${end_page}; goto_page(newpage); log_event("book", {"type":"nextpage","new":page}); }