mirror of
https://github.com/andre-wojtowicz/elearning-scorm-exam-template.git
synced 2024-11-03 13:55:28 +01:00
192 lines
4.5 KiB
JavaScript
192 lines
4.5 KiB
JavaScript
|
/***********************************************************************************
|
||
|
* Add Array.indexOf *
|
||
|
***********************************************************************************/
|
||
|
(function ()
|
||
|
{
|
||
|
if (typeof Array.prototype.indexOf !== 'function')
|
||
|
{
|
||
|
Array.prototype.indexOf = function(searchElement, fromIndex)
|
||
|
{
|
||
|
for (var i = (fromIndex || 0), j = this.length; i < j; i += 1)
|
||
|
{
|
||
|
if ((searchElement === undefined) || (searchElement === null))
|
||
|
{
|
||
|
if (this[i] === searchElement)
|
||
|
{
|
||
|
return i;
|
||
|
}
|
||
|
}
|
||
|
else if (this[i] === searchElement)
|
||
|
{
|
||
|
return i;
|
||
|
}
|
||
|
}
|
||
|
return -1;
|
||
|
};
|
||
|
}
|
||
|
})();
|
||
|
/**********************************************************************************/
|
||
|
|
||
|
(function ($,undefined)
|
||
|
{
|
||
|
var toasting =
|
||
|
{
|
||
|
gettoaster : function ()
|
||
|
{
|
||
|
var toaster = $('#' + settings.toaster.id);
|
||
|
|
||
|
if(toaster.length < 1)
|
||
|
{
|
||
|
toaster = $(settings.toaster.template).attr('id', settings.toaster.id).css(settings.toaster.css).addClass(settings.toaster['class']);
|
||
|
|
||
|
if ((settings.stylesheet) && (!$("link[href=" + settings.stylesheet + "]").length))
|
||
|
{
|
||
|
$('head').appendTo('<link rel="stylesheet" href="' + settings.stylesheet + '">');
|
||
|
}
|
||
|
|
||
|
$(settings.toaster.container).append(toaster);
|
||
|
}
|
||
|
|
||
|
return toaster;
|
||
|
},
|
||
|
|
||
|
notify : function (title, message, priority)
|
||
|
{
|
||
|
var $toaster = this.gettoaster();
|
||
|
var $toast = $(settings.toast.template.replace('%priority%', priority)).hide().css(settings.toast.css).addClass(settings.toast['class']);
|
||
|
|
||
|
$('.title', $toast).css(settings.toast.csst).html(title);
|
||
|
$('.message', $toast).css(settings.toast.cssm).html(message);
|
||
|
|
||
|
if ((settings.debug) && (window.console))
|
||
|
{
|
||
|
console.log(toast);
|
||
|
}
|
||
|
|
||
|
$toaster.append(settings.toast.display($toast));
|
||
|
|
||
|
if (settings.donotdismiss.indexOf(priority) === -1)
|
||
|
{
|
||
|
var timeout = (typeof settings.timeout === 'number') ? settings.timeout : ((typeof settings.timeout === 'object') && (priority in settings.timeout)) ? settings.timeout[priority] : 1500;
|
||
|
setTimeout(function()
|
||
|
{
|
||
|
settings.toast.remove($toast, function()
|
||
|
{
|
||
|
$toast.remove();
|
||
|
});
|
||
|
}, timeout);
|
||
|
}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
var defaults =
|
||
|
{
|
||
|
'toaster' :
|
||
|
{
|
||
|
'id' : 'toaster',
|
||
|
'container' : 'body',
|
||
|
'template' : '<div></div>',
|
||
|
'class' : 'toaster',
|
||
|
'css' :
|
||
|
{
|
||
|
'position' : 'fixed',
|
||
|
'top' : '10px',
|
||
|
'right' : '10px',
|
||
|
'width' : '300px',
|
||
|
'zIndex' : 50000
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'toast' :
|
||
|
{
|
||
|
'template' :
|
||
|
'<div class="alert alert-%priority% alert-dismissible" role="alert">' +
|
||
|
'<button type="button" class="close" data-dismiss="alert">' +
|
||
|
'<span aria-hidden="true">×</span>' +
|
||
|
'<span class="sr-only">Close</span>' +
|
||
|
'</button>' +
|
||
|
'<span class="title"></span>: <span class="message"></span>' +
|
||
|
'</div>',
|
||
|
|
||
|
'defaults' :
|
||
|
{
|
||
|
'title' : 'Notice',
|
||
|
'priority' : 'success'
|
||
|
},
|
||
|
|
||
|
'css' : {},
|
||
|
'cssm' : {},
|
||
|
'csst' : { 'fontWeight' : 'bold' },
|
||
|
|
||
|
'fade' : 'slow',
|
||
|
|
||
|
'display' : function ($toast)
|
||
|
{
|
||
|
return $toast.fadeIn(settings.toast.fade);
|
||
|
},
|
||
|
|
||
|
'remove' : function ($toast, callback)
|
||
|
{
|
||
|
return $toast.animate(
|
||
|
{
|
||
|
opacity : '0',
|
||
|
padding : '0px',
|
||
|
margin : '0px',
|
||
|
height : '0px'
|
||
|
},
|
||
|
{
|
||
|
duration : settings.toast.fade,
|
||
|
complete : callback
|
||
|
}
|
||
|
);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'debug' : false,
|
||
|
'timeout' : 1500,
|
||
|
'stylesheet' : null,
|
||
|
'donotdismiss' : []
|
||
|
};
|
||
|
|
||
|
var settings = {};
|
||
|
$.extend(settings, defaults);
|
||
|
|
||
|
$.toaster = function (options)
|
||
|
{
|
||
|
if (typeof options === 'object')
|
||
|
{
|
||
|
if ('settings' in options)
|
||
|
{
|
||
|
settings = $.extend(true, settings, options.settings);
|
||
|
}
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
var values = Array.prototype.slice.call(arguments, 0);
|
||
|
var labels = ['message', 'title', 'priority'];
|
||
|
options = {};
|
||
|
|
||
|
for (var i = 0, l = values.length; i < l; i += 1)
|
||
|
{
|
||
|
options[labels[i]] = values[i];
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var title = (('title' in options) && (typeof options.title === 'string')) ? options.title : settings.toast.defaults.title;
|
||
|
var message = ('message' in options) ? options.message : null;
|
||
|
var priority = (('priority' in options) && (typeof options.priority === 'string')) ? options.priority : settings.toast.defaults.priority;
|
||
|
|
||
|
if (message !== null)
|
||
|
{
|
||
|
toasting.notify(title, message, priority);
|
||
|
}
|
||
|
};
|
||
|
|
||
|
$.toaster.reset = function ()
|
||
|
{
|
||
|
settings = {};
|
||
|
$.extend(settings, defaults);
|
||
|
};
|
||
|
})(jQuery);
|
||
|
|
||
|
$.toaster({ settings : {timeout: 10000} });
|