diff options
| author | Phil Hughes <me@iamphill.com> | 2016-08-03 09:08:24 +0100 |
|---|---|---|
| committer | Phil Hughes <me@iamphill.com> | 2016-08-03 09:08:24 +0100 |
| commit | a45071d0ea18d9bb8a5209ef97e4858dda08cd33 (patch) | |
| tree | d9f8e538c5c0e6ef2e25acf2520f31a419b34ec8 /app/assets/javascripts/subscription.js | |
| parent | e5b64f20c730bd6e18af694b2c1503020ba1db51 (diff) | |
| parent | e63729d9e70a661fb3fb8cb558716f6a44a52798 (diff) | |
| download | gitlab-ce-a45071d0ea18d9bb8a5209ef97e4858dda08cd33.tar.gz | |
Merge branch 'master' into ref-switcher-enter-submit
Diffstat (limited to 'app/assets/javascripts/subscription.js')
| -rw-r--r-- | app/assets/javascripts/subscription.js | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/app/assets/javascripts/subscription.js b/app/assets/javascripts/subscription.js new file mode 100644 index 00000000000..5e3c5983d75 --- /dev/null +++ b/app/assets/javascripts/subscription.js @@ -0,0 +1,41 @@ +(function() { + var bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; + + this.Subscription = (function() { + function Subscription(container) { + this.toggleSubscription = bind(this.toggleSubscription, this); + var $container; + $container = $(container); + this.url = $container.attr('data-url'); + this.subscribe_button = $container.find('.js-subscribe-button'); + this.subscription_status = $container.find('.subscription-status'); + this.subscribe_button.unbind('click').click(this.toggleSubscription); + } + + Subscription.prototype.toggleSubscription = function(event) { + var action, btn, current_status; + btn = $(event.currentTarget); + action = btn.find('span').text(); + current_status = this.subscription_status.attr('data-status'); + btn.addClass('disabled'); + return $.post(this.url, (function(_this) { + return function() { + var status; + btn.removeClass('disabled'); + status = current_status === 'subscribed' ? 'unsubscribed' : 'subscribed'; + _this.subscription_status.attr('data-status', status); + action = status === 'subscribed' ? 'Unsubscribe' : 'Subscribe'; + btn.find('span').text(action); + _this.subscription_status.find('>div').toggleClass('hidden'); + if (btn.attr('data-original-title')) { + return btn.tooltip('hide').attr('data-original-title', action).tooltip('fixTitle'); + } + }; + })(this)); + }; + + return Subscription; + + })(); + +}).call(this); |
