From 825637627f576c7036d3c3a7345025ca56d6a70b Mon Sep 17 00:00:00 2001 From: Charles Connell Date: Fri, 13 Dec 2013 15:34:18 -0500 Subject: [PATCH] Add buttons in header --- karmaworld/apps/courses/views.py | 7 + .../assets/img/global_header_pluscourse.png | Bin 0 -> 10553 bytes .../{lightbox-add-course.js => add-course.js} | 18 +- karmaworld/assets/js/jquery-scrollto.js | 261 ++++++++++++++++++ karmaworld/templates/base.html | 1 + karmaworld/templates/courses/course_list.html | 3 +- karmaworld/templates/header.html | 15 +- karmaworld/templates/partial/add_course.html | 2 +- 8 files changed, 301 insertions(+), 6 deletions(-) create mode 100644 karmaworld/assets/img/global_header_pluscourse.png rename karmaworld/assets/js/{lightbox-add-course.js => add-course.js} (79%) create mode 100644 karmaworld/assets/js/jquery-scrollto.js diff --git a/karmaworld/apps/courses/views.py b/karmaworld/apps/courses/views.py index 4b0023f..717e245 100644 --- a/karmaworld/apps/courses/views.py +++ b/karmaworld/apps/courses/views.py @@ -36,6 +36,9 @@ class CourseListView(ListView, ModelFormMixin, ProcessFormView): # if there was an error in the form context['jump_to_form'] = True + # Include "Add Course" button in header + context['display_add_course'] = True + return context def get_success_url(self): @@ -64,6 +67,10 @@ class CourseDetailView(DetailView): """ filter the Course.note_set to return no Drafts """ kwargs = super(CourseDetailView, self).get_context_data() kwargs['note_set'] = self.object.note_set.filter(is_hidden=False) + + # Include "Add Note" button in header + kwargs['display_add_note'] = True + return kwargs diff --git a/karmaworld/assets/img/global_header_pluscourse.png b/karmaworld/assets/img/global_header_pluscourse.png new file mode 100644 index 0000000000000000000000000000000000000000..d4482b5149ec5b91370f017ef735901a90a06180 GIT binary patch literal 10553 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').css({ + 'position': 'absolute', + 'top': '0px', + 'left': '0px' + }); + position = $container.css('position'); + + // Insert the Inline Element of the Container + $container.css({position:'relative'}); + $inline.appendTo($container); + + // Determine the top offset + startOffsetTop = $inline.offset().top; + targetOffsetTop = $target.offset().top; + targetOffsetTopAdjusted = targetOffsetTop - startOffsetTop - parseInt(config.offsetTop,10); + + // Determine the left offset + startOffsetLeft = $inline.offset().left; + targetOffsetLeft = $target.offset().left; + targetOffsetLeftAdjusted = targetOffsetLeft - startOffsetLeft - parseInt(config.offsetLeft,10); + + // Determine current scroll positions + containerScrollTop = $container.prop('scrollTop'); + containerScrollLeft = $container.prop('scrollLeft'); + + // Reset the Inline Element of the Container + $inline.remove(); + $container.css({position:position}); + + // Prepare the scroll options + scrollOptions = {}; + + // Prepare the callback + callback = function(event){ + // Check + if ( collections.length === 0 ) { + // Callback + if ( typeof config.callback === 'function' ) { + config.callback(); + } + } + else { + // Recurse + ScrollTo.scroll(collections,config); + } + // Return true + return true; + }; + + // Handle if we only want to scroll if we are outside the viewport + if ( config.onlyIfOutside ) { + // Determine current scroll positions + containerScrollTopEnd = containerScrollTop + $container.height(); + containerScrollLeftEnd = containerScrollLeft + $container.width(); + + // Check if we are in the range of the visible area of the container + if ( containerScrollTop < targetOffsetTopAdjusted && targetOffsetTopAdjusted < containerScrollTopEnd ) { + targetOffsetTopAdjusted = containerScrollTop; + } + if ( containerScrollLeft < targetOffsetLeftAdjusted && targetOffsetLeftAdjusted < containerScrollLeftEnd ) { + targetOffsetLeftAdjusted = containerScrollLeft; + } + } + + // Determine the scroll options + if ( targetOffsetTopAdjusted !== containerScrollTop ) { + scrollOptions.scrollTop = targetOffsetTopAdjusted; + } + if ( targetOffsetLeftAdjusted !== containerScrollLeft ) { + scrollOptions.scrollLeft = targetOffsetLeftAdjusted; + } + + // Check to see if the scroll is necessary + if ( $container.prop('scrollHeight') === $container.width() ) { + delete scrollOptions.scrollTop; + } + if ( $container.prop('scrollWidth') === $container.width() ) { + delete scrollOptions.scrollLeft; + } + + // Perform the scroll + if ( scrollOptions.scrollTop != null || scrollOptions.scrollLeft != null ) { + $container.animate(scrollOptions, { + duration: config.duration, + easing: config.easing, + complete: callback + }); + } + else { + callback(); + } + + // Return true + return true; + }, + + // ScrollTo the Element using the Options + fn: function(options){ + // Prepare + var collections, config, $container, container; + collections = []; + + // Prepare + var $target = $(this); + if ( $target.length === 0 ) { + // Chain + return this; + } + + // Handle Options + config = $.extend({},ScrollTo.config,options); + + // Fetch + $container = $target.parent(); + container = $container.get(0); + + // Cycle through the containers + while ( ($container.length === 1) && (container !== document.body) && (container !== document) ) { + // Check Container for scroll differences + var containerScrollTop, containerScrollLeft; + containerScrollTop = $container.css('overflow-y') !== 'visible' && container.scrollHeight !== container.clientHeight; + containerScrollLeft = $container.css('overflow-x') !== 'visible' && container.scrollWidth !== container.clientWidth; + if ( containerScrollTop || containerScrollLeft ) { + // Push the Collection + collections.push({ + '$container': $container, + '$target': $target + }); + // Update the Target + $target = $container; + } + // Update the Container + $container = $container.parent(); + container = $container.get(0); + } + + // Add the final collection + collections.push({ + '$container': $('html'), + // document.body doesn't work in firefox, html works for all + // internet explorer starts at the beggining + '$target': $target + }); + + // Adjust the Config + if ( config.durationMode === 'all' ) { + config.duration /= collections.length; + } + + // Handle + ScrollTo.scroll(collections,config); + + // Chain + return this; + } + }; + + // Apply our extensions to jQuery + $.ScrollTo = $.ScrollTo || ScrollTo; + $.fn.ScrollTo = $.fn.ScrollTo || ScrollTo.fn; + + // Export + return ScrollTo; +}); \ No newline at end of file diff --git a/karmaworld/templates/base.html b/karmaworld/templates/base.html index 549b036..6a1ed28 100644 --- a/karmaworld/templates/base.html +++ b/karmaworld/templates/base.html @@ -20,6 +20,7 @@ + {% block pagescripts %} diff --git a/karmaworld/templates/courses/course_list.html b/karmaworld/templates/courses/course_list.html index 1858c2a..00f44dc 100644 --- a/karmaworld/templates/courses/course_list.html +++ b/karmaworld/templates/courses/course_list.html @@ -136,7 +136,7 @@ $(document).ready(function() {
-

+

@@ -152,7 +152,6 @@ $(document).ready(function() {

- {% endblock %} diff --git a/karmaworld/templates/header.html b/karmaworld/templates/header.html index 3e91f4c..b8385c6 100644 --- a/karmaworld/templates/header.html +++ b/karmaworld/templates/header.html @@ -9,7 +9,20 @@ -
+ {% if display_add_course %} +
+ +
+ {% endif %} + + {% if display_add_note %} +
+ + +
+ {% endif %} + + diff --git a/karmaworld/templates/partial/add_course.html b/karmaworld/templates/partial/add_course.html index e0ef993..99af04d 100644 --- a/karmaworld/templates/partial/add_course.html +++ b/karmaworld/templates/partial/add_course.html @@ -3,7 +3,7 @@ var json_course_list = "{% url 'json_school_list' %}" var csrf_token = "{{ csrf_token }}"; - +
-- 2.25.1