From 4d87f0276bfe0eed7e9d3cca5d552c948e48e1c5 Mon Sep 17 00:00:00 2001 From: HSam Date: Thu, 3 Mar 2016 21:09:44 -0600 Subject: [PATCH 1/4] In the process of adding the delete button to the invitation panel. Apparently, the delete method doesn't work with the invitation items, so I might need to add some extra logic. --- public/src/admin/manage/registration.js | 18 ++++++++++++++++++ src/socket.io/admin/user.js | 6 +++++- src/user/invite.js | 1 + src/views/admin/manage/registration.tpl | 13 +++++++++---- 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/public/src/admin/manage/registration.js b/public/src/admin/manage/registration.js index 0592fc02a9..981f1e812c 100644 --- a/public/src/admin/manage/registration.js +++ b/public/src/admin/manage/registration.js @@ -22,6 +22,24 @@ define('admin/manage/registration', function() { }); return false; }); + + $('.invites-list').on('click', '[data-action]', function(ev) { + var $this = this; + var parent = $(this).parents('[data-invitation-mail]'); + var email = parent.attr('data-invitation-mail'); + var action = $(this).attr('data-action'); + var method = 'admin.user.deleteInvitation'; + + if (action === 'delete') { + socket.emit(method, {email: email}, function(err) { + if (err) { + return app.alertError(err.message); + } + parent.remove(); + }); + } + return false; + }); }; return Registration; diff --git a/src/socket.io/admin/user.js b/src/socket.io/admin/user.js index a241affb90..4597314ee1 100644 --- a/src/socket.io/admin/user.js +++ b/src/socket.io/admin/user.js @@ -212,6 +212,10 @@ User.search = function(socket, data, callback) { }); }; +User.deleteInvitation = function(socket, data, callback) { + user.deleteInvitation(data.email, callback); +}; + User.acceptRegistration = function(socket, data, callback) { user.acceptRegistration(data.username, callback); }; @@ -221,4 +225,4 @@ User.rejectRegistration = function(socket, data, callback) { }; -module.exports = User; \ No newline at end of file +module.exports = User; diff --git a/src/user/invite.js b/src/user/invite.js index 638432e810..99194100e3 100644 --- a/src/user/invite.js +++ b/src/user/invite.js @@ -122,6 +122,7 @@ module.exports = function(User) { User.deleteInvitation = function(email, callback) { callback = callback || function() {}; + console.log('invitation:email:' + email); db.delete('invitation:email:' + email, callback); }; diff --git a/src/views/admin/manage/registration.tpl b/src/views/admin/manage/registration.tpl index 278ba279b1..a3a8e2f905 100644 --- a/src/views/admin/manage/registration.tpl +++ b/src/views/admin/manage/registration.tpl @@ -66,18 +66,23 @@

The username will be displayed to the right of the emails for users who have redeemed their invitations.

