Merge pull request #10824 from dhcodes/feature/add-progress-reset-option-in-settings

Add reset progress option to user settings
This commit is contained in:
Jonathan
2016-10-26 16:09:15 +01:00
committed by GitHub
3 changed files with 73 additions and 0 deletions

View File

@@ -184,6 +184,16 @@ module.exports = function(app) {
sendNonUserToMap,
getAccount
);
router.get(
'/reset-my-progress',
sendNonUserToMap,
showResetProgress
);
api.post(
'/account/resetprogress',
ifNoUser401,
postResetProgress
);
// Ensure these are the last routes!
api.get(
@@ -455,6 +465,35 @@ module.exports = function(app) {
});
}
function showResetProgress(req, res) {
return res.render('account/reset-progress', { title: 'Reset My Progress!'
});
}
function postResetProgress(req, res, next) {
User.findById(req.user.id, function(err, user) {
if (err) { return next(err); }
return user.updateAttributes({
progressTimestamps: [{
timestamp: Date.now()
}],
currentStreak: 0,
longestStreak: 0,
currentChallengeId: '',
isBackEndCert: false,
isFullStackCert: false,
isDataVisCert: false,
isFrontEndCert: false,
challengeMap: {},
challegesCompleted: []
}, function(err) {
if (err) { return next(err); }
req.flash('info', { msg: 'You\'ve successfully reset your progress.' });
return res.redirect('/');
});
});
}
function getReset(req, res) {
if (!req.accessToken) {
req.flash('errors', { msg: 'access token invalid' });

View File

@@ -0,0 +1,25 @@
extends ../layout
block content
include ../partials/flyer
#modal-dialog.modal.animated.wobble
.modal-dialog
.modal-content
.modal-header
a.close(href='/settings', data-dismiss='modal', aria-hidden='true') ×
h3 You don't really want to reset your progress, do you?
.modal-body
p This will really delete all of your progress and brownie points.
p We won't be able to recover any of it for you later, even if you change your mind.
.modal-footer
a.btn.btn-success.btn-block(href='/settings', data-dismiss='modal', aria-hidden='true')
| Nevermind, I don't want to delete all of my progress and brownie points
.spacer
form(action='/account/resetprogress', method='POST')
input(type='hidden', name='_csrf', value=_csrf)
button.btn.btn-danger.btn-block(type='submit')
| I am 100% sure I want to reset all of my progress and brownie points
script.
document.addEventListener('DOMContentLoaded', function() {
const modal$ = document.getElementById('modal-dialog');
modal$.classList.add('show');
});