From 52ea2f068922de732c1f80588eb1e9bce112454d Mon Sep 17 00:00:00 2001 From: Michael Q Larson Date: Thu, 15 Jan 2015 15:41:50 -0800 Subject: [PATCH] Revert "fix the lack of url validation in the portfolio section" This reverts commit af63d84a9d6384421a639d531def46a6fd30438e. --- views/account/profile.jade | 577 +++++++++++++++++++------------------ 1 file changed, 290 insertions(+), 287 deletions(-) diff --git a/views/account/profile.jade b/views/account/profile.jade index 22a9e0fe0d..1712a2b7b8 100644 --- a/views/account/profile.jade +++ b/views/account/profile.jade @@ -3,231 +3,235 @@ block content .panel.panel-primary.min-height-1000(ng-controller="profileValidationController") .panel-heading.text-center Update your profile here: .panel-body - .container.text-center - form.form-horizontal(action='/account/profile', method='POST', novalidate='novalidate', name='profileForm' ng-show="asyncComplete") - input(type='hidden', name='_csrf', value=_csrf) - .col-sm-4.col-sm-offset-5 - h2 Bio - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='name') Name * + .container.text-center + form.form-horizontal(action='/account/profile', method='POST', novalidate='novalidate', name='profileForm' ng-show="asyncComplete") + input(type='hidden', name='_csrf', value=_csrf) + + .col-sm-4.col-sm-offset-5 + h2 Bio + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='name') Name * + .col-sm-4 + input.form-control(type='text', placeholder='Name', name='name', autocomplete="off", ng-model='user.profile.name', ng-minlength='3', ng-maxlength='50', required='required', id='name') + .col-sm-4.col-sm-offset-5(ng-show="profileForm.name.$invalid && profileForm.name.$error.required") + alert(type='danger') + span.ion-close-circled(id='#name-error') + | Your name is required. + .col-sm-4.col-sm-offset-5(ng-show='profileForm.name.$error.minlength && !profileForm.name.$pristine') + alert(type='danger') + span.ion-close-circled + | Your name must be at least 3 characters. + .col-sm-4.col-sm-offset-5(ng-show='profileForm.name.$error.maxlength && !profileForm.name.$pristine') + alert(type='danger') + span.ion-close-circled + | Your name must be fewer than 50 characters. + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='username') Username (path to public profile) * + .col-sm-4 + input.form-control(type='text', placeholder='username' name='username', autocomplete="off", id='username', ng-model='user.profile.username', required='required', ng-minlength='5', ng-maxlength='20', ng-keypress='', unique-username='', ng-pattern="/^[A-z0-9_]+$/") + .col-sm-4.col-sm-offset-5(ng-show="profileForm.username.$error.pattern") + alert(type='danger') + span.ion-close-circled + | Your username should only contain letters, numbers and underscores (az10_). + .col-sm-4.col-sm-offset-5(ng-show="profileForm.username.$error.required") + alert(type='danger') + span.ion-close-circled + | Your username is required. + .col-sm-4.col-sm-offset-5(ng-show="profileForm.username.$error.minlength && !profileForm.username.$pristine") + alert(type='danger') + span.ion-close-circled + | Your username must be at least 5 characters. + .col-sm-4.col-sm-offset-5(ng-show="profileForm.username.$error.maxlength && !profileForm.username.$pristine") + alert(type='danger') + span.ion-close-circled + | Your username must be fewer than 15 characters. + .col-sm-4.col-sm-offset-5(ng-show="profileForm.username.$error.unique && !profileForm.username.$pristine && $scope.storedUsername !== user.profile.username") + alert(type='danger') + span.ion-close-circled + | That username is already taken. + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='email') Email * + .col-sm-4 + input.form-control(type='email', name='email', id='email', autocomplete="off", ng-model='user.email', required='required', ng-keypress='', unique-email='') + .col-sm-4.col-sm-offset-5(ng-show="profileForm.email.$error.required") + alert(type='danger') + span.ion-close-circled + | Your email address is required. + .col-sm-4.col-sm-offset-5(ng-show="profileForm.$error.email && !profileForm.email.$pristine") + alert(type='danger') + span.ion-close-circled + | Please enter a valid email format. + .col-sm-4.col-sm-offset-5(ng-show="profileForm.email.$error.unique && !profileForm.email.$pristine") + alert(type='danger') + span.ion-close-circled + | That email is already taken. + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='location') Location + .col-sm-4 + input.form-control(type='text', name='location', autocomplete="off", id='location', ng-model='user.profile.location') + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='email') Link to Profile Photo (1:1 ratio) .col-sm-4 - input.form-control(type='text', placeholder='Name', name='name', autocomplete="off", ng-model='user.profile.name', ng-minlength='3', ng-maxlength='50', required='required', id='name') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.name.$invalid && profileForm.name.$error.required") - alert(type='danger') - span.ion-close-circled(id='#name-error') - | Your name is required. - .col-sm-4.col-sm-offset-5(ng-show='profileForm.name.$error.minlength && !profileForm.name.$pristine') + input.form-control(type='url', name='picture', id='picture', ng-model='user.profile.picture', placeholder='http://') + .col-sm-4.col-sm-offset-5(ng-show="profileForm.picture.$error.url && !profileForm.picture.$pristine") alert(type='danger') span.ion-close-circled - | Your name must be at least 3 characters. - .col-sm-4.col-sm-offset-5(ng-show='profileForm.name.$error.maxlength && !profileForm.name.$pristine') - alert(type='danger') - span.ion-close-circled - | Your name must be fewer than 50 characters. - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='username') Username (path to public profile) * + | Please enter a valid URL format (http://www.example.com). + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='bio') Bio (140 characters) + .col-sm-4 + input.form-control(type='text', name='bio', autocomplete="off", ng-model='user.profile.bio', ng-maxlength='140', id='bio') + .col-sm-4.col-sm-offset-5(ng-show='profileForm.bio.$error.maxlength && !profileForm.bio.$pristine') + alert(type='danger') + span.ion-close-circled + | Your bio must be fewer than 140 characters. + + .form-group + .col-sm-offset-5.col-sm-4 + button.btn.btn-primary.btn-block(type='submit', ng-disabled='profileForm.$invalid') + span.ion-edit + | Update my Bio + + .col-sm-4.col-sm-offset-5 + h2 Social Profiles + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='email') Twitter + .col-sm-4 + .input-group.twitter-input + span.input-group-addon @ + input.form-control(type='text', name='twitterHandle', autocomplete="off", id='twitterHandle', ng-model='user.profile.twitterHandle', ng-maxlength='15', ng-pattern="/^[A-z0-9_]+$/") + .col-sm-4.col-sm-offset-5(ng-show="profileForm.twitterHandle.$error.pattern") + alert(type='danger') + span.ion-close-circled + | Your Twitter handle should only contain letters, numbers and underscores (az10_). + .col-sm-4.col-sm-offset-5(ng-show='profileForm.twitterHandle.$error.maxlength && !profileForm.twitterHandle.$pristine') + alert(type='danger') + span.ion-close-circled + | Your name must be fewer than 15 characters. + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='email') Github + .col-sm-4 + input.form-control(type='url', name='githubProfile', id='githubProfile', autocomplete="off", ng-model='user.profile.githubProfile', placeholder='http://') + .col-sm-4.col-sm-offset-5(ng-show="profileForm.githubProfile.$error.url && !profileForm.githubProfile.$pristine") + alert(type='danger') + span.ion-close-circled + | Please enter a valid URL format (http://www.example.com). + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='email') CodePen + .col-sm-4 + input.form-control(type='url', name='codepenProfile', id='codepenProfile', autocomplete="off", ng-model='user.profile.codepenProfile', placeholder='http://') + .col-sm-4.col-sm-offset-5(ng-show="profileForm.codepenProfile.$error.url && !profileForm.codepenProfile.$pristine") + alert(type='danger') + span.ion-close-circled + | Please enter a valid URL format (http://www.example.com). + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='email') CoderByte + .col-sm-4 + input.form-control(type='url', name='coderbyteProfile', id='coderbyteProfile', autocomplete="off", ng-model='user.profile.coderbyteProfile', placeholder='http://') + .col-sm-4.col-sm-offset-5(ng-show="profileForm.coderbyteProfile.$error.url && !profileForm.coderbyteProfile.$pristine") + alert(type='danger') + span.ion-close-circled + | Please enter a valid URL format (http://www.example.com). + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='email') LinkedIn + .col-sm-4 + input.form-control(type='url', name='linkedinProfile', id='linkedinProfile', autocomplete="off", ng-model='user.profile.linkedinProfile', placeholder='http://') + .col-sm-4.col-sm-offset-5(ng-show="profileForm.linkedinProfile.$error.url && !profileForm.linkedinProfile.$pristine") + alert(type='danger') + span.ion-close-circled + | Please enter a valid URL format (http://www.example.com). + + .form-group + .col-sm-offset-5.col-sm-4 + button.btn.btn-primary.btn-block(type='submit', ng-disabled='profileForm.$invalid') + span.ion-edit + | Update my Social Links + + .col-sm-4.col-sm-offset-5.negative-bottom + h2 Portfolio + + .col-sm-4.col-sm-offset-5.flat-top + h3 First Portfolio Project + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='website1Title') Title + .col-sm-4 + input.form-control(type='text', name='website1Title', id='website1Title', autocomplete="off", ng-model='user.portfolio.website1Title', ng-maxlength='140') + .col-sm-4.col-sm-offset-5(ng-show="profileForm.website1Title.$error.maxlength && !profileForm.website1Title.$pristine") + alert(type='danger') + span.ion-close-circled + | Portfolio project title must be fewer than 140 characters. + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='website1Link') Link + .col-sm-4 + input.form-control(type='text', name='website1Link', id='website1Link', autocomplete="off", ng-model='user.portfolio.website1Link', placeholder='http://') + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='website1Image') Image Link (4:3 ratio) + .col-sm-4 + input.form-control(type='text', name='website1Image', id='website1Image', autocomplete="off", ng-model='user.portfolio.website1Image', placeholder='http://') + + .col-sm-4.col-sm-offset-5.flat-top + h3 Second Portfolio Project + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='website2Title') Title .col-sm-4 - input.form-control(type='text', placeholder='username' name='username', autocomplete="off", id='username', ng-model='user.profile.username', required='required', ng-minlength='5', ng-maxlength='20', ng-keypress='', unique-username='', ng-pattern="/^[A-z0-9_]+$/") - .col-sm-4.col-sm-offset-5(ng-show="profileForm.username.$error.pattern") - alert(type='danger') - span.ion-close-circled - | Your username should only contain letters, numbers and underscores (az10_). - .col-sm-4.col-sm-offset-5(ng-show="profileForm.username.$error.required") - alert(type='danger') - span.ion-close-circled - | Your username is required. - .col-sm-4.col-sm-offset-5(ng-show="profileForm.username.$error.minlength && !profileForm.username.$pristine") - alert(type='danger') - span.ion-close-circled - | Your username must be at least 5 characters. - .col-sm-4.col-sm-offset-5(ng-show="profileForm.username.$error.maxlength && !profileForm.username.$pristine") - alert(type='danger') - span.ion-close-circled - | Your username must be fewer than 15 characters. - .col-sm-4.col-sm-offset-5(ng-show="profileForm.username.$error.unique && !profileForm.username.$pristine && $scope.storedUsername !== user.profile.username") - alert(type='danger') - span.ion-close-circled - | That username is already taken. - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='email') Email * + input.form-control(type='text', name='website2Title', id='website2Title', autocomplete="off", ng-model='user.portfolio.website2Title', ng-maxlength='140') + .col-sm-4.col-sm-offset-5(ng-show="profileForm.website2Title.$error.maxlength && !profileForm.website2Title.$pristine") + alert(type='danger') + span.ion-close-circled + | Portfolio project title must be fewer than 140 characters. + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='website2Link') Link .col-sm-4 - input.form-control(type='email', name='email', id='email', autocomplete="off", ng-model='user.email', required='required', ng-keypress='', unique-email='') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.email.$error.required") - alert(type='danger') - span.ion-close-circled - | Your email address is required. - .col-sm-4.col-sm-offset-5(ng-show="profileForm.$error.email && !profileForm.email.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid email format. - .col-sm-4.col-sm-offset-5(ng-show="profileForm.email.$error.unique && !profileForm.email.$pristine") - alert(type='danger') - span.ion-close-circled - | That email is already taken. - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='location') Location + input.form-control(type='text', name='website2Link', id='website2Link', autocomplete="off", ng-model='user.portfolio.website2Link', placeholder='http://') + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='website2Image') Image Link (4:3 ratio) .col-sm-4 - input.form-control(type='text', name='location', autocomplete="off", id='location', ng-model='user.profile.location') - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='email') Link to Profile Photo (1:1 ratio) - .col-sm-4 - input.form-control(type='url', name='picture', id='picture', ng-model='user.profile.picture', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.picture.$error.url && !profileForm.picture.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='bio') Bio (140 characters) + input.form-control(type='text', name='website2Image', id='website2Image', autocomplete="off", ng-model='user.portfolio.website2Image', placeholder='http://') + + .col-sm-4.col-sm-offset-5.flat-top + h3 Third Portfolio Project + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='website3Title') Title .col-sm-4 - input.form-control(type='text', name='bio', autocomplete="off", ng-model='user.profile.bio', ng-maxlength='140', id='bio') - .col-sm-4.col-sm-offset-5(ng-show='profileForm.bio.$error.maxlength && !profileForm.bio.$pristine') - alert(type='danger') - span.ion-close-circled - | Your bio must be fewer than 140 characters. - .form-group + input.form-control(type='text', name='website3Title', id='website3Title', autocomplete="off", ng-model='user.portfolio.website3Title', ng-maxlength='140') + .col-sm-4.col-sm-offset-5(ng-show="profileForm.website3Title.$error.maxlength && !profileForm.website3Title.$pristine") + alert(type='danger') + span.ion-close-circled + | Portfolio project title must be fewer than 140 characters. + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='website3Link') Link + .col-sm-4 + input.form-control(type='text', name='website3Link', id='website3Link', autocomplete="off", ng-model='user.portfolio.website3Link', placeholder='http://') + + .form-group + label.col-sm-3.col-sm-offset-2.control-label(for='website3Image') Image Link (4:3 ratio) + .col-sm-4 + input.form-control(type='text', name='website3Image', id='website3Image', autocomplete="off", ng-model='user.portfolio.website3Image', placeholder='http://') + + .form-group .col-sm-offset-5.col-sm-4 button.btn.btn-primary.btn-block(type='submit', ng-disabled='profileForm.$invalid') span.ion-edit - | Update my Bio - .col-sm-4.col-sm-offset-5 - h2 Social Profiles - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='email') Twitter - .col-sm-4 - .input-group.twitter-input - span.input-group-addon @ - input.form-control(type='text', name='twitterHandle', autocomplete="off", id='twitterHandle', ng-model='user.profile.twitterHandle', ng-maxlength='15', ng-pattern="/^[A-z0-9_]+$/") - .col-sm-4.col-sm-offset-5(ng-show="profileForm.twitterHandle.$error.pattern") - alert(type='danger') - span.ion-close-circled - | Your Twitter handle should only contain letters, numbers and underscores (az10_). - .col-sm-4.col-sm-offset-5(ng-show='profileForm.twitterHandle.$error.maxlength && !profileForm.twitterHandle.$pristine') - alert(type='danger') - span.ion-close-circled - | Your name must be fewer than 15 characters. - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='email') Github - .col-sm-4 - input.form-control(type='url', name='githubProfile', id='githubProfile', autocomplete="off", ng-model='user.profile.githubProfile', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.githubProfile.$error.url && !profileForm.githubProfile.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='email') CodePen - .col-sm-4 - input.form-control(type='url', name='codepenProfile', id='codepenProfile', autocomplete="off", ng-model='user.profile.codepenProfile', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.codepenProfile.$error.url && !profileForm.codepenProfile.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='email') CoderByte - .col-sm-4 - input.form-control(type='url', name='coderbyteProfile', id='coderbyteProfile', autocomplete="off", ng-model='user.profile.coderbyteProfile', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.coderbyteProfile.$error.url && !profileForm.coderbyteProfile.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='email') LinkedIn - .col-sm-4 - input.form-control(type='url', name='linkedinProfile', id='linkedinProfile', autocomplete="off", ng-model='user.profile.linkedinProfile', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.linkedinProfile.$error.url && !profileForm.linkedinProfile.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .form-group - .col-sm-offset-5.col-sm-4 - button.btn.btn-primary.btn-block(type='submit', ng-disabled='profileForm.$invalid') - span.ion-edit - | Update my Social Links - .col-sm-4.col-sm-offset-5.negative-bottom - h2 Portfolio - .col-sm-4.col-sm-offset-5.flat-top - h3 First Portfolio Project - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='website1Title') Title - .col-sm-4 - input.form-control(type='text', name='website1Title', id='website1Title', autocomplete="off", ng-model='user.portfolio.website1Title', ng-maxlength='140') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website1Title.$error.maxlength && !profileForm.website1Title.$pristine") - alert(type='danger') - span.ion-close-circled - | Portfolio project title must be fewer than 140 characters. - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='website1Link') Link - .col-sm-4 - input.form-control(type='url', name='website1Link', id='website1Link', autocomplete="off", ng-model='user.portfolio.website1Link', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website1Link.$error.url && !profileForm.website1Link.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='website1Image') Image Link (4:3 ratio) - .col-sm-4 - input.form-control(type='url', name='website1Image', id='website1Image', autocomplete="off", ng-model='user.portfolio.website1Image', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website1Image.$error.url && !profileForm.website1Image.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .col-sm-4.col-sm-offset-5.flat-top - h3 Second Portfolio Project - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='website2Title') Title - .col-sm-4 - input.form-control(type='text', name='website2Title', id='website2Title', autocomplete="off", ng-model='user.portfolio.website2Title', ng-maxlength='140') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website2Title.$error.maxlength && !profileForm.website2Title.$pristine") - alert(type='danger') - span.ion-close-circled - | Portfolio project title must be fewer than 140 characters. - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='website2Link') Link - .col-sm-4 - input.form-control(type='url', name='website2Link', id='website2Link', autocomplete="off", ng-model='user.portfolio.website2Link', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website2Link.$error.url && !profileForm.website2Link.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='website2Image') Image Link (4:3 ratio) - .col-sm-4 - input.form-control(type='url', name='website2Image', id='website2Image', autocomplete="off", ng-model='user.portfolio.website2Image', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website2Image.$error.url && !profileForm.website2Image.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .col-sm-4.col-sm-offset-5.flat-top - h3 Third Portfolio Project - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='website3Title') Title - .col-sm-4 - input.form-control(type='text', name='website3Title', id='website3Title', autocomplete="off", ng-model='user.portfolio.website3Title', ng-maxlength='140') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website3Title.$error.maxlength && !profileForm.website3Title.$pristine") - alert(type='danger') - span.ion-close-circled - | Portfolio project title must be fewer than 140 characters. - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='website3Link') Link - .col-sm-4 - input.form-control(type='url', name='website3Link', id='website3Link', autocomplete="off", ng-model='user.portfolio.website3Link', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website3Link.$error.url && !profileForm.website3Link.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .form-group - label.col-sm-3.col-sm-offset-2.control-label(for='website3Image') Image Link (4:3 ratio) - .col-sm-4 - input.form-control(type='url', name='website3Image', id='website3Image', autocomplete="off", ng-model='user.portfolio.website3Image', placeholder='http://') - .col-sm-4.col-sm-offset-5(ng-show="profileForm.website3Image.$error.url && !profileForm.website3Image.$pristine") - alert(type='danger') - span.ion-close-circled - | Please enter a valid URL format (http://www.example.com). - .form-group - .col-sm-offset-5.col-sm-4 - button.btn.btn-primary.btn-block(type='submit', ng-disabled='profileForm.$invalid') - span.ion-edit - | Update my Portfolio - br + | Update my Portfolio + br .panel.panel-primary .panel-heading.text-center Actions .panel-body @@ -238,82 +242,81 @@ block content a.btn.btn-lg.btn-block.btn-warning.btn-link-social(href='/logout') Sign out br - if (!user.google || !user.facebook || /*!user.github ||*/ !user.linkedin || !user.twitter) - .panel.panel-primary - .panel-heading.text-center Link other services to your account: - .panel-body - - if (!user.google) - .col-xs-12 - a.btn.btn-lg.btn-block.btn-google-plus.btn-link-social(href='/auth/google') - i.fa.fa-google-plus - | Link Google with your account - - if (!user.facebook) - .col-xs-12 - a.btn.btn-lg.btn-block.btn-facebook.btn-link-social(href='/auth/facebook') - i.fa.fa-facebook - | Link Facebook with your account - //- if (!user.github) - // .col-xs-12 - // a.btn.btn-lg.btn-block.btn-github.btn-link-social(href='/auth/github') - // i.fa.fa-github - // | Link GitHub with your account - - if (!user.linkedin) - .col-xs-12 - a.btn.btn-lg.btn-block.btn-linkedin.btn-link-social(href='/auth/linkedin') - i.fa.fa-linkedin - | Link LinkedIn with your account - - if (!user.twitter) - .col-xs-12 - a.btn.btn-lg.btn-block.btn-twitter.btn-link-social(href='/auth/twitter') - i.fa.fa-twitter - | Link Twitter with your account - br + .panel.panel-primary + .panel-heading.text-center Link other services to your account: + .panel-body + - if (!user.google) + .col-xs-12 + a.btn.btn-lg.btn-block.btn-google-plus.btn-link-social(href='/auth/google') + i.fa.fa-google-plus + | Link Google with your account + - if (!user.facebook) + .col-xs-12 + a.btn.btn-lg.btn-block.btn-facebook.btn-link-social(href='/auth/facebook') + i.fa.fa-facebook + | Link Facebook with your account + //- if (!user.github) + // .col-xs-12 + // a.btn.btn-lg.btn-block.btn-github.btn-link-social(href='/auth/github') + // i.fa.fa-github + // | Link GitHub with your account + - if (!user.linkedin) + .col-xs-12 + a.btn.btn-lg.btn-block.btn-linkedin.btn-link-social(href='/auth/linkedin') + i.fa.fa-linkedin + | Link LinkedIn with your account + - if (!user.twitter) + .col-xs-12 + a.btn.btn-lg.btn-block.btn-twitter.btn-link-social(href='/auth/twitter') + i.fa.fa-twitter + | Link Twitter with your account + br - if (ch[0] > 0) - .panel.panel-primary - .panel-heading.text-center Completed Challenges: - .panel-body - .col-xs-12 - table.table.table-striped + .panel.panel-primary + .panel-heading.text-center Completed Challenges: + .panel-body + .col-xs-12 + table.table.table-striped thead + tr + th Challenge + th Date Finished + for challenge in challenges + if ch[challenge.challengeNumber] > 0 tr - th Challenge - th Date Finished - for challenge in challenges - if ch[challenge.challengeNumber] > 0 - tr - td= challenges[challenge.challengeNumber].name - td= moment(ch[challenge.challengeNumber], 'X').format("MMM DD, YYYY") - br + td= challenges[challenge.challengeNumber].name + td= moment(ch[challenge.challengeNumber], 'X').format("MMM DD, YYYY") + br .panel.panel-danger .panel-heading.text-center Danger Zone: .panel-body .col-xs-12.text-center - button.btn.btn-danger.btn-small.confirm-deletion - span.ion-trash-b - | I want to delete my account - br - br - script. - $('.confirm-deletion').on("click", function () { - $('#modal-dialog').modal('show'); - }); - #modal-dialog.modal.animated.wobble - .modal-dialog - .modal-content - .modal-header - a.close(href='#', data-dismiss='modal', aria-hidden='true') × - h3 Are you really leaving us? - .modal-body - p Pro Tip: If you tweet feedback to  - a(href="https://twitter.com/intent/tweet?text=Hey%20@freecodecamp") @FreeCodeCamp - | , we'll act quickly on it! - .modal-footer - a.btn.btn-success.btn-block(href='#', data-dismiss='modal', aria-hidden='true') - span.ion-happy - | Nevermind, I'll stick around - br - form(action='/account/delete', method='POST') - input(type='hidden', name='_csrf', value=_csrf) - button.btn.btn-danger.btn-block(type='submit') - span.ion-trash-b - | Yes, Delete my account - \ No newline at end of file + button.btn.btn-danger.btn-small.confirm-deletion + span.ion-trash-b + | I want to delete my account + br + br + script. + $('.confirm-deletion').on("click", function() { + $('#modal-dialog').modal('show'); + }); + #modal-dialog.modal.animated.wobble + .modal-dialog + .modal-content + .modal-header + a.close(href='#', data-dismiss='modal', aria-hidden='true') × + h3 Are you really leaving us? + .modal-body + p Pro Tip: If you tweet feedback to  + a(href="https://twitter.com/intent/tweet?text=Hey%20@freecodecamp") @FreeCodeCamp + | , we'll act quickly on it! + .modal-footer + a.btn.btn-success.btn-block(href='#', data-dismiss='modal', aria-hidden='true') + span.ion-happy + | Nevermind, I'll stick around + br + form(action='/account/delete', method='POST') + input(type='hidden', name='_csrf', value=_csrf) + button.btn.btn-danger.btn-block(type='submit') + span.ion-trash-b + | Yes, Delete my account