aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gulpfile.js10
-rw-r--r--package.json1
-rw-r--r--src/js/Botleagues.coffee54
-rw-r--r--src/js/Botleagues.js61
-rw-r--r--src/js/BotleaguesCallback.coffee52
-rw-r--r--src/js/BotleaguesCallback.js52
-rw-r--r--src/js/BotleaguesFrontend.coffee42
-rw-r--r--src/js/BotleaguesFrontend.js37
-rw-r--r--src/js/forms.coffee25
-rw-r--r--src/js/forms.js22
-rw-r--r--src/js/main.coffee29
-rw-r--r--src/js/main.js27
-rw-r--r--src/js/profile.coffee (renamed from src/js/profile.js)17
13 files changed, 220 insertions, 209 deletions
diff --git a/gulpfile.js b/gulpfile.js
index 96768e7..4a0dff1 100644
--- a/gulpfile.js
+++ b/gulpfile.js
@@ -2,6 +2,7 @@
var gulp = require('gulp'),
changed = require('gulp-changed'),
+ coffee = require('gulp-coffee'),
concat = require('gulp-concat'),
debug = require('gulp-debug'),
foreach = require('gulp-foreach'),
@@ -153,11 +154,16 @@ gulp.task('3rd-party-scripts', function(){
});
gulp.task('scripts', function(){
- var src = './src/js/*.js';
+ var src = [
+ './src/js/*.js',
+ './src/js/*.coffee'
+ ]
+ ;
var dst = './build/assets/js';
return gulp.src(src)
- .pipe(changed(dst))
+ .pipe(changed(dst, { extension: 'js' }))
+ .pipe(gulpif(/\.coffee$/, coffee()))
.pipe(gulpif(production, stripdebug()))
.pipe(gulpif(production, uglify()))
.pipe(gulp.dest(dst));
diff --git a/package.json b/package.json
index d5c122a..61bf2fe 100644
--- a/package.json
+++ b/package.json
@@ -9,6 +9,7 @@
"gulp": "^3.8.11",
"gulp-autoprefixer": "^2.1.0",
"gulp-changed": "~1.2.1",
+ "gulp-coffee": "~2.3.1",
"gulp-concat": "~2.5.2",
"gulp-debug": "^2.0.0",
"gulp-foreach": "^0.1.0",
diff --git a/src/js/Botleagues.coffee b/src/js/Botleagues.coffee
new file mode 100644
index 0000000..06ace76
--- /dev/null
+++ b/src/js/Botleagues.coffee
@@ -0,0 +1,54 @@
+$.cookie.json = true
+
+@Botleagues =
+
+ url: 'https://api.local.botleagues.camilstaps.nl'
+
+ cookie_login_email: 'botleagues_login_email'
+ cookie_login_user_id: 'botleagues_login_user_id'
+ cookie_login_token: 'botleagues_login_token'
+ cookie_login_valid_till: 'botleagues_login_valid_till'
+
+ request: (user_options) ->
+ callback = user_options.callback
+
+ options =
+ method: 'GET'
+ dataType: 'json'
+ complete: (data) ->
+ callback data.responseJSON
+
+ url = Botleagues.url + '/' + user_options.endpoint
+ delete user_options.callback
+ delete user_options.endpoint
+
+ for key, option of user_options
+ options[key] = option
+
+ jQuery.ajax url, options
+
+ return
+
+ login: (email, password) ->
+ Botleagues.request
+ endpoint: 'user_token'
+ method: 'POST'
+ callback: BotleaguesCallback.login
+ headers:
+ 'Authorization': 'Basic ' + btoa(email + ':' + password)
+
+ $.cookie Botleagues.cookie_login_email, email
+
+ return
+
+ logout: ->
+ Botleagues.clearLoginCookies()
+ window.location = '/'
+ return
+
+ clearLoginCookies: ->
+ $.removeCookie Botleagues.cookie_login_email
+ $.removeCookie Botleagues.cookie_login_user_id
+ $.removeCookie Botleagues.cookie_login_token
+ $.removeCookie Botleagues.cookie_login_valid_till
+ return \ No newline at end of file
diff --git a/src/js/Botleagues.js b/src/js/Botleagues.js
deleted file mode 100644
index 35c8c0d..0000000
--- a/src/js/Botleagues.js
+++ /dev/null
@@ -1,61 +0,0 @@
-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;
-
- var options = {
- endpoint: null,
- method: 'GET',
- dataType: 'json',
- complete: function(data) {
- callback(data.responseJSON);
- }
- };
-
- var url = Botleagues.url + '/' + user_options['endpoint'];
- delete user_options['callback'];
- delete user_options['endpoint'];
-
- for (var name in user_options) {
- options[name] = user_options[name];
- }
-
- jQuery.ajax(url, options);
-};
-
-Botleagues.redirect = function(user_options) {
- window.location = Botleagues.url + '/' + user_options['endpoint'];
-};
-
-Botleagues.login = function(email, password) {
- Botleagues.request({
- endpoint: 'user_token',
- method: 'POST',
- callback: BotleaguesCallback.login,
- headers: {
- 'Authorization': 'Basic ' + btoa(email + ':' + password)
- }
- });
-
- $.cookie(Botleagues.cookie_login_email, email);
-};
-
-Botleagues.logout = function(){
- 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.coffee b/src/js/BotleaguesCallback.coffee
new file mode 100644
index 0000000..a02ee59
--- /dev/null
+++ b/src/js/BotleaguesCallback.coffee
@@ -0,0 +1,52 @@
+@BotleaguesCallback =
+
+ register: (data) ->
+ $ 'form.form-register .form-group'
+ .removeClass 'has-feedback has-success has-warning has-error'
+ .find '.form-control-feedback'
+ .remove()
+
+ if data.error?
+ BotleaguesFrontend.error
+ message: data.error
+ prepend_to: $ 'form.form-register'
+
+ for key, msgs of data.errors
+ error_msg = msgs.join '; '
+
+ $('#register-' + key)
+ .attr 'title', error_msg
+ .parent()
+ .addClass 'has-feedback has-error'
+ .append(
+ $ '<span>'
+ .addClass 'glyphicon glyphicon-remove form-control-feedback'
+ .attr 'aria-hidden', true
+ )
+ .find 'label'
+ .append(
+ $ '<span>'
+ .addClass 'pull-right text-danger'
+ .text error_msg
+ )
+
+ return
+
+ login: (data) ->
+ if data.user_token?
+ BotleaguesFrontend.success
+ message: 'Login successful! Refreshing the page...'
+
+ $.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)
+
+ window.setTimeout (-> window.location = 'profile'), 1000
+
+ else
+ BotleaguesFrontend.error
+ message: if data.error? then data.error else "Could not login."
+
+ $.removeCookie Botleagues.cookie_login_email
+
+ return \ No newline at end of file
diff --git a/src/js/BotleaguesCallback.js b/src/js/BotleaguesCallback.js
deleted file mode 100644
index ff99225..0000000
--- a/src/js/BotleaguesCallback.js
+++ /dev/null
@@ -1,52 +0,0 @@
-function BotleaguesCallback(){}
-
-BotleaguesCallback.register = function(data) {
- $('form.form-register .form-group')
- .removeClass('has-feedback has-success has-warning, has-error')
- .find('.form-control-feedback').remove();
-
- if (typeof data.error !== 'undefined') {
- BotleaguesFrontend.error({message: data.error, prepend_to: $('form.form-register')});
- if (typeof data.errors !== 'undefined') {
- for (var key in data.errors) {
- var error_msg = data.errors[key].join('; ');
-
- $('#register-' + key)
- .attr('title', error_msg)
- .parent()
- .addClass('has-feedback has-error')
- .append(
- $('<span>')
- .addClass('glyphicon glyphicon-remove form-control-feedback')
- .attr('aria-hidden', true)
- )
- .find('label')
- .append(
- $('<span>')
- .addClass('pull-right text-danger')
- .text(error_msg)
- );
- }
- }
- }
-};
-
-BotleaguesCallback.login = function(data) {
- if (data.user_token) {
- BotleaguesFrontend.success({
- message: "Login successful! Refreshing the page..."
- });
-
- $.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));
-
- window.setTimeout(function(){ window.location = '/profile'; }, 1000);
- } else {
- BotleaguesFrontend.error({
- message: data.error ? data.error : "Could not login."
- });
- $.removeCookie(Botleagues.cookie_login_email);
- }
-}; \ No newline at end of file
diff --git a/src/js/BotleaguesFrontend.coffee b/src/js/BotleaguesFrontend.coffee
new file mode 100644
index 0000000..5c2d116
--- /dev/null
+++ b/src/js/BotleaguesFrontend.coffee
@@ -0,0 +1,42 @@
+@BotleaguesFrontend =
+
+ message: (user_options) ->
+ options =
+ dismissable: true
+ prepend_to: $ '#messages'
+ type: 'info'
+
+ for key, option of user_options
+ options[key] = option
+
+ html = '<div class="alert alert-' + options.type + '">'
+ if options.dismissable
+ html += '<a href="#" class="close" data-dismiss="alert">&times;</a>'
+ html += options.message
+ html += '</div>'
+
+ html = $ html
+ html
+ .hide()
+ .prependTo options.prepend_to
+ .slideDown()
+ .delay 3000
+ .fadeOut()
+ .queue html.remove
+
+ return
+
+ error: (user_options) ->
+ user_options.type = 'danger'
+ BotleaguesFrontend.message user_options
+
+ danger: (user_options) ->
+ BotleaguesFrontend.error user_options
+
+ success: (user_options) ->
+ user_options.type = 'success'
+ BotleaguesFrontend.message user_options
+
+ warning: (user_options) ->
+ user_options.type = 'warning'
+ BotleaguesFrontend.message user_options \ No newline at end of file
diff --git a/src/js/BotleaguesFrontend.js b/src/js/BotleaguesFrontend.js
deleted file mode 100644
index ebc71f2..0000000
--- a/src/js/BotleaguesFrontend.js
+++ /dev/null
@@ -1,37 +0,0 @@
-function BotleaguesFrontend(){}
-
-BotleaguesFrontend.message = function(user_options) {
- options = {
- dismissable: true,
- prepend_to: $('#messages'),
- type: 'info'
- };
- for (var key in user_options) {
- options[key] = user_options[key];
- }
-
- var html = '<div class="alert alert-' + options.type + '">';
- if (options.dismissable === true)
- html += '<a href="#" class="close" data-dismiss="alert">&times;</a>';
- html += options.message;
- html += '</div>';
-
- html = $(html);
-
- html.hide().prependTo(options.prepend_to).slideDown().delay(3000).fadeOut().queue(html.remove);
-};
-
-BotleaguesFrontend.danger = BotleaguesFrontend.error = function(user_options) {
- user_options.type = 'danger';
- return BotleaguesFrontend.message(user_options);
-};
-
-BotleaguesFrontend.success = function(user_options) {
- user_options.type = 'success';
- return BotleaguesFrontend.message(user_options);
-};
-
-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.coffee b/src/js/forms.coffee
new file mode 100644
index 0000000..e742160
--- /dev/null
+++ b/src/js/forms.coffee
@@ -0,0 +1,25 @@
+# Request API for registering
+$('form.form-register').submit ->
+ Botleagues.request
+ endpoint: 'user'
+ method: 'POST'
+ data:
+ email: $(this).find('input[name="email"]').val()
+ password: $(this).find('input[name="password"]').val()
+ callback: BotleaguesCallback.register
+
+ event.preventDefault()
+
+ return
+
+# Show login form on click
+$('.btn-botleagues-login').focus ->
+ $('#login-block').slideDown()
+ $('#login-email').focus()
+ return
+
+# Request API for logging in
+$('#login-form').submit ->
+ Botleagues.login $('#login-email').val(), $('#login-password').val()
+ event.preventDefault()
+ return \ No newline at end of file
diff --git a/src/js/forms.js b/src/js/forms.js
deleted file mode 100644
index 8a58b2d..0000000
--- a/src/js/forms.js
+++ /dev/null
@@ -1,22 +0,0 @@
-$('form.form-register').submit(function(){
- Botleagues.request({
- endpoint: 'user',
- method: 'POST',
- data: {
- email: $(this).find('input[name="email"]').val(),
- password: $(this).find('input[name="password"]').val()
- },
- callback: BotleaguesCallback.register
- });
-
- event.preventDefault();
-});
-
-$('.btn-botleagues-login').focus(function(){
- $('#login-block').slideDown();
- $('#login-email').focus();
-});
-$('#login-form').submit(function(){
- Botleagues.login($('#login-email').val(), $('#login-password').val());
- event.preventDefault();
-}); \ No newline at end of file
diff --git a/src/js/main.coffee b/src/js/main.coffee
new file mode 100644
index 0000000..4bf9c20
--- /dev/null
+++ b/src/js/main.coffee
@@ -0,0 +1,29 @@
+$ ->
+ # Show extra links if user is logged in
+ email = $.cookie(Botleagues.cookie_login_email)
+ setupLoginMenu() if email? && $.cookie(Botleagues.cookie_login_valid_till) > (new Date()).getTime()
+ return
+
+# Show extra links if user is logged in
+setupLoginMenu = ->
+ $('#nav .login-link').remove()
+
+ extra_links =
+ 'Leagues': '/leagues'
+ 'My Bots': '/profile/bots'
+ 'Profile': '/profile'
+ 'Logout': '/logout'
+
+ for title, link of extra_links
+ li = $('<li>').append(
+ $('<a>')
+ .attr 'role', 'presentation'
+ .attr 'title', title
+ .attr 'href', link
+ .text title
+ )
+ if link == selected_page
+ li.addClass 'active'
+ li.appendTo $('#nav')
+
+ return \ No newline at end of file
diff --git a/src/js/main.js b/src/js/main.js
deleted file mode 100644
index 5d17e02..0000000
--- a/src/js/main.js
+++ /dev/null
@@ -1,27 +0,0 @@
-$(document).ready(function(){
-
- // Show profile link instead of login if user is logged in
- var email = $.cookie(Botleagues.cookie_login_email);
- if (typeof email != 'undefined' && $.cookie(Botleagues.cookie_login_valid_till) > (new Date()).getTime()) {
- setupLoginMenu();
- }
-});
-
-function setupLoginMenu() {
- $('#nav .login-link').remove();
-
- var extra_links = {'Leagues': '/leagues', 'My Bots': '/profile/bots', 'Profile': '/profile', 'Logout': '/logout'};
-
- for (var text in extra_links) {
- var li = $('<li>').append(
- $('<a>')
- .attr('role', 'presentation')
- .attr('title', text)
- .attr('href', extra_links[text])
- .text(text));
- if (extra_links[text] == selected_page) { // selected_page is added in layout-main.jade
- li.addClass('active');
- }
- li.appendTo($('#nav'));
- }
-} \ No newline at end of file
diff --git a/src/js/profile.js b/src/js/profile.coffee
index f27e562..33d171b 100644
--- a/src/js/profile.js
+++ b/src/js/profile.coffee
@@ -1,14 +1,15 @@
-$(document).ready(function(){
- setupGreeter();
-});
+$ ->
+ # Show email address in page when logged in
+ setupGreeter()
+ return
-function setupGreeter() {
- $('.jumbotron .lead').append(' ' + $.cookie(Botleagues.cookie_login_email));
-
+# Show email address in page when logged in
+setupGreeter = ->
+ $('.jumbotron .lead').append(' ' + $.cookie(Botleagues.cookie_login_email))
$('.header h3').append(
$('<span>')
.attr('id', 'banner-email')
.addClass('text-muted')
.text(' / ' + $.cookie(Botleagues.cookie_login_email))
- );
-} \ No newline at end of file
+ )
+ return \ No newline at end of file