From 1081845604eedfa457a8847333a67b20ecb1fa47 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Fri, 25 Jan 2013 18:09:00 -0500 Subject: [PATCH 01/58] Fix cancel click, add new slot classes --- build/js/messenger.js | 82 +++++++++++++++++++++++++++---------- index.html | 2 + src/coffee/messenger.coffee | 66 +++++++++++++++++++++-------- 3 files changed, 112 insertions(+), 38 deletions(-) diff --git a/build/js/messenger.js b/build/js/messenger.js index 099ff89..fdc20a5 100644 --- a/build/js/messenger.js +++ b/build/js/messenger.js @@ -27,19 +27,23 @@ Message.prototype.show = function() { this.render(); - this.$el.show(); + this.$message.show(); + this.shown = true; if (!this.shown) { - this.trigger('show'); + return this.trigger('show'); } - return this.shown = true; }; Message.prototype.hide = function() { - this.$el.hide(); + this.$message.hide(); + this.shown = false; if (this.shown) { - this.trigger('hide'); + return this.trigger('hide'); } - return this.shown = false; + }; + + Message.prototype.cancel = function() { + return this.hide(); }; Message.prototype.update = function(opts) { @@ -146,10 +150,15 @@ }; Message.prototype.template = function(opts) { - var $action, $actions, $cancel, $link, $message, $text, action, _i, _len, _ref; + var $action, $actions, $cancel, $link, $message, $text, action, _i, _len, _ref, + _this = this; $message = $("
"); if (opts.showCloseButton) { $cancel = $(''); + $cancel.click(function() { + _this.cancel(); + return true; + }); $message.append($cancel); } $text = $("
" + opts.message + "
"); @@ -183,9 +192,11 @@ opts = $.extend({}, this.opts, { actions: this.parseActions() }); - this.$el.addClass("" + opts.type + " alert-" + opts.type); - this.$el.html(this.template(opts)); - return this.rendered = true; + this.$message = $(this.template(opts)); + this.$el.html(this.$message); + this.shown = true; + this.rendered = true; + return this.trigger('render'); }; return Message; @@ -301,8 +312,8 @@ } Messenger.prototype.findById = function(id) { - return _.filter(this.history, function(msg) { - return msg.opts.id === id; + return _.filter(this.history, function(rec) { + return rec.msg.opts.id === id; }); }; @@ -313,9 +324,13 @@ Messenger.prototype._reserveMessageSlot = function(msg) { var $slot; - this.history.push(msg); $slot = $('
'); + $slot.addClass('message-slot'); this.$el.prepend($slot); + this.history.push({ + msg: msg, + $slot: $slot + }); return $slot; }; @@ -327,20 +342,43 @@ } msg = new MagicMessage(this, opts); msg.on('show', function() { - if (_this.$rootEl.css('position') !== 'fixed') { + if (opts.scrollTo && _this.$rootEl.css('position') !== 'fixed') { return msg.scrollTo(); } }); + msg.on('hide show render', this.updateMessageSlotClasses, this); return msg; }; + Messenger.prototype.updateMessageSlotClasses = function() { + var last, rec, willBeFirst, _i, _len, _ref; + willBeFirst = true; + last = null; + _ref = this.history; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + rec = _ref[_i]; + rec.$slot.removeClass('first last has-message'); + if (rec.msg.shown && rec.msg.rendered) { + rec.$slot.addClass('has-message'); + last = rec; + if (willBeFirst) { + willBeFirst = false; + rec.$slot.addClass('first'); + } + } + } + if (last != null) { + return last.$slot.addClass('last'); + } + }; + Messenger.prototype.hideAll = function() { - var msg, _i, _len, _ref, _results; + var rec, _i, _len, _ref, _results; _ref = this.history; _results = []; for (_i = 0, _len = _ref.length; _i < _len; _i++) { - msg = _ref[_i]; - _results.push(msg.hide()); + rec = _ref[_i]; + _results.push(rec.msg.hide()); } return _results; }; @@ -405,12 +443,14 @@ return Backbone.ajax = _ajax; } else { _old_sync = Backbone.sync; - return Backbone.sync = function() { - var args, _old_ajax; - args = 1 <= arguments.length ? __slice.call(arguments, 0) : []; + return Backbone.sync = function(method, model, options) { + var _old_ajax; _old_ajax = $.ajax; $.ajax = _ajax; - _old_sync.call.apply(_old_sync, [Backbone].concat(__slice.call(args))); + if (options.messenger != null) { + _.extend(msgr_opts, options.messenger); + } + _old_sync.call(Backbone, method, model, options); return $.ajax = _old_ajax; }; } diff --git a/index.html b/index.html index e315d20..898f5c1 100644 --- a/index.html +++ b/index.html @@ -217,6 +217,8 @@

Usage Click Code to Execute

# Do you use Backbone? Hook all backbone calls: $.globalMessenger().hookBackboneAjax() +# By default, there will be no error message, return an error message from your backbone error handler, or add an errorMessage to the messenger opts to set one. +# You can override these options by passing them into hookBackboneAjax, or adding a {'messenger': } hash to your fetch call. # You don't have to use the global messenger $('div#message-container').messenger().post "My message" diff --git a/src/coffee/messenger.coffee b/src/coffee/messenger.coffee index 9b8088a..e829f61 100644 --- a/src/coffee/messenger.coffee +++ b/src/coffee/messenger.coffee @@ -16,19 +16,22 @@ class Message extends Backbone.View show: -> do @render - @$el.show() - - @trigger('show') unless @shown + @$message.show() @shown = true + @trigger('show') unless @shown + hide: -> - @$el.hide() + @$message.hide() + @shown = false + @trigger('hide') if @shown - @shown = false + cancel: -> + do @hide update: (opts) -> $.extend(@opts, opts) @@ -109,7 +112,7 @@ class Message extends Backbone.View if opts.showCloseButton $cancel = $ '' $cancel.click => - do (@cancel ? @hide) + do @cancel true @@ -148,11 +151,14 @@ class Message extends Backbone.View opts = $.extend {}, @opts, actions: do @parseActions - @$el.addClass "#{ opts.type } alert-#{ opts.type }" - @$el.html @template opts + @$message = $ @template opts + @$el.html @$message + @shown = true @rendered = true + @trigger 'render' + class MagicMessage extends Message constructor: -> super @@ -234,8 +240,8 @@ class Messenger do @render findById: (id) -> - _.filter @history, (msg) -> - msg.opts.id == id + _.filter @history, (rec) -> + rec.msg.opts.id == id render: -> @$rootEl.html '
' @@ -243,23 +249,46 @@ class Messenger @$el = @$rootEl.find('.messenger') _reserveMessageSlot: (msg) -> - @history.push msg - $slot = $('
') + $slot.addClass 'message-slot' @$el.prepend $slot + @history.push {msg, $slot} + return $slot newMessage: (opts={}) -> msg = new MagicMessage(@, opts) msg.on 'show', => - do msg.scrollTo unless @$rootEl.css('position') is 'fixed' + if opts.scrollTo and @$rootEl.css('position') isnt 'fixed' + do msg.scrollTo + + msg.on 'hide show render', @updateMessageSlotClasses, @ msg + updateMessageSlotClasses: -> + willBeFirst = true + last = null + + for rec in @history + rec.$slot.removeClass 'first last has-message' + + if rec.msg.shown and rec.msg.rendered + rec.$slot.addClass 'has-message' + + last = rec + if willBeFirst + willBeFirst = false + rec.$slot.addClass 'first' + + if last? + last.$slot.addClass 'last' + + hideAll: -> - for msg in @history - msg.hide() + for rec in @history + rec.msg.hide() post: (opts) -> if _.isString opts @@ -306,11 +335,14 @@ class ActionMessenger extends Messenger Backbone.ajax = _ajax else _old_sync = Backbone.sync - Backbone.sync = (args...) -> + Backbone.sync = (method, model, options) -> _old_ajax = $.ajax $.ajax = _ajax - _old_sync.call(Backbone, args...) + if options.messenger? + _.extend msgr_opts, options.messenger + + _old_sync.call(Backbone, method, model, options) $.ajax = _old_ajax From 28819e1404388f1abb1fb62a5c8c7cff6277ba90 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Mon, 28 Jan 2013 12:11:38 -0500 Subject: [PATCH 02/58] Move to executr v2.0 --- index.html | 3 +++ lib/executr | 2 +- stylesheets/demo.css | 4 ++++ 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index 898f5c1..61081b5 100644 --- a/index.html +++ b/index.html @@ -11,6 +11,7 @@ + @@ -20,6 +21,8 @@ + + diff --git a/lib/executr b/lib/executr index 07810df..1a7a7da 160000 --- a/lib/executr +++ b/lib/executr @@ -1 +1 @@ -Subproject commit 07810df1090a512d30b89a6fd32a486993fc76d1 +Subproject commit 1a7a7daa607f6340eef55ed3f08250407d577ac1 diff --git a/stylesheets/demo.css b/stylesheets/demo.css index 268d08b..7a5d02c 100644 --- a/stylesheets/demo.css +++ b/stylesheets/demo.css @@ -1,3 +1,7 @@ h2 .subtitle { font-size: 14px; } + +.highlight .c1 { + font-size: 12px; +} From 3554c3e5b5d2c1243a70f6defdff0e30ac04c81b Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Mon, 28 Jan 2013 12:19:38 -0500 Subject: [PATCH 03/58] Update help message for executr 2.0 --- index.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.html b/index.html index 61081b5..ea7ee34 100644 --- a/index.html +++ b/index.html @@ -96,7 +96,7 @@

Really Quick Usage

-

Usage Click Code to Execute

+

Usage Click Code to Edit

 $.globalMessenger().post "Your request has succeded!"

From 4243c86e8238ebac1dc7f4c64c9b7d952e84e63d Mon Sep 17 00:00:00 2001
From: Adam Schwartz 
Date: Mon, 28 Jan 2013 14:24:26 -0500
Subject: [PATCH 04/58] Adding messenger theme style sheets to the gh-pages
 example

---
 index.html | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/index.html b/index.html
index ea7ee34..8ec8f72 100644
--- a/index.html
+++ b/index.html
@@ -10,6 +10,8 @@
     
     
     
+    
+    
     
     
 
@@ -263,7 +265,7 @@ 

Contributing

- + From 2eff7cc06ac3849a52c46ef641012df53bb6f9a8 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Mon, 28 Jan 2013 16:27:35 -0500 Subject: [PATCH 05/58] Update docs --- index.html | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/index.html b/index.html index 8ec8f72..fa2849b 100644 --- a/index.html +++ b/index.html @@ -231,22 +231,20 @@

Usage Click Code to Edit

# By default, the global messenger will create an ActionMessenger instance fixed to the bottom-right # corner of the screen. If there is already a messenger instance on the page, it will use that one. -# Alternativly, pass {injectIntoPage: true} to globalMessenger to have a messenger instance injected into the page in a few likely -# places. This will only work if an instance has not yet been created. - $.globalMessenger({injectIntoPage: true}) # All the options for globalMessenger and their defaults: { - 'injectIntoPage': false, - 'fixedClasses': 'fixed-messenger on-right', - 'injectedClasses': 'injected-messenger', - 'injectionLocations': ['.row-content', '.left', '.page', 'body'] + 'parentLocations': ['body'], + 'extraClasses': 'fixed-messenger on-right on-bottom', } +# You can also set default options on the $._messengerDefaults object. + # You can also use the views directly messenger = new ActionMessenger $('div#message-container') +messenger.render() messenger.post "Yay!!!" From 316193e7ddff4362b05b92182ceaa46d997eb566 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Mon, 28 Jan 2013 16:30:39 -0500 Subject: [PATCH 06/58] Update docs to add themes --- index.html | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index fa2849b..046039f 100644 --- a/index.html +++ b/index.html @@ -78,6 +78,7 @@

JS

CSS

/build/css/messenger.css
+/build/css/messenger-theme-future.css
 If you're not using Bootstrap: /build/css/no-bootstrap.css
 
@@ -237,7 +238,7 @@

Usage Click Code to Edit

{ 'parentLocations': ['body'], - 'extraClasses': 'fixed-messenger on-right on-bottom', + 'extraClasses': 'messenger-fixed messenger-on-right messenger-on-bottom messenger-theme-future', } # You can also set default options on the $._messengerDefaults object. From 77f0b68b81f6d0b0bfccf595e7d6e2fd9f0b4f35 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Mon, 28 Jan 2013 18:14:31 -0500 Subject: [PATCH 07/58] Move data-action to fix phrases --- build/js/messenger.js | 4 ++-- src/coffee/messenger.coffee | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build/js/messenger.js b/build/js/messenger.js index 5d7d1cc..f74b45f 100644 --- a/build/js/messenger.js +++ b/build/js/messenger.js @@ -113,7 +113,7 @@ _results = []; for (name in _ref) { act = _ref[name]; - _results.push(this.events["click a[data-action=\"" + name + "\"]"] = (function(act) { + _results.push(this.events["click [data-action=\"" + name + "\"] a"] = (function(act) { var _this = this; return function(e) { e.preventDefault(); @@ -182,8 +182,8 @@ for (_i = 0, _len = _ref.length; _i < _len; _i++) { action = _ref[_i]; $action = $(''); + $action.attr('data-action', "" + action.name); $link = $(''); - $link.attr('data-action', "" + action.name); $link.html(action.label); $action.append($('')); $action.append($link); diff --git a/src/coffee/messenger.coffee b/src/coffee/messenger.coffee index 8547fb2..4c8687e 100644 --- a/src/coffee/messenger.coffee +++ b/src/coffee/messenger.coffee @@ -79,7 +79,7 @@ class Message extends Backbone.View actionsToEvents: -> for name, act of @options.actions - @events["click a[data-action=\"#{ name }\"]"] = ((act) -> + @events["click [data-action=\"#{ name }\"] a"] = ((act) -> return (e) => do e.preventDefault do e.stopPropagation @@ -129,9 +129,9 @@ class Message extends Backbone.View for action in opts.actions $action = $ '' + $action.attr 'data-action', "#{ action.name }" $link = $ '' - $link.attr 'data-action', "#{ action.name }" $link.html action.label $action.append $ '' From 6ec2ee1c718ba06297f4204ae2365a7e3bd89bf2 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Mon, 28 Jan 2013 19:23:40 -0500 Subject: [PATCH 08/58] Get rid of wrong example --- index.html | 2 -- src/coffee/messenger.coffee | 2 +- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/index.html b/index.html index 046039f..9cf9b20 100644 --- a/index.html +++ b/index.html @@ -232,8 +232,6 @@

Usage Click Code to Edit

# By default, the global messenger will create an ActionMessenger instance fixed to the bottom-right # corner of the screen. If there is already a messenger instance on the page, it will use that one. -$.globalMessenger({injectIntoPage: true}) - # All the options for globalMessenger and their defaults: { diff --git a/src/coffee/messenger.coffee b/src/coffee/messenger.coffee index 9717f2a..50822bc 100644 --- a/src/coffee/messenger.coffee +++ b/src/coffee/messenger.coffee @@ -503,7 +503,7 @@ class ActionMessenger extends Messenger delete msg[attr] if msg[attr]? msg[attr] = msg._actionInstance?[attr] - return msg + msg $.fn.messenger = (func, args...) -> $el = this From 947e1474438935a523e0556a115bb90d3635798c Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Mon, 28 Jan 2013 19:34:12 -0500 Subject: [PATCH 09/58] Fix max messages --- build/js/messenger.js | 2 +- src/coffee/messenger.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/js/messenger.js b/build/js/messenger.js index b6cc5af..c0bce87 100644 --- a/build/js/messenger.js +++ b/build/js/messenger.js @@ -357,7 +357,7 @@ $slot: $slot }); while (this.options.maxMessages && this.history.length > this.options.maxMessages) { - dmsg = this.history.pop(); + dmsg = this.history.shift(); dmsg.msg.remove(); dmsg.$slot.remove(); } diff --git a/src/coffee/messenger.coffee b/src/coffee/messenger.coffee index b652ca3..24ed947 100644 --- a/src/coffee/messenger.coffee +++ b/src/coffee/messenger.coffee @@ -259,7 +259,7 @@ class Messenger extends Backbone.View @history.push {msg, $slot} while @options.maxMessages and @history.length > @options.maxMessages - dmsg = @history.pop() + dmsg = @history.shift() dmsg.msg.remove() dmsg.$slot.remove() From 22cafee99ba1a35bc9dbcd7349a01ba481e4a753 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Mon, 28 Jan 2013 19:35:11 -0500 Subject: [PATCH 10/58] Add max messages documentation --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index 9cf9b20..bf8d93b 100644 --- a/index.html +++ b/index.html @@ -236,6 +236,7 @@

Usage Click Code to Edit

{ 'parentLocations': ['body'], + 'maxMessages': 9, 'extraClasses': 'messenger-fixed messenger-on-right messenger-on-bottom messenger-theme-future', } From 6eb0685c5ca4767a7676f90043a265df955d9e41 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Tue, 29 Jan 2013 18:12:59 -0500 Subject: [PATCH 11/58] Fix message ids --- build/js/messenger.js | 2 +- src/coffee/messenger.coffee | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/build/js/messenger.js b/build/js/messenger.js index c0bce87..cb3e4ae 100644 --- a/build/js/messenger.js +++ b/build/js/messenger.js @@ -554,7 +554,7 @@ if (m_opts.singleton) { return false; } else { - m.hide(); + m.msg.hide(); } } } diff --git a/src/coffee/messenger.coffee b/src/coffee/messenger.coffee index 24ed947..ebe20a7 100644 --- a/src/coffee/messenger.coffee +++ b/src/coffee/messenger.coffee @@ -416,7 +416,7 @@ class ActionMessenger extends Messenger if m_opts.singleton return false else - do m.hide + do m.msg.hide msg = m_opts.messageInstance ? @newMessage m_opts From a5a858d4e2d1482d646ffbf0780d3ba11c7de129 Mon Sep 17 00:00:00 2001 From: Adam Schwartz Date: Sun, 3 Feb 2013 16:38:41 -0500 Subject: [PATCH 12/58] Fix messenger-on-left for all messenger themes --- build/css/messenger.css | 5 +++-- src/sass/messenger.sass | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/build/css/messenger.css b/build/css/messenger.css index 550181e..fa0e88e 100644 --- a/build/css/messenger.css +++ b/build/css/messenger.css @@ -77,12 +77,13 @@ ul.messenger.messenger-fixed.messenger-on-top.messenger-on-right, ul.messenger.m /* line 62, ../../src/sass/messenger.sass */ ul.messenger.messenger-fixed.messenger-on-top.messenger-on-left, ul.messenger.messenger-fixed.messenger-on-bottom.messenger-on-left { left: 20px; + margin-left: 0px; } -/* line 65, ../../src/sass/messenger.sass */ +/* line 66, ../../src/sass/messenger.sass */ ul.messenger.messenger-fixed.messenger-on-right, ul.messenger.messenger-fixed.messenger-on-left { width: 350px; } -/* line 68, ../../src/sass/messenger.sass */ +/* line 69, ../../src/sass/messenger.sass */ ul.messenger.messenger-fixed.messenger-on-right .messenger-actions, ul.messenger.messenger-fixed.messenger-on-left .messenger-actions { float: left; } diff --git a/src/sass/messenger.sass b/src/sass/messenger.sass index 3a12f1e..07d9139 100644 --- a/src/sass/messenger.sass +++ b/src/sass/messenger.sass @@ -61,6 +61,7 @@ ul.messenger &.messenger-on-left left: 20px + margin-left: 0px &.messenger-on-right, &.messenger-on-left width: 350px From 04a4b5fb1bd667c1bca11a4bc8676fec1d4f7372 Mon Sep 17 00:00:00 2001 From: Adam Schwartz Date: Sun, 3 Feb 2013 16:39:08 -0500 Subject: [PATCH 13/58] Fix messenger theme block --- build/css/messenger-theme-block.css | 38 ++++++++++++++++++++--------- src/sass/messenger-theme-block.sass | 23 ++++++++++++----- 2 files changed, 43 insertions(+), 18 deletions(-) diff --git a/build/css/messenger-theme-block.css b/build/css/messenger-theme-block.css index 2ec241b..e3ff380 100644 --- a/build/css/messenger-theme-block.css +++ b/build/css/messenger-theme-block.css @@ -1,29 +1,43 @@ /* line 4, ../../src/sass/messenger-theme-block.sass */ -.messenger-theme-block { +ul.messenger.messenger-theme-block.messenger-fixed { width: 100%; top: 0; left: 0; + margin-left: 0px; } -/* line 9, ../../src/sass/messenger-theme-block.sass */ -.messenger-theme-block.messenger-on-bottom { +/* line 10, ../../src/sass/messenger-theme-block.sass */ +ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-bottom { top: auto; bottom: 0; } -/* line 13, ../../src/sass/messenger-theme-block.sass */ -.messenger-theme-block.messenger-on-right, .messenger-theme-block.messenger-on-left { +/* line 14, ../../src/sass/messenger-theme-block.sass */ +ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-top { + top: 0px; + bottom: auto; +} +/* line 18, ../../src/sass/messenger-theme-block.sass */ +ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-top, ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-bottom { + left: 0px; + right: 0px; +} +/* line 22, ../../src/sass/messenger-theme-block.sass */ +ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-top.messenger-on-right, ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-top.messenger-on-left, ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-bottom.messenger-on-right, ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-bottom.messenger-on-left { width: 350px; } -/* line 16, ../../src/sass/messenger-theme-block.sass */ -.messenger-theme-block.messenger-on-right { +/* line 25, ../../src/sass/messenger-theme-block.sass */ +ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-top.messenger-on-left, ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-bottom.messenger-on-left { + right: auto; +} +/* line 28, ../../src/sass/messenger-theme-block.sass */ +ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-top.messenger-on-right, ul.messenger.messenger-theme-block.messenger-fixed.messenger-on-bottom.messenger-on-right { left: auto; - right: 0; } -/* line 20, ../../src/sass/messenger-theme-block.sass */ -.messenger-theme-block .messenger-message-slot { +/* line 31, ../../src/sass/messenger-theme-block.sass */ +ul.messenger.messenger-theme-block.messenger-fixed .messenger-message-slot { max-width: none; } -/* line 23, ../../src/sass/messenger-theme-block.sass */ -.messenger-theme-block .messenger-message { +/* line 34, ../../src/sass/messenger-theme-block.sass */ +ul.messenger.messenger-theme-block.messenger-fixed .messenger-message { margin-bottom: 0; text-align: center; padding: 1em; diff --git a/src/sass/messenger-theme-block.sass b/src/sass/messenger-theme-block.sass index a363394..dfbbba3 100644 --- a/src/sass/messenger-theme-block.sass +++ b/src/sass/messenger-theme-block.sass @@ -1,21 +1,32 @@ @import "compass/utilities/general/clearfix" @import "compass/css3" -.messenger-theme-block +ul.messenger.messenger-theme-block.messenger-fixed width: 100% top: 0 left: 0 + margin-left: 0px &.messenger-on-bottom top: auto bottom: 0 - &.messenger-on-right, &.messenger-on-left - width: 350px + &.messenger-on-top + top: 0px + bottom: auto - &.messenger-on-right - left: auto - right: 0 + &.messenger-on-top, &.messenger-on-bottom + left: 0px + right: 0px + + &.messenger-on-right, &.messenger-on-left + width: 350px + + &.messenger-on-left + right: auto + + &.messenger-on-right + left: auto .messenger-message-slot max-width: none From 35513a927f778af72f95085b1889537bed9cc988 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Tue, 5 Feb 2013 00:15:10 -0500 Subject: [PATCH 14/58] Add 500 example --- index.html | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index bf8d93b..f9c7e0d 100644 --- a/index.html +++ b/index.html @@ -142,7 +142,15 @@

Usage Click Code to Edit

cancel: action: -> do msg.cancel -
# You can bind to action events as well: + + + +# This guy will 500 +$.globalMessenger().do + action: (opts) -> opts.error({status: 500, readyState: 0, responseText: 0}) + + +# You can bind to action events as well: msg.on 'action:retry', -> alert('Hey, you retried!') From 0ba28948adb5a86d241d32792158ef4bf391cd61 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Tue, 5 Feb 2013 00:48:48 -0500 Subject: [PATCH 15/58] Add id/singleton/messengerInstance examples closes #2. --- index.html | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/index.html b/index.html index f9c7e0d..641786f 100644 --- a/index.html +++ b/index.html @@ -170,6 +170,33 @@

Usage Click Code to Edit

hideAfter: 10 hideOnNavigate: true + +# You can use the id property to ensure that only one +# instance of a message will appear on the page at a time +# (the older message will be hidden). +$.globalMessenger().post + message: "Only one at a time!" + id: "Only-one-message" + +# When you add the singleton attribute, it ensures that no +# other messages with that id will ever be shown again +# (the newer message will be hidden). +$.globalMessenger().post + message: "It's just me!" + id: '4' + singleton: true + +$.globalMessenger().post + message: "You'll never see me" + id: '4' + singleton: true + +# Rather than hiding and showing multiple messages +# you can also maintain a single message between +# requests. +msg = $.globalMessenger().do() +$.globalMessenger().do({messageInstance: msg}) + # Don't want your message hidden on a long page? (Not necessary if you're using the default # fixed positioning) msg = $.globalMessenger().post @@ -229,6 +256,12 @@

Usage Click Code to Edit

# Need to hide all messages? $.globalMessenger().hideAll() + +# If your action responds with a promise-like thing, it's +# methods will be copied onto the message: + +$.globalMessenger().do({}, {url: 'a'}).fail(-> alert "Uh oh") + # Do you use Backbone? Hook all backbone calls: $.globalMessenger().hookBackboneAjax() # By default, there will be no error message, return an error message from your backbone error handler, or add an errorMessage to the messenger opts to set one. From 43a5224a7bb4575844c7c5f9bbb69fdd7e813d54 Mon Sep 17 00:00:00 2001 From: Zack Bloom Date: Tue, 5 Feb 2013 00:49:34 -0500 Subject: [PATCH 16/58] Make id apply to all messages --- build/css/messenger-theme-future.css | 113 ++++--------------------- build/css/messenger.css | 2 +- build/js/messenger.js | 118 +++++++++++++++------------ src/coffee/messenger.coffee | 28 +++++-- 4 files changed, 107 insertions(+), 154 deletions(-) diff --git a/build/css/messenger-theme-future.css b/build/css/messenger-theme-future.css index e1f41d6..c28ecde 100644 --- a/build/css/messenger-theme-future.css +++ b/build/css/messenger-theme-future.css @@ -244,15 +244,6 @@ ul.messenger-theme-future { -ms-border-radius: 4px; -o-border-radius: 4px; border-radius: 4px; -<<<<<<< HEAD -======= - background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5c5b5b), color-stop(100%, #353535)); - background-image: -webkit-linear-gradient(#5c5b5b, #353535); - background-image: -moz-linear-gradient(#5c5b5b, #353535); - background-image: -o-linear-gradient(#5c5b5b, #353535); - background-image: linear-gradient(#5c5b5b, #353535); - background-color: #5c5b5b; ->>>>>>> message_spinner -moz-user-select: none; -webkit-user-select: none; -o-user-select: none; @@ -265,19 +256,11 @@ ul.messenger-theme-future { background-color: #5c5b5b; border: 1px solid rgba(0, 0, 0, 0.5); } -<<<<<<< HEAD -/* line 20, ../../src/sass/messenger-theme-future.sass */ +/* line 24, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future.messenger-empty { display: none; } -/* line 23, ../../src/sass/messenger-theme-future.sass */ -======= -/* line 23, ../../src/sass/messenger-theme-future.sass */ -ul.messenger-theme-future.messenger-empty { - display: none; -} -/* line 26, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 27, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message { -webkit-box-shadow: inset 0px 1px rgba(255, 255, 255, 0.13), inset 0px -1px rgba(0, 0, 0, 0.23), inset 48px 0px 0px rgba(0, 0, 0, 0.3), inset 46px 0px 0px rgba(255, 255, 255, 0.07); -moz-box-shadow: inset 0px 1px rgba(255, 255, 255, 0.13), inset 0px -1px rgba(0, 0, 0, 0.23), inset 48px 0px 0px rgba(0, 0, 0, 0.3), inset 46px 0px 0px rgba(255, 255, 255, 0.07); @@ -297,11 +280,7 @@ ul.messenger-theme-future .messenger-message { font-weight: 500; padding: 10px 30px 13px 65px; } -<<<<<<< HEAD -/* line 36, ../../src/sass/messenger-theme-future.sass */ -======= -/* line 39, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 40, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message .close { position: absolute; top: 0px; @@ -319,36 +298,20 @@ ul.messenger-theme-future .messenger-message .close { border: 0; -webkit-appearance: none; } -<<<<<<< HEAD -/* line 53, ../../src/sass/messenger-theme-future.sass */ -ul.messenger-theme-future .messenger-message .close:hover { - color: #bbbbbb; -} -/* line 56, ../../src/sass/messenger-theme-future.sass */ -ul.messenger-theme-future .messenger-message .close:active { - color: #777777; -} -/* line 59, ../../src/sass/messenger-theme-future.sass */ -======= -/* line 56, ../../src/sass/messenger-theme-future.sass */ +/* line 57, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message .close:hover { color: #bbbbbb; } -/* line 59, ../../src/sass/messenger-theme-future.sass */ +/* line 60, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message .close:active { color: #777777; } -/* line 62, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 63, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message .messenger-actions { float: none; margin-top: 10px; } -<<<<<<< HEAD -/* line 63, ../../src/sass/messenger-theme-future.sass */ -======= -/* line 66, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 67, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message .messenger-actions a { -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2), inset 0px 1px rgba(255, 255, 255, 0.1); -moz-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2), inset 0px 1px rgba(255, 255, 255, 0.1); @@ -367,22 +330,14 @@ ul.messenger-theme-future .messenger-message .messenger-actions a { padding: 3px 10px 5px; text-transform: capitalize; } -<<<<<<< HEAD -/* line 75, ../../src/sass/messenger-theme-future.sass */ -======= -/* line 78, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 79, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message .messenger-actions a:hover { -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2), inset 0px 1px rgba(255, 255, 255, 0.2); -moz-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2), inset 0px 1px rgba(255, 255, 255, 0.2); box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.2), inset 0px 1px rgba(255, 255, 255, 0.2); color: #f0f0f0; } -<<<<<<< HEAD -/* line 79, ../../src/sass/messenger-theme-future.sass */ -======= -/* line 82, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 83, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message .messenger-actions a:active { -webkit-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.28), inset 0px 1px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0px 0px 0px 1px rgba(0, 0, 0, 0.28), inset 0px 1px rgba(0, 0, 0, 0.1); @@ -390,19 +345,11 @@ ul.messenger-theme-future .messenger-message .messenger-actions a:active { background: rgba(0, 0, 0, 0.04); color: #aaaaaa; } -<<<<<<< HEAD -/* line 84, ../../src/sass/messenger-theme-future.sass */ -ul.messenger-theme-future .messenger-message .messenger-actions .messenger-phrase { - display: none; -} -/* line 87, ../../src/sass/messenger-theme-future.sass */ -======= -/* line 87, ../../src/sass/messenger-theme-future.sass */ +/* line 88, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message .messenger-actions .messenger-phrase { display: none; } -/* line 90, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 91, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message .messenger-message-inner:before { -webkit-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.6), 0px 0px 0px 1px rgba(0, 0, 0, 0.2); -moz-box-shadow: inset 0px 1px 3px rgba(0, 0, 0, 0.6), 0px 0px 0px 1px rgba(0, 0, 0, 0.2); @@ -438,9 +385,6 @@ ul.messenger-theme-future .messenger-message.alert-success .messenger-spinner .m animation-duration: 10s; opacity: 1; } -<<<<<<< HEAD -/* line 99, ../../src/sass/messenger-theme-future.sass */ -======= /* line 45, ../../src/sass/messenger-spinner.scss */ ul.messenger-theme-future .messenger-message.alert-success .messenger-spinner:after { content: ""; @@ -453,8 +397,7 @@ ul.messenger-theme-future .messenger-message.alert-success .messenger-spinner:af left: 3px; display: block; } -/* line 106, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 107, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message.alert-success .messenger-message-inner:before { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #5fca4a), color-stop(100%, #098d38)); background-image: -webkit-linear-gradient(top, #5fca4a, #098d38); @@ -463,9 +406,6 @@ ul.messenger-theme-future .messenger-message.alert-success .messenger-message-in background-image: linear-gradient(top, #5fca4a, #098d38); background-color: #5fca4a; } -<<<<<<< HEAD -/* line 103, ../../src/sass/messenger-theme-future.sass */ -======= /* line 32, ../../src/sass/messenger-spinner.scss */ ul.messenger-theme-future .messenger-message.alert-error .messenger-spinner { width: 32px; @@ -494,8 +434,7 @@ ul.messenger-theme-future .messenger-message.alert-error .messenger-spinner:afte left: 3px; display: block; } -/* line 113, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 114, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message.alert-error .messenger-message-inner:before { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #dd6a45), color-stop(100%, #91361a)); background-image: -webkit-linear-gradient(top, #dd6a45, #91361a); @@ -504,9 +443,6 @@ ul.messenger-theme-future .messenger-message.alert-error .messenger-message-inne background-image: linear-gradient(top, #dd6a45, #91361a); background-color: #dd6a45; } -<<<<<<< HEAD -/* line 107, ../../src/sass/messenger-theme-future.sass */ -======= /* line 32, ../../src/sass/messenger-spinner.scss */ ul.messenger-theme-future .messenger-message.alert-info .messenger-spinner { width: 32px; @@ -535,8 +471,7 @@ ul.messenger-theme-future .messenger-message.alert-info .messenger-spinner:after left: 3px; display: block; } -/* line 120, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 121, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message.alert-info .messenger-message-inner:before { background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(0%, #61c4b8), color-stop(100%, #1992a3)); background-image: -webkit-linear-gradient(top, #61c4b8, #1992a3); @@ -545,11 +480,7 @@ ul.messenger-theme-future .messenger-message.alert-info .messenger-message-inner background-image: linear-gradient(top, #61c4b8, #1992a3); background-color: #61c4b8; } -<<<<<<< HEAD -/* line 113, ../../src/sass/messenger-theme-future.sass */ -======= -/* line 126, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 127, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message-slot.last .messenger-message { -webkit-border-radius: 4px 4px 0px 0px; -moz-border-radius: 4px 4px 0px 0px; @@ -557,11 +488,7 @@ ul.messenger-theme-future .messenger-message-slot.last .messenger-message { -o-border-radius: 4px 4px 0px 0px; border-radius: 4px 4px 0px 0px; } -<<<<<<< HEAD -/* line 116, ../../src/sass/messenger-theme-future.sass */ -======= -/* line 129, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 130, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message-slot.first .messenger-message { -webkit-border-radius: 0px 0px 4px 4px; -moz-border-radius: 0px 0px 4px 4px; @@ -572,11 +499,7 @@ ul.messenger-theme-future .messenger-message-slot.first .messenger-message { -moz-box-shadow: inset 0px 1px rgba(255, 255, 255, 0.13), inset 48px 0px 0px rgba(0, 0, 0, 0.3), inset 46px 0px 0px rgba(255, 255, 255, 0.07); box-shadow: inset 0px 1px rgba(255, 255, 255, 0.13), inset 48px 0px 0px rgba(0, 0, 0, 0.3), inset 46px 0px 0px rgba(255, 255, 255, 0.07); } -<<<<<<< HEAD -/* line 120, ../../src/sass/messenger-theme-future.sass */ -======= -/* line 133, ../../src/sass/messenger-theme-future.sass */ ->>>>>>> message_spinner +/* line 134, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-message-slot.first.last .messenger-message { -webkit-box-shadow: inset 48px 0px 0px rgba(0, 0, 0, 0.3), inset 46px 0px 0px rgba(255, 255, 255, 0.07); -moz-box-shadow: inset 48px 0px 0px rgba(0, 0, 0, 0.3), inset 46px 0px 0px rgba(255, 255, 255, 0.07); @@ -587,7 +510,7 @@ ul.messenger-theme-future .messenger-message-slot.first.last .messenger-message -o-border-radius: 4px; border-radius: 4px; } -/* line 137, ../../src/sass/messenger-theme-future.sass */ +/* line 138, ../../src/sass/messenger-theme-future.sass */ ul.messenger-theme-future .messenger-spinner { display: block; position: absolute; diff --git a/build/css/messenger.css b/build/css/messenger.css index 29156a3..b5d3dbd 100644 --- a/build/css/messenger.css +++ b/build/css/messenger.css @@ -87,7 +87,7 @@ ul.messenger.messenger-fixed.messenger-on-right, ul.messenger.messenger-fixed.me ul.messenger.messenger-fixed.messenger-on-right .messenger-actions, ul.messenger.messenger-fixed.messenger-on-left .messenger-actions { float: left; } -/* line 71, ../../src/sass/messenger.sass */ +/* line 72, ../../src/sass/messenger.sass */ ul.messenger .messenger-spinner { display: none; } diff --git a/build/js/messenger.js b/build/js/messenger.js index 6f9c149..bdd14af 100644 --- a/build/js/messenger.js +++ b/build/js/messenger.js @@ -1,4 +1,4 @@ -// Generated by CoffeeScript 1.4.0 +// Generated by CoffeeScript 1.3.3 (function() { var $, ActionMessenger, MagicMessage, Message, Messenger, spinner_template, __hasProp = {}.hasOwnProperty, @@ -35,6 +35,7 @@ Message.prototype.show = function() { var wasShown; this.render(); + console.log('being shown'); this.$message.removeClass('messenger-hidden'); wasShown = this.shown; this.shown = true; @@ -48,6 +49,7 @@ if (!this.rendered) { return; } + console.log('being hidden'); this.$message.addClass('messenger-hidden'); wasShown = this.shown; this.shown = false; @@ -81,11 +83,12 @@ } if (this.options.hideOnNavigate) { if (Backbone.history != null) { - return Backbone.history.on('route', function() { + Backbone.history.on('route', function() { return _this.hide(); }); } } + return this.trigger('update', this); }; Message.prototype.scrollTo = function() { @@ -351,7 +354,8 @@ }; Messenger.prototype._reserveMessageSlot = function(msg) { - var $slot, dmsg; + var $slot, dmsg, + _this = this; $slot = $('
  • '); $slot.addClass('messenger-message-slot'); this.$el.prepend($slot); @@ -359,6 +363,10 @@ msg: msg, $slot: $slot }); + this._enforceIdConstraint(msg); + msg.on('update', function() { + return _this._enforceIdConstraint(msg); + }); while (this.options.maxMessages && this.history.length > this.options.maxMessages) { dmsg = this.history.shift(); dmsg.msg.remove(); @@ -367,6 +375,26 @@ return $slot; }; + Messenger.prototype._enforceIdConstraint = function(msg) { + var entry, _i, _len, _msg, _ref; + if (msg.options.id == null) { + return; + } + _ref = this.history; + for (_i = 0, _len = _ref.length; _i < _len; _i++) { + entry = _ref[_i]; + _msg = entry.msg; + if ((_msg.options.id != null) && _msg.options.id === msg.options.id && msg !== _msg) { + if (msg.options.singleton) { + msg.hide(); + return; + } else { + _msg.hide(); + } + } + } + }; + Messenger.prototype.newMessage = function(opts) { var msg, _this = this; @@ -430,7 +458,6 @@ opts = $.extend(true, {}, this.OPT_DEFAULTS, opts); msg = this.newMessage(opts); msg.update(opts); - msg.show(); return msg; }; @@ -542,7 +569,7 @@ }; ActionMessenger.prototype["do"] = function() { - var args, attr, events, m, m_opts, msg, opts, promiseAttrs, _i, _j, _len, _len1, _ref, _ref1, _ref2, + var args, attr, events, m_opts, msg, opts, promiseAttrs, _i, _len, _ref, _ref1, _this = this; m_opts = arguments[0], opts = arguments[1], args = 3 <= arguments.length ? __slice.call(arguments, 2) : []; if (opts == null) { @@ -550,18 +577,7 @@ } m_opts = $.extend(true, {}, this.ACTION_DEFAULTS, m_opts != null ? m_opts : {}); events = this._parseEvents(m_opts.events); - if (!m_opts.messageInstance && m_opts.id) { - _ref = this.findById(m_opts.id); - for (_i = 0, _len = _ref.length; _i < _len; _i++) { - m = _ref[_i]; - if (m_opts.singleton) { - return false; - } else { - m.msg.hide(); - } - } - } - msg = (_ref1 = m_opts.messageInstance) != null ? _ref1 : this.newMessage(m_opts); + msg = (_ref = m_opts.messageInstance) != null ? _ref : this.newMessage(m_opts); if (m_opts.id != null) { msg.options.id = m_opts.id; } @@ -572,17 +588,17 @@ })); } _.each(['error', 'success'], function(type) { - var old, _ref2; - old = (_ref2 = opts[type]) != null ? _ref2 : function() {}; + var old, _ref1; + old = (_ref1 = opts[type]) != null ? _ref1 : function() {}; return opts[type] = function() { - var data, msgOpts, msgText, r, reason, resp, xhr, _ref3, _ref4, _ref5, _ref6, _ref7, _ref8; + var data, msgOpts, msgText, r, reason, resp, xhr, _ref2, _ref3, _ref4, _ref5, _ref6, _ref7; resp = 1 <= arguments.length ? __slice.call(arguments, 0) : []; - _ref3 = _this._normalizeResponse.apply(_this, resp), reason = _ref3[0], data = _ref3[1], xhr = _ref3[2]; + _ref2 = _this._normalizeResponse.apply(_this, resp), reason = _ref2[0], data = _ref2[1], xhr = _ref2[2]; if (type === 'success' && !(msg.errorCount != null) && m_opts.showSuccessWithoutError === false) { m_opts['successMessage'] = null; } if (type === 'error') { - if ((_ref4 = msg.errorCount) == null) { + if ((_ref3 = msg.errorCount) == null) { msg.errorCount = 0; } msg.errorCount += 1; @@ -596,13 +612,13 @@ msgOpts = $.extend({}, m_opts, { message: msgText, type: type, - events: (_ref5 = events[type]) != null ? _ref5 : {}, + events: (_ref4 = events[type]) != null ? _ref4 : {}, hideOnNavigate: type === 'success' }); if (type === 'error' && (xhr != null ? xhr.status : void 0) >= 500) { - if ((_ref6 = msgOpts.retry) != null ? _ref6.allow : void 0) { + if ((_ref5 = msgOpts.retry) != null ? _ref5.allow : void 0) { if (msgOpts.hideAfter) { - msgOpts.hideAfter += (_ref7 = msgOpts.retry.delay) != null ? _ref7 : 10; + msgOpts.hideAfter += (_ref6 = msgOpts.retry.delay) != null ? _ref6 : 10; } msgOpts._retryActions = true; msgOpts.actions = { @@ -610,11 +626,11 @@ label: 'retry now', phrase: 'Retrying TIME', auto: msgOpts.retry.auto, - delay: (_ref8 = msgOpts.retry.delay) != null ? _ref8 : 10, + delay: (_ref7 = msgOpts.retry.delay) != null ? _ref7 : 10, action: function() { - var _ref9; + var _ref8; msgOpts.messageInstance = msg; - msgOpts.retry.delay = ((_ref9 = msgOpts.retry.delay) != null ? _ref9 : 10) * 2; + msgOpts.retry.delay = ((_ref8 = msgOpts.retry.delay) != null ? _ref8 : 10) * 2; return _this["do"].apply(_this, [msgOpts, opts].concat(__slice.call(args))); } }, @@ -640,12 +656,12 @@ }); msg._actionInstance = m_opts.action.apply(m_opts, [opts].concat(__slice.call(args))); promiseAttrs = ['done', 'progress', 'fail', 'state', 'then']; - for (_j = 0, _len1 = promiseAttrs.length; _j < _len1; _j++) { - attr = promiseAttrs[_j]; + for (_i = 0, _len = promiseAttrs.length; _i < _len; _i++) { + attr = promiseAttrs[_i]; if (msg[attr] != null) { delete msg[attr]; } - msg[attr] = (_ref2 = msg._actionInstance) != null ? _ref2[attr] : void 0; + msg[attr] = (_ref1 = msg._actionInstance) != null ? _ref1[attr] : void 0; } return msg; }; @@ -684,26 +700,28 @@ }; opts = $.extend(defaultOpts, $._messengerDefaults, opts); inst = opts.instance || $._messengerInstance; - locations = opts.parentLocations; - $parent = null; - choosen_loc = null; - for (_i = 0, _len = locations.length; _i < _len; _i++) { - loc = locations[_i]; - $parent = $(loc); - if ($parent.length) { - chosen_loc = loc; - break; + if (opts.instance == null) { + locations = opts.parentLocations; + $parent = null; + choosen_loc = null; + for (_i = 0, _len = locations.length; _i < _len; _i++) { + loc = locations[_i]; + $parent = $(loc); + if ($parent.length) { + chosen_loc = loc; + break; + } + } + if (!inst) { + $el = $('