/** * 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? title: 'system message', //Title value 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('<h2>'+options.title+'</h2>'+'<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) }); // hmmmz, zucht if(navigator.userAgent.match(/MSIE 6/i)) { noticeWrapAll.css({top: document.documentElement.scrollTop}); } 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); /** * Some additional functions to loop through the message divs * and convert them into notifications using all of the provided * arguments */ function message(message_title,message_text,lifetime,sticky,message_type){ jQuery.noticeAdd({ text: message_text, title: message_title, type: message_type, stayTime: lifetime, stay: sticky });
return false; } $(document).ready(function () { $('.message').each(function(){ if($(this).html() != ''){ message($(this).find('input[name="title"]').val(),$(this).find('input[name="message"]').val(),$(this).find('input[name="stayTime"]').val(),$(this).find('input[name="stay"]').val(),$(this).find('input[name="type"]').val()); $(this).remove(); } }); });
|