mirror of
https://github.com/silverstripe/silverstripe-framework
synced 2024-10-22 14:05:37 +02:00
73 lines
2.9 KiB
JavaScript
73 lines
2.9 KiB
JavaScript
|
/**
|
||
|
* jQuery.noticeAdd() and jQuery.noticeRemove()
|
||
|
* These functions create and remove growl-like notices
|
||
|
*
|
||
|
* Copyright (c) 2009 Tim Benniks
|
||
|
*
|
||
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
||
|
* of this software and associated documentation files (the "Software"), to deal
|
||
|
* in the Software without restriction, including without limitation the rights
|
||
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||
|
* copies of the Software, and to permit persons to whom the Software is
|
||
|
* furnished to do so, subject to the following conditions:
|
||
|
*
|
||
|
* The above copyright notice and this permission notice shall be included in
|
||
|
* all copies or substantial portions of the Software.
|
||
|
*
|
||
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||
|
* THE SOFTWARE.
|
||
|
*
|
||
|
* @author Tim Benniks <tim@timbenniks.com>
|
||
|
* @copyright 2009 timbenniks.com
|
||
|
* @version $Id: jquery.notice.js 1 2009-01-24 12:24:18Z timbenniks $
|
||
|
**/
|
||
|
(function(jQuery)
|
||
|
{
|
||
|
jQuery.extend({
|
||
|
noticeAdd: function(options)
|
||
|
{
|
||
|
var defaults = {
|
||
|
inEffect: {opacity: 'show'}, // in effect
|
||
|
inEffectDuration: 600, // in effect duration in miliseconds
|
||
|
stayTime: 3000, // time in miliseconds before the item has to disappear
|
||
|
text: '', // content of the item
|
||
|
stay: false, // should the notice item stay or not?
|
||
|
type: 'notice' // could also be error, succes
|
||
|
}
|
||
|
|
||
|
// declare varaibles
|
||
|
var options, noticeWrapAll, noticeItemOuter, noticeItemInner, noticeItemClose;
|
||
|
|
||
|
options = jQuery.extend({}, defaults, options);
|
||
|
noticeWrapAll = (!jQuery('.notice-wrap').length) ? jQuery('<div></div>').addClass('notice-wrap').appendTo('body') : jQuery('.notice-wrap');
|
||
|
noticeItemOuter = jQuery('<div></div>').addClass('notice-item-wrapper');
|
||
|
noticeItemInner = jQuery('<div></div>').hide().addClass('notice-item ' + options.type).appendTo(noticeWrapAll).html('<p>'+options.text+'</p>').animate(options.inEffect, options.inEffectDuration).wrap(noticeItemOuter);
|
||
|
noticeItemClose = jQuery('<div></div>').addClass('notice-item-close').prependTo(noticeItemInner).html('x').click(function() { jQuery.noticeRemove(noticeItemInner) });
|
||
|
|
||
|
if(!options.stay)
|
||
|
{
|
||
|
setTimeout(function()
|
||
|
{
|
||
|
jQuery.noticeRemove(noticeItemInner);
|
||
|
},
|
||
|
options.stayTime);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
noticeRemove: function(obj)
|
||
|
{
|
||
|
obj.animate({opacity: '0'}, 600, function()
|
||
|
{
|
||
|
obj.parent().animate({height: '0px'}, 300, function()
|
||
|
{
|
||
|
obj.parent().remove();
|
||
|
});
|
||
|
});
|
||
|
}
|
||
|
});
|
||
|
})(jQuery);
|