diff options
| author | Vidhin Mehta (OpenERP) <vme@tinyerp.com> | 2011-09-14 11:07:46 +0530 |
|---|---|---|
| committer | Vidhin Mehta (OpenERP) <vme@tinyerp.com> | 2011-09-14 11:07:46 +0530 |
| commit | b6076c3cc3ca5141349b99821268b8fd5e148b77 (patch) | |
| tree | bb875d3ef5127cf5b8c35de6475de14e5477dbbd /addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js | |
| parent | 243e1bdb0079ea9f214696ead8228d464ecb2cfc (diff) | |
| parent | c7c2b5846d3775780bbaa9a84a93ad755bdb8756 (diff) | |
[Merge] upto revno 1024.
bzr revid: vme@tinyerp.com-20110914053746-ri6d5s341mm6tc7n
Diffstat (limited to 'addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js')
| -rw-r--r-- | addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js | 140 |
1 files changed, 140 insertions, 0 deletions
diff --git a/addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js b/addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js new file mode 100644 index 00000000000..c2c4657f4c2 --- /dev/null +++ b/addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js @@ -0,0 +1,140 @@ +/* + * jQuery Notify UI Widget 1.4 + * Copyright (c) 2010 Eric Hynds + * + * http://www.erichynds.com/jquery/a-jquery-ui-growl-ubuntu-notification-widget/ + * + * Depends: + * - jQuery 1.4 + * - jQuery UI 1.8 widget factory + * + * Dual licensed under the MIT and GPL licenses: + * http://www.opensource.org/licenses/mit-license.php + * http://www.gnu.org/licenses/gpl.html + * +*/ +(function($){ + +$.widget("ech.notify", { + options: { + speed: 500, + expires: 5000, + stack: 'below', + custom: false + }, + _create: function(){ + var self = this; + this.templates = {}; + this.keys = []; + + // build and save templates + this.element.addClass("ui-notify").children().addClass("ui-notify-message ui-notify-message-style").each(function(i){ + var key = this.id || i; + self.keys.push(key); + self.templates[key] = $(this).removeAttr("id").wrap("<div></div>").parent().html(); // because $(this).andSelf().html() no workie + }).end().empty().show(); + }, + create: function(template, msg, opts){ + if(typeof template === "object"){ + opts = msg; + msg = template; + template = null; + } + + var tpl = this.templates[ template || this.keys[0]]; + + // remove default styling class if rolling w/ custom classes + if(opts && opts.custom){ + tpl = $(tpl).removeClass("ui-notify-message-style").wrap("<div></div>").parent().html(); + } + + // return a new notification instance + return new $.ech.notify.instance(this)._create(msg, $.extend({}, this.options, opts), tpl); + } +}); + +// instance constructor +$.extend($.ech.notify, { + instance: function(widget){ + this.parent = widget; + this.isOpen = false; + } +}); + +// instance methods +$.extend($.ech.notify.instance.prototype, { + _create: function(params, options, template){ + this.options = options; + + var self = this, + + // build html template + html = template.replace(/#(?:\{|%7B)(.*?)(?:\}|%7D)/g, function($1, $2){ + return ($2 in params) ? params[$2] : ''; + }), + + // the actual message + m = (this.element = $(html)), + + // close link + closelink = m.find(".ui-notify-close"); + + // clickable? + if(typeof this.options.click === "function"){ + m.addClass("ui-notify-click").bind("click", function(e){ + self._trigger("click", e, self); + }); + } + + // show close link? + if(closelink.length){ + closelink.bind("click", function(){ + self.close(); + return false; + }); + } + + this.open(); + + // auto expire? + if(typeof options.expires === "number"){ + window.setTimeout(function(){ + self.close(); + }, options.expires); + } + + return this; + }, + close: function(){ + var self = this, speed = this.options.speed; + + this.element.fadeTo(speed, 0).slideUp(speed, function(){ + self._trigger("close"); + self.isOpen = false; + }); + + return this; + }, + open: function(){ + if(this.isOpen || this._trigger("beforeopen") === false){ + return this; + } + + var self = this; + + this.element[this.options.stack === 'above' ? 'prependTo' : 'appendTo'](this.parent.element).css({ display:"none", opacity:"" }).fadeIn(this.options.speed, function(){ + self._trigger("open"); + self.isOpen = true; + }); + + return this; + }, + widget: function(){ + return this.element; + }, + _trigger: function(type, e, instance){ + return this.parent._trigger.call( this, type, e, instance ); + } +}); + +})(jQuery); |
