1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | /* * GitPHP javascript login popup * * @author Christopher Han <xiphux@gmail.com> * @copyright Copyright (c) 2012 Christopher Han * @package GitPHP * @subpackage Javascript */ define(['jquery', 'modules/geturl', 'modules/resources', 'qtip'], function($, url, resources) { return function(element) { $(element).qtip({ content: { text: function(api) { var container = $(document.createElement('div')); var loginError = $(document.createElement('div')).addClass('loginError').addClass('error').css('padding-top', '0px'); var loginDiv = $(document.createElement('div')).addClass('loginForm'); var loginForm = $(document.createElement('form')) container.append(loginDiv); loginDiv.append(loginForm); loginForm.append(loginError); var usernameDiv = $(document.createElement('div')).addClass('field'); var usernameLabel = $(document.createElement('label')).attr('for', 'username').text(resources.UsernameLabel); var usernameField = $(document.createElement('input')).attr('type', 'text').attr('name', 'username').attr('id', 'username'); usernameDiv.append(usernameLabel); usernameDiv.append(usernameField); loginForm.append(usernameDiv); var passwordDiv = $(document.createElement('div')).addClass('field'); var passwordLabel = $(document.createElement('label')).attr('for', 'password').text(resources.PasswordLabel); var passwordField = $(document.createElement('input')).attr('type', 'password').attr('name', 'password').attr('id', 'password'); passwordDiv.append(passwordLabel); passwordDiv.append(passwordField); loginForm.append(passwordDiv); var loginDiv = $(document.createElement('div')).addClass('submit'); var loginButton = $(document.createElement('input')).attr('type', 'submit').attr('value', resources.Login); loginDiv.append(loginButton); loginForm.append(loginDiv); loginForm.bind('submit', function(event) { var username = $('input[name=username]', this).val(); var password = $('input[name=password]', this).val(); var errorContainer = $('.loginError', this); if (!username) { errorContainer.text(resources.UsernameIsRequired); return false; } if (!password) { errorContainer.text(resources.PasswordIsRequired); return false; } errorContainer.text(''); var inputs = $('input', this); $.ajax({ url: url + '?a=login&o=js', data: { a: 'login', o: 'js', username: username, password: password }, type: 'post', dataType: 'json', success: function(data, status, jqXHR) { if (data) { if (data.success === true) { window.location.reload(); } else if (data.message) { errorContainer.text(data.message); } else { errorContainer.text(resources.AnErrorOccurredWhileLoggingIn); } } else { errorContainer.text(resources.AnErrorOccurredWhileLoggingIn); } }, error: function(jqXHR, message) { errorContainer.text(resources.AnErrorOccurredWhileLoggingIn); }, beforeSend: function() { inputs.attr('disabled', 'disabled'); }, complete: function() { inputs.removeAttr('disabled'); } }); return false; }); return container; }, title: { text: resources.LoginTitle, button: true } }, position: { my: 'center', at: 'center', target: $(window) }, show: { event: 'click', modal: { on: true } }, hide: { event: false }, style: { classes: 'ui-tooltip-light ui-tooltip-shadow' }, events: { visible: function(event, api) { $('input[name=username]', this).focus(); } } }); $(element).click(function(event) { return false; }); }; }); |