/www/jssrc/blerg/EmailForm.js
enyo.kind({
name: 'blerg.EmailForm',
handlers: {
onLogin: "loginStatusChange"
},
components: [
{name: 'emailRegisterForm', components: [
{content: "Register an email address to get daily digest updates of your feed. We can also use this address to send you a password recovery link if you forget your password.", tag: 'p'},
{tag: 'form', onsubmit: 'registerEmail', components: [
{kind: 'onyx.InputDecorator', classes: 'recovery', components: [
{kind: 'onyx.Input', name: 'email'}
]},
{kind: 'onyx.Button', content: 'Register', onclick: 'registerEmail'}
]}
]},
{name: 'emailStatus', showing: false, components: [
{tag: 'p', components: [
{content: 'Registered email: ', tag: null},
{name: 'emailOutput', tag: 'span', classes: 'email-address'},
]},
{kind: 'onyx.Button', content: 'Deregister', onclick: 'deregisterEmail'}
]},
{name: 'emailSent', showing: false, components: [
{content: 'An email has been sent to ', tag: null},
{name: 'emailSentAddress', tag: 'span', classes: 'email-address'},
{content: '.', tag: null}
]}
],
create: function() {
this.inherited(arguments);
this.fetchEmailStatus();
},
registerEmail: function(inSender, inEvent) {
var email = this.$.email.getValue();
this.$.email.setValue('');
this.$.email.node.blur();
var req = new enyo.Ajax({
url: '/aux/email/register',
method: 'POST',
postBody: {
email: email
}
});
req.response(this, function(inSender, inResponse) {
this.$.emailSentAddress.setContent(email);
this.$.emailRegisterForm.hide();
this.$.emailSent.show();
});
req.error(this, function(inSender, inResponse) {
alert('Failed to register email.');
});
req.go();
},
fetchEmailStatus: function() {
var req = new enyo.Ajax({
url: '/aux/email/status'
});
req.response(this, function(inSender, inResponse) {
if (inResponse.email) {
this.$.emailRegisterForm.hide();
this.$.emailStatus.show();
this.$.emailOutput.setContent(inResponse.email);
} else {
this.$.emailRegisterForm.show();
}
});
req.go();
},
deregisterEmail: function(inSender, inEvent) {
var req = new enyo.Ajax({
url: '/aux/email/cancel'
});
req.response(this, function(inSender, inResponse) {
if (inResponse.status == 'success') {
this.$.emailStatus.hide();
this.$.emailRegisterForm.show();
alert('Email notifications deregistered');
} else {
alert('Failed to deregister');
}
});
req.error(this, function(inSender, inResponse) {
alert('Failed to deregister');
});
req.go();
},
loginStatusChange: function(inSender, inEvent) {
this.fetchEmailStatus();
}
});