1<div> 2 <puzzle-banner variant="positive" class="js-registration-success" style="display: none"> 3 <p>Almost there! We have sent an activation link to your email.</p> 4 <p>Check the spam box too - just in case.</p> 5 </puzzle-banner> 6 7 <div class="login-box"> 8 9 <div class="login-box__toggle"> 10 <puzzle-toggle 11 id="toggle-forms" 12 state="1" 13 size="fill" 14 onclick="toggleLoginSignup()" 15 > 16 <span slot="start">Log in</span> 17 <span slot="end">Sign up</span> 18 </puzzle-toggle> 19 </div> 20 21 <puzzle-banner variant="negative" class="js-login-error" style="display: none" allow-dismiss> 22 <span class="message"></span> 23 </puzzle-banner> 24 25 <form class="email-login"> 26 <div class="text-field text-field--has-icon-start text-field--has-label login-field"> 27 <puzzle-icon class="text-field__icon-start" name="mail-outline" size="small"></puzzle-icon> 28 <input class="text-field__input" type="email" name="email" placeholder="Email" autocapitalize="off" autocomplete="username" spellcheck="false" autocorrect="off" /> 29 <label class="text-field__label">Email</label> 30 </div> 31 32 <div class="text-field text-field--has-icon-start text-field--has-icon-end text-field--has-label login-field"> 33 <puzzle-icon class="text-field__icon-start" name="lock-outline" size="small"></puzzle-icon> 34 <input class="text-field__input" type="password" name="password" placeholder="Password" autocomplete="current-password" /> 35 <label class="text-field__label">Password</label> 36 <puzzle-button class="text-field__action" variant="regular-subtle" icon="eye-closed" size="small" icon-size="small" assist-label="Show/hide password" tabindex="-1" onmousedown="event.preventDefault()" onclick="togglePasswordVisibility(event)"></puzzle-button> 37 </div> 38 39 <puzzle-button variant="accent" class="button-login login-submit"> 40 Log in <i class="icon icon-spin5 animate-spin"></i> 41 </puzzle-button> 42 43 <a href="#" class="forgot-password">Forgot password?</a> 44 </form> 45 46 <form class="email-signup"> 47 <div class="text-field text-field--has-icon-start text-field--has-label login-field"> 48 <puzzle-icon class="text-field__icon-start" name="mail-outline" size="small"></puzzle-icon> 49 <input class="text-field__input" type="email" name="email" placeholder="Email" autocomplete="username" spellcheck="false" autocorrect="off" /> 50 <label class="text-field__label">Email *</label> 51 </div> 52 53 <div class="text-field text-field--has-icon-start text-field--has-label login-field"> 54 <puzzle-icon class="text-field__icon-start" name="alternate-email" size="small"></puzzle-icon> 55 <input class="text-field__input" type="text" name="nick" placeholder="Nickname" autocapitalize="off" spellcheck="false" autocorrect="off" /> 56 <label class="text-field__label">Nickname *</label> 57 </div> 58 59 <div class="text-field text-field--has-icon-start text-field--has-icon-end text-field--has-label login-field"> 60 <puzzle-icon class="text-field__icon-start" name="lock-outline" size="small"></puzzle-icon> 61 <input class="text-field__input" type="password" name="password" placeholder="Password" autocomplete="new-password" /> 62 <label class="text-field__label">Password *</label> 63 <puzzle-button class="text-field__action" variant="regular-subtle" icon="eye-closed" size="small" icon-size="small" assist-label="Show/hide password" tabindex="-1" onmousedown="event.preventDefault()" onclick="togglePasswordVisibility(event)"></puzzle-button> 64 </div> 65 66 <div class="text-field text-field--has-icon-start text-field--has-icon-end text-field--has-label login-field"> 67 <puzzle-icon class="text-field__icon-start" name="lock-outline" size="small"></puzzle-icon> 68 <input class="text-field__input" type="password" name="password_confirmation" placeholder="Confirm password" autocomplete="new-password" /> 69 <label class="text-field__label">Confirm password *</label> 70 <puzzle-button class="text-field__action" variant="regular-subtle" icon="eye-closed" size="small" icon-size="small" assist-label="Show/hide password" tabindex="-1" onmousedown="event.preventDefault()" onclick="togglePasswordVisibility(event)"></puzzle-button> 71 </div> 72 73 <div class="login-checkbox"> 74 <label for="receive" class="checkbox-field"><input type="checkbox" name="receive" id="receive" />Send me (rare) updates.</label> 75 </div> 76 <details class="robot-account-details"> 77 <summary>I'm a developer of an automated solver</summary> 78 <label class="checkbox-field" for="robot"> 79 <input type="checkbox" name="robot" id="robot" /> 80 Register as robot account 81 </label> 82 </details> 83 84 <puzzle-button variant="accent" class="button-register login-submit"> 85 Sign Up <i class="icon icon-spin5 animate-spin"></i> 86 </puzzle-button> 87 </form> 88 89 <div class="puzzle-separator">
90 <span></span> 91 <span>Use social profile</span> 92 <span></span> 93 </div> 94 95 <div class="login-social"> 96 <puzzle-button class="login-social__btn" variant="regular-subtle" size="small" caption="Facebook" 97 href="https://www.puzzles-mobile.com/social/facebook?source=www.puzzle-kakuro.com" target="_blank" rel="opener"> 98 <puzzle-icon name="external-facebook" style="color: #49639F"></puzzle-icon> 99 </puzzle-button> 100 <puzzle-button class="login-social__btn" variant="regular-subtle" size="small" caption="Google" 101 href="https://www.puzzles-mobile.com/social/google?source=www.puzzle-kakuro.com" target="_blank" rel="opener"> 102 <puzzle-icon name="external-google" style="color: #DF4A32"></puzzle-icon> 103 </puzzle-button> 104 <puzzle-button class="login-social__btn" variant="regular-subtle" size="small" caption="Discord" 105 href="https://www.puzzles-mobile.com/social/discord?source=www.puzzle-kakuro.com" target="_blank" rel="opener"> 106 <puzzle-icon name="external-discord" style="color: #7289DA"></puzzle-icon> 107 </puzzle-button> 108 </div> 109 110 </div> 111</div>
112<script type="text/javascript"> 113 $(".email-signup").hide(); 114 $("puzzle-button .animate-spin").hide(); 115 116 function toggleLoginSignup() { 117 var toggle = document.getElementById('toggle-forms'); 118 var isLogin = toggle.getAttribute('state') === '1'; 119 if (isLogin) { 120 toggle.setAttribute('state', '2'); 121 $(".email-login").fadeOut(100); 122 $(".email-signup").delay(100).fadeIn(100); 123 } else { 124 toggle.setAttribute('state', '1'); 125 $(".email-signup").fadeOut(100); 126 $(".email-login").delay(100).fadeIn(100); 127 } 128 } 129 130 $('.email-login input, .email-signup input').on('keydown', function(e){ 131 var code = e.keyCode || e.which; 132 if(code == 13) { //Enter keycode 133 e.preventDefault(); 134 e.stopPropagation(); 135 $(this).closest('form').find('puzzle-button.button-login, puzzle-button.button-register').click(); 136 } 137 }); 138 139 $(".button-login").on('click', function(e){ 140 e.preventDefault(); 141 mobile_host = (typeof mobile_host == 'undefined') ? 'www.puzzles-mobile.com' : mobile_host; 142 143 $(".button-login .animate-spin").show(); 144 $('.js-login-error').hide(); 145 146 $.ajax({ 147 url : "https://"+mobile_host+"/api/login", 148 method : "POST", 149 data : $(this).closest('form').serialize(), 150 151 152 success : function(data) { 153 localStorage.setItem('api_token', data); 154 createCookie('api_token', data, 365, base_domain); 155 156 Dialog.close(); 157 loadUser(); 158 }, 159 error: function(jqXHR, textStatus, errorThrown) { 160 $('.js-login-error').show().find('.message').text(jqXHR.responseText); 161 }, 162 complete: function() { 163 $('.button-login .animate-spin').hide(); 164 } 165 }); 166 167 }); 168 169 $(".button-register").on('click', function(e){ 170 e.preventDefault(); 171 mobile_host = (typeof mobile_host == 'undefined') ? 'www.puzzles-mobile.com' : mobile_host; 172 173 $(".button-register .animate-spin").show(); 174 $('.js-login-error').hide(); 175 176 $.post( "https://"+mobile_host+"/api/register", $(this).closest('form').serialize()) 177 .done(function(data) { 178 $('.dialog .login-box').hide(); 179 $('.dialog .js-registration-success').show(); 180 }) 181 .fail(function(data) { 182 if (data.responseJSON) { 183 var msg = $.map(data.responseJSON, function(e){ 184 return e; 185 }).join('<br>'); 186 } else { 187 var msg = data.responseText; 188 } 189 $('.js-login-error').show().find('.message').html(msg); 190 }) 191 .always(function() { 192 $('.button-register .animate-spin').hide(); 193 }); 194 }); 195 $('.forgot-password').on('click', function(e) { 196 e.preventDefault(); 197 Dialog.loadContent('/partials/form.forgotten_password.php'); 198 }); 199 loadUser(); 200</script>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.