diff options
-rw-r--r-- | src/404.jade | 9 | ||||
-rw-r--r-- | src/include/layout-loggedin.jade | 32 | ||||
-rw-r--r-- | src/js/Botleagues.js | 19 | ||||
-rw-r--r-- | src/js/BotleaguesCallback.js | 15 | ||||
-rw-r--r-- | src/js/BotleaguesFrontend.js | 30 | ||||
-rw-r--r-- | src/js/forms.js | 7 | ||||
-rw-r--r-- | src/js/main.js | 26 | ||||
-rw-r--r-- | src/js/profile.js | 13 | ||||
-rw-r--r-- | src/profile.jade | 12 | ||||
-rw-r--r-- | src/register.jade | 33 |
10 files changed, 138 insertions, 58 deletions
diff --git a/src/404.jade b/src/404.jade new file mode 100644 index 0000000..65e0aed --- /dev/null +++ b/src/404.jade @@ -0,0 +1,9 @@ +extends ./include/layout-main.jade + +block menu + -var selected = '' + +block content + .jumbotron + h1 404 + p.lead Congrats. You did it: you broke my website.
\ No newline at end of file diff --git a/src/include/layout-loggedin.jade b/src/include/layout-loggedin.jade new file mode 100644 index 0000000..fca8c17 --- /dev/null +++ b/src/include/layout-loggedin.jade @@ -0,0 +1,32 @@ +doctype html +html(lang="en") + head + include ./head.jade + + body + .container + + block menu + -var selected = '/profile'; //default + + -var menu = { 'Home': '/', 'Leagues': '/leagues', 'My Bots': '/profile/bots', 'Profile': '/profile' }; + + .header.clearfix + nav: ul.nav.nav-pills.pull-right#nav + each val, key in menu + if selected === val + li.active(role='presentation'): a(href=val,title=key)= key + else + li(role='presentation'): a(href=val,title=key)= key + h3#banner Botleagues + + #messages + + block content + + footer.footer: :markdown + © [ViviSoft](http://vivisoft.nl/) 2015 + + include ./foot.jade + + block js
\ No newline at end of file diff --git a/src/js/Botleagues.js b/src/js/Botleagues.js index 21dd5d7..35c8c0d 100644 --- a/src/js/Botleagues.js +++ b/src/js/Botleagues.js @@ -2,6 +2,12 @@ function Botleagues(){} Botleagues.url = 'https://api.local.botleagues.camilstaps.nl'; +$.cookie.json = true; +Botleagues.cookie_login_email = 'botleagues_login_email'; +Botleagues.cookie_login_user_id = 'botleagues_login_user_id'; +Botleagues.cookie_login_token = 'botleagues_login_token'; +Botleagues.cookie_login_valid_till = 'botleagues_login_valid_till'; + Botleagues.request = function(user_options) { var callback = user_options.callback; @@ -39,10 +45,17 @@ Botleagues.login = function(email, password) { } }); - $.cookie(BotleaguesFrontend.cookie_login_email, email); + $.cookie(Botleagues.cookie_login_email, email); }; Botleagues.logout = function(){ - BotleaguesFrontend.clearLoginCookies(); - BotleaguesFrontend.redirect('/'); + Botleagues.clearLoginCookies(); + window.location = '/'; +}; + +Botleagues.clearLoginCookies = function() { + $.removeCookie(Botleagues.cookie_login_email); + $.removeCookie(Botleagues.cookie_login_user_id); + $.removeCookie(Botleagues.cookie_login_token); + $.removeCookie(Botleagues.cookie_login_valid_till); };
\ No newline at end of file diff --git a/src/js/BotleaguesCallback.js b/src/js/BotleaguesCallback.js index b4916c1..13305fa 100644 --- a/src/js/BotleaguesCallback.js +++ b/src/js/BotleaguesCallback.js @@ -33,21 +33,20 @@ BotleaguesCallback.register = function(data) { BotleaguesCallback.login = function(data) { if (data.user_token) { - BotleaguesFrontend.error({ - message: "Login successful!", - type: 'success' + BotleaguesFrontend.success({ + message: "Login successful!" }); - $.cookie(BotleaguesFrontend.cookie_login_user_id, data.user_token.userId); - $.cookie(BotleaguesFrontend.cookie_login_token, data.user_token.token); - $.cookie(BotleaguesFrontend.cookie_login_valid_till, + $.cookie(Botleagues.cookie_login_user_id, data.user_token.userId); + $.cookie(Botleagues.cookie_login_token, data.user_token.token); + $.cookie(Botleagues.cookie_login_valid_till, (new Date()).getTime() + Date.parse(data.user_token.valid_till) - Date.parse(data.user_token.updated_at)); - BotleaguesFrontend.refresh(); + window.location = '/profile'; } else { BotleaguesFrontend.error({ message: data.error ? data.error : "Could not login." }); - $.removeCookie(BotleaguesFrontend.cookie_login_email); + $.removeCookie(Botleagues.cookie_login_email); } };
\ No newline at end of file diff --git a/src/js/BotleaguesFrontend.js b/src/js/BotleaguesFrontend.js index b94708e..ebc71f2 100644 --- a/src/js/BotleaguesFrontend.js +++ b/src/js/BotleaguesFrontend.js @@ -1,16 +1,10 @@ function BotleaguesFrontend(){} -$.cookie.json = true; -BotleaguesFrontend.cookie_login_email = 'botleagues_login_email'; -BotleaguesFrontend.cookie_login_user_id = 'botleagues_login_user_id'; -BotleaguesFrontend.cookie_login_token = 'botleagues_login_token'; -BotleaguesFrontend.cookie_login_valid_till = 'botleagues_login_valid_till'; - -BotleaguesFrontend.error = function(user_options) { +BotleaguesFrontend.message = function(user_options) { options = { dismissable: true, prepend_to: $('#messages'), - type: 'danger' + type: 'info' }; for (var key in user_options) { options[key] = user_options[key]; @@ -27,17 +21,17 @@ BotleaguesFrontend.error = function(user_options) { html.hide().prependTo(options.prepend_to).slideDown().delay(3000).fadeOut().queue(html.remove); }; -BotleaguesFrontend.refresh = function() { - location.reload(); +BotleaguesFrontend.danger = BotleaguesFrontend.error = function(user_options) { + user_options.type = 'danger'; + return BotleaguesFrontend.message(user_options); }; -BotleaguesFrontend.redirect = function(location) { - window.location = location; -} +BotleaguesFrontend.success = function(user_options) { + user_options.type = 'success'; + return BotleaguesFrontend.message(user_options); +}; -BotleaguesFrontend.clearLoginCookies = function() { - $.removeCookie(BotleaguesFrontend.cookie_login_email); - $.removeCookie(BotleaguesFrontend.cookie_login_user_id); - $.removeCookie(BotleaguesFrontend.cookie_login_token); - $.removeCookie(BotleaguesFrontend.cookie_login_valid_till); +BotleaguesFrontend.warning = function(user_options) { + user_options.type = 'warning'; + return BotleaguesFrontend.message(user_options); };
\ No newline at end of file diff --git a/src/js/forms.js b/src/js/forms.js index 6a567a8..8a58b2d 100644 --- a/src/js/forms.js +++ b/src/js/forms.js @@ -5,8 +5,9 @@ $('form.form-register').submit(function(){ data: { email: $(this).find('input[name="email"]').val(), password: $(this).find('input[name="password"]').val() - } - }, BotleaguesCallback.register); + }, + callback: BotleaguesCallback.register + }); event.preventDefault(); }); @@ -17,5 +18,5 @@ $('.btn-botleagues-login').focus(function(){ }); $('#login-form').submit(function(){ Botleagues.login($('#login-email').val(), $('#login-password').val()); - return false; + event.preventDefault(); });
\ No newline at end of file diff --git a/src/js/main.js b/src/js/main.js index 4444273..1f869c4 100644 --- a/src/js/main.js +++ b/src/js/main.js @@ -1,21 +1,25 @@ $(document).ready(function(){ // Show profile link instead of login if user is logged in - var email = $.cookie(BotleaguesFrontend.cookie_login_email); - if (typeof email != 'undefined' && $.cookie(BotleaguesFrontend.cookie_login_valid_till) > (new Date()).getTime()) { - setupLoginMenu(email); + var email = $.cookie(Botleagues.cookie_login_email); + if (typeof email != 'undefined' && $.cookie(Botleagues.cookie_login_valid_till) > (new Date()).getTime()) { + setupLoginMenu(); } }); -function setupLoginMenu(email) { +function setupLoginMenu() { $('#nav .login-link').remove(); - $('<li>').append( - $('<a>') - .attr('role', 'presentation') - .attr('title', 'User profile') - .attr('href', '/profile') - .text(email)) - .appendTo($('#nav')); + + if ($('#nav').find('[href="/profile"]').length == 0) { + $('<li>').append( + $('<a>') + .attr('role', 'presentation') + .attr('title', 'User profile') + .attr('href', '/profile') + .text('Profile')) + .appendTo($('#nav')); + } + $('<li>').append( $('<a>') .attr('role', 'presentation') diff --git a/src/js/profile.js b/src/js/profile.js new file mode 100644 index 0000000..48600db --- /dev/null +++ b/src/js/profile.js @@ -0,0 +1,13 @@ +$(document).ready(function(){ + setupGreeter(); +}); + +function setupGreeter() { + $('#greeter').append(' ' + $.cookie(Botleagues.cookie_login_email)); + $('#banner').append( + $('<span>') + .attr('id', 'banner-email') + .addClass('text-muted') + .text(' / ' + $.cookie(Botleagues.cookie_login_email)) + ); +}
\ No newline at end of file diff --git a/src/profile.jade b/src/profile.jade new file mode 100644 index 0000000..568434c --- /dev/null +++ b/src/profile.jade @@ -0,0 +1,12 @@ +extends ./include/layout-loggedin.jade + +block menu + -var selected = '/profile' + +block content + .jumbotron + h1 Welcome back + p.lead#greeter You're logged in as + +block js + script(src='/assets/js/profile.js', type='text/javascript')
\ No newline at end of file diff --git a/src/register.jade b/src/register.jade index 8f79715..b373d1c 100644 --- a/src/register.jade +++ b/src/register.jade @@ -6,21 +6,24 @@ block menu block content .row .col-lg-6 - h4 Register - form.form-register(action='#') - .form-group - label(for="register-email") Email - input.form-control#register-email(type='email',name='email',placeholder="Enter email") - .form-group - label(for="register-password") Password - input.form-control#register-password(type='password',name='password',placeholder="Enter password") - .form-group - label(for="register-password2") Password (confirmation) - input.form-control#register-password2(type='password',name='password',placeholder="Enter password again") - .checkbox: label - input#accepts-toc(type='checkbox',name="accepts-toc") - | I accept the terms and conditions - button.btn.btn-lg.btn-success.pull-right(type='submit') Register + div.well.bs-component + h4 Register + form.form-register(action='#') + .form-group + label(for="register-email") Email + input.form-control#register-email(type='email',name='email',placeholder="Enter email") + .form-group + label(for="register-password") Password + input.form-control#register-password(type='password',name='password',placeholder="Enter password") + .form-group + label(for="register-password2") Password (confirmation) + input.form-control#register-password2(type='password',name='password',placeholder="Enter password again") + .checkbox: label + input#accepts-toc(type='checkbox',name="accepts-toc") + | I accept the terms and conditions + button.btn.btn-lg.btn-success.pull-right(type='submit') Register + br(style='clear:both;') + .col-lg-6 h4 Subheading p Donec id elit non mi porta gravida at eget metus. Maecenas faucibus mollis interdum. |