- +
- - + + + - + From 48db16fba75cdb999177df0b316c6644c10b0aaa Mon Sep 17 00:00:00 2001 From: HSam Date: Sun, 6 Mar 2016 11:59:31 -0600 Subject: [PATCH 2/4] Finished adding a new delete to also remove the reference from the invites list on the APM. --- public/src/admin/manage/registration.js | 5 +++-- src/controllers/authentication.js | 2 +- src/socket.io/admin/user.js | 2 +- src/user.js | 2 -- src/user/invite.js | 27 +++++++++++++++++++++++-- src/views/admin/manage/registration.tpl | 4 ++-- 6 files changed, 32 insertions(+), 10 deletions(-) diff --git a/public/src/admin/manage/registration.js b/public/src/admin/manage/registration.js index 981f1e812c..6de647b467 100644 --- a/public/src/admin/manage/registration.js +++ b/public/src/admin/manage/registration.js @@ -25,13 +25,14 @@ define('admin/manage/registration', function() { $('.invites-list').on('click', '[data-action]', function(ev) { var $this = this; - var parent = $(this).parents('[data-invitation-mail]'); + var parent = $(this).parents('[data-invitation-mail][data-invited-by]'); var email = parent.attr('data-invitation-mail'); + var invitedBy = parent.attr('data-invited-by'); var action = $(this).attr('data-action'); var method = 'admin.user.deleteInvitation'; if (action === 'delete') { - socket.emit(method, {email: email}, function(err) { + socket.emit(method, {email: email, invitedBy: invitedBy}, function(err) { if (err) { return app.alertError(err.message); } diff --git a/src/controllers/authentication.js b/src/controllers/authentication.js index fa6cc6fd8c..efa30d36ba 100644 --- a/src/controllers/authentication.js +++ b/src/controllers/authentication.js @@ -93,7 +93,7 @@ function registerAndLoginUser(req, res, userData, callback) { } }, function(next) { - user.deleteInvitation(userData.email); + user.deleteInvitationKey(userData.email); plugins.fireHook('filter:register.complete', {uid: uid, referrer: req.body.referrer || nconf.get('relative_path') + '/'}, next); } ], callback); diff --git a/src/socket.io/admin/user.js b/src/socket.io/admin/user.js index 4597314ee1..c46e01a99c 100644 --- a/src/socket.io/admin/user.js +++ b/src/socket.io/admin/user.js @@ -213,7 +213,7 @@ User.search = function(socket, data, callback) { }; User.deleteInvitation = function(socket, data, callback) { - user.deleteInvitation(data.email, callback); + user.deleteInvitation(data.invitedBy, data.email, callback); }; User.acceptRegistration = function(socket, data, callback) { diff --git a/src/user.js b/src/user.js index e9546b8c6e..582686f774 100644 --- a/src/user.js +++ b/src/user.js @@ -39,7 +39,6 @@ var async = require('async'), if (err || userData.status === 'offline' || now - parseInt(userData.lastonline, 10) < 300000) { return callback(err); } - User.setUserField(uid, 'lastonline', now, callback); }); }; @@ -257,4 +256,3 @@ var async = require('async'), }(exports)); - diff --git a/src/user/invite.js b/src/user/invite.js index 99194100e3..34521550a5 100644 --- a/src/user/invite.js +++ b/src/user/invite.js @@ -120,9 +120,32 @@ module.exports = function(User) { ], callback); }; - User.deleteInvitation = function(email, callback) { + User.deleteInvitation = function(invitedBy, email, callback) { + callback = callback || function() {}; + async.waterfall([ + function getInvitedByUid(next) { + User.getUidByUsername(invitedBy, next); + }, + function deleteRegistries(invitedByUid, next) { + if (!invitedByUid) { + return next(new Error('[[error:invalid-username]]')); + } + async.parallel([ + function deleteFromReferenceList(next) { + db.setRemove('invitation:uid:' + invitedByUid, email, next); + }, + function deleteInviteKey(next) { + db.delete('invitation:email:' + email, callback); + } + ], function(err) { + next(err) + }); + } + ], callback); + }; + + User.deleteInvitationKey = function(email, callback) { callback = callback || function() {}; - console.log('invitation:email:' + email); db.delete('invitation:email:' + email, callback); }; diff --git a/src/views/admin/manage/registration.tpl b/src/views/admin/manage/registration.tpl index a3a8e2f905..7abc4f34b9 100644 --- a/src/views/admin/manage/registration.tpl +++ b/src/views/admin/manage/registration.tpl @@ -74,8 +74,8 @@ - - + - +
Inviter Username Invitee Email Invitee Username (if registered)
{invites.username} {invites.invitations.email}{invites.invitations.username}{invites.invitations.username} +
+ +
+
{invites.username} {invites.invitations.email} {invites.invitations.username} From a62e31dc7058d85bf343ca71d661f7956de2409f Mon Sep 17 00:00:00 2001 From: HSam Date: Sun, 6 Mar 2016 14:12:24 -0600 Subject: [PATCH 3/4] Finished the invite removal button changes. --- public/src/admin/manage/registration.js | 21 +++++++++++++++++---- src/views/admin/manage/registration.tpl | 2 +- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/public/src/admin/manage/registration.js b/public/src/admin/manage/registration.js index 6de647b467..451c01f716 100644 --- a/public/src/admin/manage/registration.js +++ b/public/src/admin/manage/registration.js @@ -31,12 +31,25 @@ define('admin/manage/registration', function() { var action = $(this).attr('data-action'); var method = 'admin.user.deleteInvitation'; + var removeRow = function () { + var nextRow = parent.next(), + thisRowinvitedBy = parent.find('.invited-by'), + nextRowInvitedBy = nextRow.find('.invited-by'); + if (nextRowInvitedBy.html() !== undefined && nextRowInvitedBy.html().length < 2) { + nextRowInvitedBy.html(thisRowinvitedBy.html()); + } + parent.remove(); + }; if (action === 'delete') { - socket.emit(method, {email: email, invitedBy: invitedBy}, function(err) { - if (err) { - return app.alertError(err.message); + bootbox.confirm('Are you sure you wish to delete this invitation?', function(confirm) { + if (confirm) { + socket.emit(method, {email: email, invitedBy: invitedBy}, function(err) { + if (err) { + return app.alertError(err.message); + } + removeRow(); + }); } - parent.remove(); }); } return false; diff --git a/src/views/admin/manage/registration.tpl b/src/views/admin/manage/registration.tpl index 7abc4f34b9..c3fd4400c2 100644 --- a/src/views/admin/manage/registration.tpl +++ b/src/views/admin/manage/registration.tpl @@ -76,7 +76,7 @@
{invites.username}{invites.username} {invites.invitations.email} {invites.invitations.username}
From 37d53db6930fe8b32e282888073d7361f1515027 Mon Sep 17 00:00:00 2001 From: samhax Date: Tue, 8 Mar 2016 10:34:43 -0600 Subject: [PATCH 4/4] Removed unused variable from click events. --- public/src/admin/manage/registration.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/public/src/admin/manage/registration.js b/public/src/admin/manage/registration.js index 451c01f716..55578901e8 100644 --- a/public/src/admin/manage/registration.js +++ b/public/src/admin/manage/registration.js @@ -8,7 +8,6 @@ define('admin/manage/registration', function() { Registration.init = function() { $('.users-list').on('click', '[data-action]', function(ev) { - var $this = this; var parent = $(this).parents('[data-username]'); var action = $(this).attr('data-action'); var username = parent.attr('data-username'); @@ -24,7 +23,6 @@ define('admin/manage/registration', function() { }); $('.invites-list').on('click', '[data-action]', function(ev) { - var $this = this; var parent = $(this).parents('[data-invitation-mail][data-invited-by]'); var email = parent.attr('data-invitation-mail'); var invitedBy = parent.attr('data-invited-by');