From: Charles Connell Date: Thu, 16 Jan 2014 00:33:35 +0000 (-0500) Subject: Optimize page load X-Git-Tag: release-20150131~256 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=c6e74e13ed0356d5e6f4dbe0bbf2c3d7b924228a;p=oweals%2Fkarmaworld.git Optimize page load --- diff --git a/karmaworld/assets/css/global.css b/karmaworld/assets/css/global.css index dfe23a9..29caf9b 100644 --- a/karmaworld/assets/css/global.css +++ b/karmaworld/assets/css/global.css @@ -901,3 +901,27 @@ ul.socialaccount_providers li { } +/* FOR LARGE SCREENS ONLY */ +@media only screen and (min-width: 768px) { + /* Front page intro text, large on wide, resize on small */ + #subhead span { + font-size: 22px; + } + + /* make some fields of the frontpage table a larger font, but only when large */ + table#course_list .table-font { + font-family: "MuseoSlab-300"; + font-size: 18px; + font-style: normal; + } + + table#course_list tr td:last-child { + /* override some vertical margin spacing for the front page table */ + margin-bottom: 0; + } + + + + + +} diff --git a/karmaworld/assets/css/media.css b/karmaworld/assets/css/media.css deleted file mode 100644 index 62abfb0..0000000 --- a/karmaworld/assets/css/media.css +++ /dev/null @@ -1,24 +0,0 @@ -/* FOR LARGE SCREENS ONLY */ -@media only screen and (min-width: 768px) { - /* Front page intro text, large on wide, resize on small */ - #subhead span { - font-size: 22px; - } - - /* make some fields of the frontpage table a larger font, but only when large */ - table#course_list .table-font { - font-family: "MuseoSlab-300"; - font-size: 18px; - font-style: normal; - } - - table#course_list tr td:last-child { - /* override some vertical margin spacing for the front page table */ - margin-bottom: 0; - } - - - - - -} diff --git a/karmaworld/assets/js/jquery-scrollto.js b/karmaworld/assets/js/jquery-scrollto.js deleted file mode 100644 index 26b2bd9..0000000 --- a/karmaworld/assets/js/jquery-scrollto.js +++ /dev/null @@ -1,261 +0,0 @@ -/*global define:false require:false */ -(function (name, context, definition) { - if (typeof module != 'undefined' && module.exports) module.exports = definition(); - else if (typeof define == 'function' && define.amd) define(definition); - else context[name] = definition(); -})('jquery-scrollto', this, function(){ - // Prepare - var jQuery, $, ScrollTo; - jQuery = $ = window.jQuery || require('jquery'); - - // Fix scrolling animations on html/body on safari - $.propHooks.scrollTop = $.propHooks.scrollLeft = { - get: function(elem,prop) { - var result = null; - if ( elem.tagName === 'HTML' || elem.tagName === 'BODY' ) { - if ( prop === 'scrollLeft' ) { - result = window.scrollX; - } else if ( prop === 'scrollTop' ) { - result = window.scrollY; - } - } - if ( result == null ) { - result = elem[prop]; - } - return result; - } - }; - $.Tween.propHooks.scrollTop = $.Tween.propHooks.scrollLeft = { - get: function(tween) { - return $.propHooks.scrollTop.get(tween.elem, tween.prop); - }, - set: function(tween) { - // Our safari fix - if ( tween.elem.tagName === 'HTML' || tween.elem.tagName === 'BODY' ) { - // Defaults - tween.options.bodyScrollLeft = (tween.options.bodyScrollLeft || window.scrollX); - tween.options.bodyScrollTop = (tween.options.bodyScrollTop || window.scrollY); - - // Apply - if ( tween.prop === 'scrollLeft' ) { - tween.options.bodyScrollLeft = Math.round(tween.now); - } - else if ( tween.prop === 'scrollTop' ) { - tween.options.bodyScrollTop = Math.round(tween.now); - } - - // Apply - window.scrollTo(tween.options.bodyScrollLeft, tween.options.bodyScrollTop); - } - // jQuery's IE8 Fix - else if ( tween.elem.nodeType && tween.elem.parentNode ) { - tween.elem[ tween.prop ] = tween.now; - } - } - }; - - // jQuery ScrollTo - ScrollTo = { - // Configuration - config: { - duration: 400, - easing: 'swing', - callback: undefined, - durationMode: 'each', - offsetTop: 0, - offsetLeft: 0 - }, - - // Set Configuration - configure: function(options){ - // Apply Options to Config - $.extend(ScrollTo.config, options||{}); - - // Chain - return this; - }, - - // Perform the Scroll Animation for the Collections - // We use $inline here, so we can determine the actual offset start for each overflow:scroll item - // Each collection is for each overflow:scroll item - scroll: function(collections, config){ - // Prepare - var collection, $container, container, $target, $inline, position, containerTagName, - containerScrollTop, containerScrollLeft, - containerScrollTopEnd, containerScrollLeftEnd, - startOffsetTop, targetOffsetTop, targetOffsetTopAdjusted, - startOffsetLeft, targetOffsetLeft, targetOffsetLeftAdjusted, - scrollOptions, - callback; - - // Determine the Scroll - collection = collections.pop(); - $container = collection.$container; - $target = collection.$target; - containerTagName = $container.prop('tagName'); - - // Prepare the Inline Element of the Container - $inline = $('').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/assets/js/jquery-scrollto.min.js b/karmaworld/assets/js/jquery-scrollto.min.js new file mode 100644 index 0000000..d04f3df --- /dev/null +++ b/karmaworld/assets/js/jquery-scrollto.min.js @@ -0,0 +1 @@ +(function(name,context,definition){if(typeof module!='undefined'&&module.exports)module.exports=definition();else if(typeof define=='function'&&define.amd)define(definition);else context[name]=definition()})('jquery-scrollto',this,function(){var jQuery,$,ScrollTo;jQuery=$=window.jQuery||require('jquery');$.propHooks.scrollTop=$.propHooks.scrollLeft={get:function(elem,prop){var result=null;if(elem.tagName==='HTML'||elem.tagName==='BODY'){if(prop==='scrollLeft'){result=window.scrollX}else if(prop==='scrollTop'){result=window.scrollY}}if(result==null){result=elem[prop]}return result}};$.Tween.propHooks.scrollTop=$.Tween.propHooks.scrollLeft={get:function(tween){return $.propHooks.scrollTop.get(tween.elem,tween.prop)},set:function(tween){if(tween.elem.tagName==='HTML'||tween.elem.tagName==='BODY'){tween.options.bodyScrollLeft=(tween.options.bodyScrollLeft||window.scrollX);tween.options.bodyScrollTop=(tween.options.bodyScrollTop||window.scrollY);if(tween.prop==='scrollLeft'){tween.options.bodyScrollLeft=Math.round(tween.now)}else if(tween.prop==='scrollTop'){tween.options.bodyScrollTop=Math.round(tween.now)}window.scrollTo(tween.options.bodyScrollLeft,tween.options.bodyScrollTop)}else if(tween.elem.nodeType&&tween.elem.parentNode){tween.elem[tween.prop]=tween.now}}};ScrollTo={config:{duration:400,easing:'swing',callback:undefined,durationMode:'each',offsetTop:0,offsetLeft:0},configure:function(options){$.extend(ScrollTo.config,options||{});return this},scroll:function(collections,config){var collection,$container,container,$target,$inline,position,containerTagName,containerScrollTop,containerScrollLeft,containerScrollTopEnd,containerScrollLeftEnd,startOffsetTop,targetOffsetTop,targetOffsetTopAdjusted,startOffsetLeft,targetOffsetLeft,targetOffsetLeftAdjusted,scrollOptions,callback;collection=collections.pop();$container=collection.$container;$target=collection.$target;containerTagName=$container.prop('tagName');$inline=$('').css({'position':'absolute','top':'0px','left':'0px'});position=$container.css('position');$container.css({position:'relative'});$inline.appendTo($container);startOffsetTop=$inline.offset().top;targetOffsetTop=$target.offset().top;targetOffsetTopAdjusted=targetOffsetTop-startOffsetTop-parseInt(config.offsetTop,10);startOffsetLeft=$inline.offset().left;targetOffsetLeft=$target.offset().left;targetOffsetLeftAdjusted=targetOffsetLeft-startOffsetLeft-parseInt(config.offsetLeft,10);containerScrollTop=$container.prop('scrollTop');containerScrollLeft=$container.prop('scrollLeft');$inline.remove();$container.css({position:position});scrollOptions={};callback=function(event){if(collections.length===0){if(typeof config.callback==='function'){config.callback()}}else{ScrollTo.scroll(collections,config)}return true};if(config.onlyIfOutside){containerScrollTopEnd=containerScrollTop+$container.height();containerScrollLeftEnd=containerScrollLeft+$container.width();if(containerScrollTop */function( window, document, undefined ) { - -(function( factory ) { - "use strict"; - - // Define as an AMD module if possible - if ( typeof define === 'function' && define.amd ) - { - define( ['jquery'], factory ); - } - /* Define using browser globals otherwise - * Prevent multiple instantiations if the script is loaded twice - */ - else if ( jQuery && !jQuery.fn.dataTable ) - { - factory( jQuery ); - } -} -(/** @lends */function( $ ) { - "use strict"; - /** - * DataTables is a plug-in for the jQuery Javascript library. It is a - * highly flexible tool, based upon the foundations of progressive - * enhancement, which will add advanced interaction controls to any - * HTML table. For a full list of features please refer to - * DataTables.net. - * - * Note that the DataTable object is not a global variable but is - * aliased to jQuery.fn.DataTable and jQuery.fn.dataTable through which - * it may be accessed. - * - * @class - * @param {object} [oInit={}] Configuration object for DataTables. Options - * are defined by {@link DataTable.defaults} - * @requires jQuery 1.3+ - * - * @example - * // Basic initialisation - * $(document).ready( function { - * $('#example').dataTable(); - * } ); - * - * @example - * // Initialisation with configuration options - in this case, disable - * // pagination and sorting. - * $(document).ready( function { - * $('#example').dataTable( { - * "bPaginate": false, - * "bSort": false - * } ); - * } ); - */ - var DataTable = function( oInit ) - { - - - /** - * Add a column to the list used for the table with default values - * @param {object} oSettings dataTables settings object - * @param {node} nTh The th element for this column - * @memberof DataTable#oApi - */ - function _fnAddColumn( oSettings, nTh ) - { - var oDefaults = DataTable.defaults.columns; - var iCol = oSettings.aoColumns.length; - var oCol = $.extend( {}, DataTable.models.oColumn, oDefaults, { - "sSortingClass": oSettings.oClasses.sSortable, - "sSortingClassJUI": oSettings.oClasses.sSortJUI, - "nTh": nTh ? nTh : document.createElement('th'), - "sTitle": oDefaults.sTitle ? oDefaults.sTitle : nTh ? nTh.innerHTML : '', - "aDataSort": oDefaults.aDataSort ? oDefaults.aDataSort : [iCol], - "mData": oDefaults.mData ? oDefaults.oDefaults : iCol - } ); - oSettings.aoColumns.push( oCol ); - - /* Add a column specific filter */ - if ( oSettings.aoPreSearchCols[ iCol ] === undefined || oSettings.aoPreSearchCols[ iCol ] === null ) - { - oSettings.aoPreSearchCols[ iCol ] = $.extend( {}, DataTable.models.oSearch ); - } - else - { - var oPre = oSettings.aoPreSearchCols[ iCol ]; - - /* Don't require that the user must specify bRegex, bSmart or bCaseInsensitive */ - if ( oPre.bRegex === undefined ) - { - oPre.bRegex = true; - } - - if ( oPre.bSmart === undefined ) - { - oPre.bSmart = true; - } - - if ( oPre.bCaseInsensitive === undefined ) - { - oPre.bCaseInsensitive = true; - } - } - - /* Use the column options function to initialise classes etc */ - _fnColumnOptions( oSettings, iCol, null ); - } - - - /** - * Apply options for a column - * @param {object} oSettings dataTables settings object - * @param {int} iCol column index to consider - * @param {object} oOptions object with sType, bVisible and bSearchable etc - * @memberof DataTable#oApi - */ - function _fnColumnOptions( oSettings, iCol, oOptions ) - { - var oCol = oSettings.aoColumns[ iCol ]; - - /* User specified column options */ - if ( oOptions !== undefined && oOptions !== null ) - { - /* Backwards compatibility for mDataProp */ - if ( oOptions.mDataProp && !oOptions.mData ) - { - oOptions.mData = oOptions.mDataProp; - } - - if ( oOptions.sType !== undefined ) - { - oCol.sType = oOptions.sType; - oCol._bAutoType = false; - } - - $.extend( oCol, oOptions ); - _fnMap( oCol, oOptions, "sWidth", "sWidthOrig" ); - - /* iDataSort to be applied (backwards compatibility), but aDataSort will take - * priority if defined - */ - if ( oOptions.iDataSort !== undefined ) - { - oCol.aDataSort = [ oOptions.iDataSort ]; - } - _fnMap( oCol, oOptions, "aDataSort" ); - } - - /* Cache the data get and set functions for speed */ - var mRender = oCol.mRender ? _fnGetObjectDataFn( oCol.mRender ) : null; - var mData = _fnGetObjectDataFn( oCol.mData ); - - oCol.fnGetData = function (oData, sSpecific) { - var innerData = mData( oData, sSpecific ); - - if ( oCol.mRender && (sSpecific && sSpecific !== '') ) - { - return mRender( innerData, sSpecific, oData ); - } - return innerData; - }; - oCol.fnSetData = _fnSetObjectDataFn( oCol.mData ); - - /* Feature sorting overrides column specific when off */ - if ( !oSettings.oFeatures.bSort ) - { - oCol.bSortable = false; - } - - /* Check that the class assignment is correct for sorting */ - if ( !oCol.bSortable || - ($.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1) ) - { - oCol.sSortingClass = oSettings.oClasses.sSortableNone; - oCol.sSortingClassJUI = ""; - } - else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) == -1 ) - { - oCol.sSortingClass = oSettings.oClasses.sSortable; - oCol.sSortingClassJUI = oSettings.oClasses.sSortJUI; - } - else if ( $.inArray('asc', oCol.asSorting) != -1 && $.inArray('desc', oCol.asSorting) == -1 ) - { - oCol.sSortingClass = oSettings.oClasses.sSortableAsc; - oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIAscAllowed; - } - else if ( $.inArray('asc', oCol.asSorting) == -1 && $.inArray('desc', oCol.asSorting) != -1 ) - { - oCol.sSortingClass = oSettings.oClasses.sSortableDesc; - oCol.sSortingClassJUI = oSettings.oClasses.sSortJUIDescAllowed; - } - } - - - /** - * Adjust the table column widths for new data. Note: you would probably want to - * do a redraw after calling this function! - * @param {object} oSettings dataTables settings object - * @memberof DataTable#oApi - */ - function _fnAdjustColumnSizing ( oSettings ) - { - /* Not interested in doing column width calculation if auto-width is disabled */ - if ( oSettings.oFeatures.bAutoWidth === false ) - { - return false; - } - - _fnCalculateColumnWidths( oSettings ); - for ( var i=0 , iLen=oSettings.aoColumns.length ; i