summaryrefslogtreecommitdiff
path: root/addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js
diff options
context:
space:
mode:
authorVidhin Mehta (OpenERP) <vme@tinyerp.com>2011-09-14 11:07:46 +0530
committerVidhin Mehta (OpenERP) <vme@tinyerp.com>2011-09-14 11:07:46 +0530
commitb6076c3cc3ca5141349b99821268b8fd5e148b77 (patch)
treebb875d3ef5127cf5b8c35de6475de14e5477dbbd /addons/web/static/lib/jquery.ui.notify/js/jquery.notify.js
parent243e1bdb0079ea9f214696ead8228d464ecb2cfc (diff)
parentc7c2b5846d3775780bbaa9a84a93ad755bdb8756 (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.js140
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);