From 98dec118777a9de0823a45ade9f40d4f8b010309 Mon Sep 17 00:00:00 2001 From: Daniel Molina Date: Tue, 23 Jun 2015 13:33:44 +0200 Subject: [PATCH] feature #3748: Refactor login.js --- src/sunstone/public/app/login.js | 99 +++++++++++++++++++++++++++ src/sunstone/public/dist/login.js | 5 ++ src/sunstone/public/dist/login.js.map | 1 + src/sunstone/views/login.erb | 37 +++++----- 4 files changed, 123 insertions(+), 19 deletions(-) create mode 100644 src/sunstone/public/app/login.js create mode 100644 src/sunstone/public/dist/login.js create mode 100644 src/sunstone/public/dist/login.js.map diff --git a/src/sunstone/public/app/login.js b/src/sunstone/public/app/login.js new file mode 100644 index 0000000000..5ce684a945 --- /dev/null +++ b/src/sunstone/public/app/login.js @@ -0,0 +1,99 @@ +require.config({ + paths: { + /* jQuery */ + 'jquery': '../bower_components/jquery/dist/jquery.min' + } +}); + +define(function(require) { + require('jquery'); + var OpenNebulaAuth = require('opennebula/auth'); + + function auth_success(req, response) { + window.location.href = "."; + } + + function auth_error(req, error) { + + var status = error.error.http_status; + + switch (status){ + case 401: + $("#error_message").text("Invalid username or password"); + break; + case 500: + $("#error_message").text("OpenNebula is not running or there was a server exception. Please check the server logs."); + break; + case 0: + $("#error_message").text("No answer from server. Is it running?"); + break; + default: + $("#error_message").text("Unexpected error. Status " + status + ". Check the server logs."); + }; + $("#error_box").fadeIn("slow"); + $("#login_spinner").hide(); + } + + function authenticate() { + var username = $("#username").val(); + var password = $("#password").val(); + var remember = $("#check_remember").is(":checked"); + + $("#error_box").fadeOut("slow"); + $("#login_spinner").show(); + + OpenNebulaAuth.login({ + data: { + username: username, + password: password + }, + remember: remember, + success: auth_success, + error: auth_error + }); + } + + function getInternetExplorerVersion() { + // Returns the version of Internet Explorer or a -1 + // (indicating the use of another browser). + var rv = -1; // Return value assumes failure. + if (navigator.appName == 'Microsoft Internet Explorer') { + var ua = navigator.userAgent; + var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})"); + if (re.exec(ua) != null) + rv = parseFloat(RegExp.$1); + } + return rv; + } + + function checkVersion() { + var ver = getInternetExplorerVersion(); + + if (ver > -1) { + msg = ver <= 7.0 ? "You are using an old version of IE. \ + Please upgrade or use Firefox or Chrome for full compatibility." : + "OpenNebula Sunstone is best seen with Chrome or Firefox"; + $("#error_box").text(msg); + $("#error_box").fadeIn('slow'); + } + } + + $(document).ready(function() { + $("#login_form").submit(function () { + authenticate(); + return false; + }); + + //compact login elements according to screen height + if (screen.height <= 600) { + $('div#logo_sunstone').css("top", "15px"); + $('div#login').css("top", "10px"); + $('.error_message').css("top", "10px"); + }; + + $("input#username.box").focus(); + $("#login_spinner").hide(); + + checkVersion(); + }); +}); diff --git a/src/sunstone/public/dist/login.js b/src/sunstone/public/dist/login.js new file mode 100644 index 0000000000..9749cd1918 --- /dev/null +++ b/src/sunstone/public/dist/login.js @@ -0,0 +1,5 @@ +!function(e,t){"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){function n(e){var t=e.length,n=Z.type(e);return"function"===n||Z.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e}function r(e,t,n){if(Z.isFunction(t))return Z.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return Z.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(at.test(t))return Z.filter(t,e,n);t=Z.filter(t,e)}return Z.grep(e,function(e){return U.call(t,e)>=0!==n})}function i(e,t){for(;(e=e[t])&&1!==e.nodeType;);return e}function o(e){var t=ht[e]={};return Z.each(e.match(dt)||[],function(e,n){t[n]=!0}),t}function s(){Q.removeEventListener("DOMContentLoaded",s,!1),e.removeEventListener("load",s,!1),Z.ready()}function a(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=Z.expando+a.uid++}function u(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(bt,"-$1").toLowerCase(),n=e.getAttribute(r),"string"==typeof n){try{n="true"===n?!0:"false"===n?!1:"null"===n?null:+n+""===n?+n:xt.test(n)?Z.parseJSON(n):n}catch(i){}yt.set(e,t,n)}else n=void 0;return n}function l(){return!0}function c(){return!1}function f(){try{return Q.activeElement}catch(e){}}function p(e,t){return Z.nodeName(e,"table")&&Z.nodeName(11!==t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function d(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function h(e){var t=Pt.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function g(e,t){for(var n=0,r=e.length;r>n;n++)vt.set(e[n],"globalEval",!t||vt.get(t[n],"globalEval"))}function m(e,t){var n,r,i,o,s,a,u,l;if(1===t.nodeType){if(vt.hasData(e)&&(o=vt.access(e),s=vt.set(t,o),l=o.events)){delete s.handle,s.events={};for(i in l)for(n=0,r=l[i].length;r>n;n++)Z.event.add(t,i,l[i][n])}yt.hasData(e)&&(a=yt.access(e),u=Z.extend({},a),yt.set(t,u))}}function v(e,t){var n=e.getElementsByTagName?e.getElementsByTagName(t||"*"):e.querySelectorAll?e.querySelectorAll(t||"*"):[];return void 0===t||t&&Z.nodeName(e,t)?Z.merge([e],n):n}function y(e,t){var n=t.nodeName.toLowerCase();"input"===n&&kt.test(e.type)?t.checked=e.checked:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}function x(t,n){var r,i=Z(n.createElement(t)).appendTo(n.body),o=e.getDefaultComputedStyle&&(r=e.getDefaultComputedStyle(i[0]))?r.display:Z.css(i[0],"display");return i.detach(),o}function b(e){var t=Q,n=It[e];return n||(n=x(e,t),"none"!==n&&n||(Mt=(Mt||Z("