подгружаемое меню user для меню и все варианты его обработки

This commit is contained in:
2022-11-05 19:17:26 +03:00
parent bf5de5b25e
commit 86c720d946
8 changed files with 802 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
<script src="//www.google.com/recaptcha/api.js?hl=ru&" async defer></script>
<div class="g-recaptcha" data-sitekey="6Lf87gQTAAAAALmkG5ZsO0eJSvdSXcRvkxoPJCDB" data-type="image" data-theme="light"></div>

View File

@@ -0,0 +1,130 @@
{% load static %}{% comment %}
ШАБЛОН LOGIN-LOGOUT
Во избежании высоких нагрузок на сервер и для ускорения загрузки страницы
организована AJAX-подгрузка блока LOGIN-LOGOUT на уровне фронтенда (клиента).
Кеширование этого блока (и запросов с ним связанным) позволит снизить нагрузки.
В дальнейшем, в случае высоких нагрузок на сервис, возможна простая деградация
с помощью отключения этого блока. Также возможен перенос исполнения функционала
LOGIN-LOGOUT на отдельный сервер.
Даннеа Google reCAPTCHA: https://www.google.com/recaptcha/admin#site/319090428?setup
Публичный Ключ: 6Lf87gQTAAAAALmkG5ZsO0eJSvdSXcRvkxoPJCDB
Секретный ключ: 6Lf87gQTAAAAADlqsJQToiWqg7urOWPrbfG_9zJB
{% endcomment %}
<script type="text/javascript">
$.ajaxSetup({ cache: true , dataType: 'script' }); // включить кеширование подгружаемых JS-скриптов
$.getScript ( "{% static 'js/login_out.js' %}" ); // подгрузить JS-скрипт
</script>
{% if LOGGED_USER != "" %}<a href="#" class="dropdown-toggle" data-toggle="dropdown"><span class="glyphicon glyphicon-user"></span> {{ user.username|truncatechars:12 }} <b class="caret"></b></a>
<ul class="form-group form-group-sm dropdown-menu nav navbar-nav navbar-right" role="menu">
<form id="logout-form">{% csrf_token %}
<input type="hidden" name="status" value="" id="status">
<div class="input-group">
<a href="#">Настройки пользователя
<span class="glyphicon glyphicon-cog pull-right"></span></a>
</div>
<div class="input-group">
<a href="#">Статистика
<span class="glyphicon glyphicon-stats pull-right"></span></a>
</div>
<div class="input-group">
<a href="#">Отслеживается запросов
<small class="badge pull-right"> 2 </small></a>
</div>
<div class="input-group">
<a href="#">Новых предложений
<small class="badge pull-right"> 42 </small></a>
</div>
<div class="input-group" style="border:none;">
<button type="submit" class="btn btn-default btn-sm pull-right" name="logout" onclick="$('#status').val('logout');">Выйти&nbsp;<span class="glyphicon glyphicon-log-out"></span></button>
</div>
</form>
</ul>
{% else %}<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="in_ntr();" rel="nofollow"><span class="glyphicon glyphicon-user"></span> Вход <b class="caret"></b></a>
<ul class="form-group form-group-sm dropdown-menu nav navbar-nav navbar-right" role="menu">
<form id="login-reg-restore-form">{% csrf_token %}
<input type="hidden" name="status" value="" id="status">
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
<input type="text" class="form-control" id="username" name="username" placeholder="login" />
<span class="input-group-addon check-it">
<i class="glyphicon glyphicon-ok-sign" id="valid-username"></i>
</span>
</div>
<dIV class="collapse" id="ili">
<small class="input-group">или<br/></small>
</dIV>
<dIV class="collapse" id="mail">
<div class="input-group">
<span class="input-group-addon">@</span>
<input type="email" class="form-control" id="email" name="email" placeholder="you@email.ru" />
<span class="input-group-addon check-it">
<i class="glyphicon glyphicon-ok-sign" id="valid-email"></i>
</span>
</div>
</dIV>
<dIV class="collapse" id="pwd1">
<div class="input-group">
<span class="input-group-addon"><small class="glyphicon glyphicon-lock"></small></span>
<input type="password" class="form-control" id="password" name="password" placeholder="password" data-toggle="popover" />
<span class="input-group-addon check-it">
<i class="glyphicon glyphicon-ok-sign" id="valid-password"></i>
</span>
<span class="input-group-btn">
<button class="btn btn-default" id="look_pwd1" type="button"><small><small class="glyphicon glyphicon-eye-open"></small></small></button>
</span>
</div>
</dIV>
<dIV class="collapse" id="pwd_comment">
<i class="glyphicon glyphicon-info-sign"></i> <span id="pwd_comment_text"><!--- Содержимое этого блока будет подменяться во время набора и валидации пароля --->Шесть (или более) букв (прописных и строчных) и цифр</span>
</dIV>
<dIV class="collapse" id="pwd2">
<div class="input-group">
<span class="input-group-addon"><small class="glyphicon glyphicon-lock"></small></span>
<input type="password" class="form-control" id="password_repeat" name="password_repeat" placeholder="повторите passport" />
<span class="input-group-addon check-it">
<i class="glyphicon glyphicon-ok-sign" id="valid-password-repeat"></i>
</span>
<span class="input-group-btn">
<button class="btn btn-default" id="look_pwd2" type="button"><small><small class="glyphicon glyphicon-eye-open"></small></small></button>
</span>
</div>
</dIV>
<dIV class="collapse" id="capt">
<div class="input-group" id="captcha"><!---сюда по onclick="$('#captcha').load('/captcha');" подгрузится капча ---></div>
</dIV>
<dIV class="collapse" id="b_vhod">
<div class="input-group"><nobr>
<button type="submit" class="btn btn-primary btn-sm" name="enter" onclick="$('#status').val('enter');">Войти</button>
<small>
<a href="#" data-toggle="collapse" data-target="#b_reg" onclick="in_reg();" rel="nofollow">Регистрация</a>
<a href="#" data-toggle="collapse" data-target="#b_vost" onclick="in_vost();" rel="nofollow">Воcстановить пароль</a>
</small>
</nobr></div>
</dIV>
<dIV class="collapse" id="b_vost">
<div class="input-group"><nobr>
<button type="submit" class="btn btn-primary btn-sm" name="restore" id="restore" onclick="$('#status').val('restore');">Восстановить пароль</button>
<small>
<a href="#" data-toggle="collapse" data-target="#b_reg" onclick="in_reg();" rel="nofollow">Регистрация</a>
<a href="#" data-toggle="collapse" data-target="#b_vhod" onclick="in_ntr();" rel="nofollow">Войти</a>
</small>
</nobr></div>
</dIV>
<dIV class="collapse" id="b_reg">
<div class="input-group"><nobr>
<button type="submit" class="btn btn-default btn-sm" name="registration" onclick="$('#status').val('registration');"><i class="glyphicon glyphicon-ok"></i>&nbsp;Регистрация</button>
<small>
<a href="#" data-toggle="collapse" data-target="#b_vhod" onclick="in_ntr();" rel="nofollow">Войти</a>
<a href="#" data-toggle="collapse" data-target="#b_vost" onclick="in_vost();" rel="nofollow">Воcстановить пароль</a>
</small>
</nobr></div>
</dIV>
</form>
</ul>
{% endif %}

View File

@@ -0,0 +1,86 @@
{% load static %}{% comment %}
ШАБЛОН LOGIN-LOGOUT-AFTER
Все что происходит после того как щелкунули кнопки:
[[login]], [[регистрация]], [[восстановить пароль]]
и перед тем как блок '#login-logout' перегрузится в следующее состояние.
Фоновые картинки брать здесь: http://www.loadinfo.net/
{% endcomment %}
<script type="text/javascript">
function refresh() { $('#login-logout').load('/login-logout' ); }
$(document).ready(function(){
setTimeout("refresh();", {{ DELAY|default:5000 }});
});
</script>
{% if STATUS == "NO_CAPTCHA" %}
<!--- ПОЛЬЗОВАТЕЛЬ ПРИ ВОССТАНОВЛЕНИИ ПАРОЛЯ НЕ ПРОШЕЛ CAPTCHA --->
<ul class="nav navbar-nav navbar-right">
<li class="btn-default">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="refresh();" style="background-image: url({% static 'img/in_progress_grey1.gif' %});background-repeat: no-repeat;background-size: 100% 100%;"><span class="glyphicon glyphicon-ban-circle" style="color: red;"></span>&nbsp;Или вы робот, или не ввели captcha</a>
</li>
</ul>
{% elif STATUS == "LOGOUT" %}
<!--- ПОЛЬЗОВАТЕЛЬ РАЗЛОГИРУЕТСЯ --->
<ul class="nav navbar-nav navbar-right">
<li class="btn-default">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="refresh();" style="background-image: url({% static 'img/in_progress_grey1.gif' %});background-repeat: no-repeat;background-size: 100% 100%;"><span class="glyphicon glyphicon-refresh" style="color:green;"></span>&nbsp;До свиданья</a>
</li>
</ul>
{% elif STATUS == "GOOD_LOGIN" %}
<!--- ПОЛЬЗОВАТЕЛЬ НЕ УГАДАЛ ЛОГИН --->
<ul class="nav navbar-nav navbar-right">
<li class="btn-default">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="refresh();" style="background-image: url({% static 'img/in_progress_grey1.gif' %});background-repeat: no-repeat;background-size: 100% 100%;"><span class="glyphicon glyphicon-ok-sign" style="color:green;"></span>&nbsp;Вхожу</a>
</li>
</ul>
{% elif STATUS == "SHORT_PWD" %}
<!--- ПОЛЬЗОВАТЕЛЬ ПРИ РЕГИСТРАЦИИ УКАЗАЛ НЕДОСТАТОЧНО ДЛИННЫЙ ПАРОЛЬ --->
<ul class="nav navbar-nav navbar-right">
<li class="btn-default">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="refresh();" style="background-image: url({% static 'img/in_progress_grey1.gif' %});background-repeat: no-repeat;background-size: 100% 100%;"><span class="glyphicon glyphicon-ban-circle" style="color:red;"></span>&nbsp;Слишком короткий пароль при регистрации</a>
</li>
</ul>
{% elif STATUS == "PWD1_AND_PWD2_DIFFERENT" %}
<!--- ПОЛЬЗОВАТЕЛЬ ПРИ РЕГИСТРАЦИИ НЕ СМОГ ПОВТОРИТЬ ПАРОЛЬ В ПРОВЕРОЧНОМ ПОЛЕ --->
<ul class="nav navbar-nav navbar-right">
<li class="btn-default">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="refresh();" style="background-image: url({% static 'img/in_progress_grey1.gif' %});background-repeat: no-repeat;background-size: 100% 100%;"><span class="glyphicon glyphicon-ban-circle" style="color:red;"></span>&nbsp;Основной и проверочный пароль не совпадают</a>
</li>
</ul>
{% elif STATUS == "DOUBLE_USER" %}
<!--- ПОЛЬЗОВАТЕЛЬ ПРИ РЕГИСТРАЦИИ ВЫБРАЛ УЖЕ СУЩЕСТВУЮЩИЙ USERNAME --->
<ul class="nav navbar-nav navbar-right">
<li class="btn-default">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="refresh();" style="background-image: url({% static 'img/in_progress_grey1.gif' %});background-repeat: no-repeat;background-size: 100% 100%;"><span class="glyphicon glyphicon-ban-circle" style="color:red;"></span>&nbsp;Пользователь с этим именем уже зарегистрирован</a>
</li>
</ul>
{% elif STATUS == "NO_USER4RESTORE" %}
<!--- ПОЛЬЗОВАТЕЛЬ ПРИ ВОССТАНОВЛЕНИИ ПАРОЛЯ УКАЗАЛ НЕСУЩЕСТВУЮЩИЙ USERNAME --->
<ul class="nav navbar-nav navbar-right">
<li class="btn-default">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="refresh();" style="background-image: url({% static 'img/in_progress_grey1.gif' %});background-repeat: no-repeat;background-size: 100% 100%;"><span class="glyphicon glyphicon-ban-circle" style="color:red;"></span>&nbsp;Логин {{ USERNAME|default:"с таким именем" }} не существует</a>
</li>
</ul>
{% elif STATUS == "NO_MULTIPLE_EMAIL" %}
<!--- ПОЛЬЗОВАТЕЛЬ ПРИ ВОССТАНОВЛЕНИИ УКАЗАЛ EMAIL, НА КОТОРЫЙ ЗЕРЕГИСТРИРОАННО НЕСКОЛЬКО USERNAME --->
<ul class="nav navbar-nav navbar-right">
<li class="btn-default">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="refresh();" style="background-image: url({% static 'img/in_progress_grey1.gif' %});background-repeat: no-repeat;background-size: 100% 100%;"><span class="glyphicon glyphicon-ban-circle" style="color:red;"></span>&nbsp;На email {{ EMAIL|default:"" }} зарегистрировано несколько пользователей.</a>
</li>
</ul>
{% elif STATUS == "NO_EMAIL4RESTORE" %}
<!--- ПОЛЬЗОВАТЕЛЬ ПРИ ВОССТАНОВЛЕНИИ С ТАКИМ EMAIL НЕ ОБНАРУЖЕН --->
<ul class="nav navbar-nav navbar-right">
<li class="btn-default">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="refresh();" style="background-image: url({% static 'img/in_progress_grey1.gif' %});background-repeat: no-repeat;background-size: 100% 100%;"><span class="glyphicon glyphicon-ban-circle" style="color:red;"></span>&nbsp;Пользователся с email {{ EMAIL|default:"" }} не обнаружено.</a>
</li>
</ul>
{% elif STATUS == "RESTORE_MAIL_SENT" %}
<!--- ПОЛЬЗОВАТЕЛЮ ПРИ ВОССТАНОВЛЕНИИ ОТПРАВЛЕН EMAIL С ИНСТРУКЦИЯМИ --->
<ul class="nav navbar-nav navbar-right">
<li class="btn-default">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" onclick="refresh();" style="background-image: url({% static 'img/in_progress_grey1.gif' %});background-repeat: no-repeat;background-size: 100% 100%;"><span class="glyphicon glyphicon-ban-circle" style="color:red;"></span>&nbsp;Письмо для воммтановления пароля отправлено на email {{ EMAIL|default:"" }}.</a>
</li>
</ul>{% endif %}

View File

@@ -0,0 +1,11 @@
{% load static %}
<script type="text/javascript">
if ( document.getElementById("box") == null ) window.location.replace("/"); // проверяем, а не вызвали-ли этот popup отдельно
$(document).ready(function(){
timerId = setTimeout("$('#box').load('/center_popup_main');", 2000 ); // перегрухить центральный блок
$('#login-logout').load('/login-logout' ); // перегрузить блок login-logout
});
</script>
<h1>Пароль изменен</h1>
<ul>
<a type="button" class="btn btn-default" style="margin:1ex" onclick="clearTimeout(timerId);$('#box').load('/center_popup_main');"> Ок <span class="glyphicon glyphicon-remove-sign"></span> </a>

View File

@@ -0,0 +1,12 @@
{% load static %}
<script type="text/javascript">
if ( document.getElementById("box") == null ) window.location.replace("/"); // проверяем, а не вызвали-ли этот popup отдельно
$(document).ready(function(){ timerId = setTimeout("clearTimeout(timerId);$('#box').load('/center_popup_main');", 12000 ); });
</script>
<h1>Спасибо, вы подтвердили регистрацию:</h1>
<ul>
<li>пользователь: <strong>{{ USER }}</strong></li>
<li>e-mail: <strong>{{ EMAIL }}</strong></li>
</ul>
<a type="button" class="btn btn-default" style="margin:1ex" onclick="$('#box').load('/center_popup_main');"> Ок <span class="glyphicon glyphicon-ok-sign"></span> </a>

View File

@@ -0,0 +1,19 @@
{% load static %}<script type="text/javascript">
if ( document.getElementById("box") == null ) window.location.replace("/"); // проверяем, а не вызвали-ли этот popup отдельно
$(document).ready(function(){ timerId = setTimeout("$('#box').load('/center_popup_main');", 12000 ); });
</script>
<h1>Ошибка обработки:</h1>
<ul>
{% if CONFIRM_BAD_USER_ID == "YES" %}<li><strong class="bg-danger">ERR#010:</strong> Неверный userID</li>{% endif %}
{% if NO_USERNAME4CHANGE == "YES" %}<li><strong class="bg-danger">ERR#011:</strong> UserName для этого пользователя <i>({{ USERNAME }})</i> не совпадает с находящимся в базе</li>{% endif %}
{% if NO_EMAIL4CHANGE == "YES" %}<li><strong class="bg-danger">ERR#012:</strong> Email для этого пользователя ({{ EMAIL }}) не совпадает с находящимся в базе</li>{% endif %}
{% if NO_PWDSDIF4CHANGE == "YES" %}<li><strong class="bg-danger">ERR#013:</strong> Поля «password» и «повторите pessword» не совпадают</li>{% endif %}
{% if NO_PWDSHOT4CHANGE == "YES" %}<li><strong class="bg-danger">ERR#014:</strong> Введен «password» короче 5 знаков</li>{% endif %}
{% if CONFIRM_BAD_HASH == "YES" %}<li><strong class="bg-danger">ERR#019:</strong> Ошибка в проверочном хеше</li>{% endif %}
{% if CONFIRM_BAD_BAD == "YES" %}<li><strong class="bg-danger">ERR#_†_:</strong> Что-то пошло не так... и вообще не ясно почему. Как вы этого добились?!</li>{% endif %}
</ul>
<a type="button" class="btn btn-default" style="margin:1ex" onclick="clearTimeout(timerId);$('#box').load('/center_popup_main');"> Ок <span class="glyphicon glyphicon-remove-sign"></span> </a>

View File

@@ -0,0 +1,174 @@
{% load static %}
<script type="text/javascript">
// этот скрипт не имеет смысл делать внешним и выносить в static
// он высывается только когда пользователь восстанавливает пароль, а это случается крайне редко
if ( document.getElementById("box") == null ) window.location.replace("/"); // проверяем, а не вызвали-ли этот popup отдельно
$('#pwd_commentA').collapse('hide');
$(document).ready(function(){
// ПОДСВЕТИТЬ ПОДСКАЗКУ ПРИ НАБОРЕ ПАРОЛЯ
$("#passwordA").focus(function(){ $('#pwd_commentA').collapse('show'); });
$("#passwordA").blur(function(){ $('#pwd_commentA').collapse('hide'); });
// КНОПОЧКИ "ПОДГЛЯДИЕТЬ ПАРОЛЬ" на основном поле
$("#look_pwd1A").mousedown(function() { $("#passwordA").attr('type', 'text'); });
$("#look_pwd1A").mouseup(function() { $("#passwordA").attr('type', 'password'); });
$("#look_pwd1A").mouseout(function() { $("#passwordA").attr('type', 'password'); });
// КНОПОЧКИ "ПОДГЛЯДИЕТЬ ПАРОЛЬ" на поле "ПОВТОРИТЬ PASSWORD"
$("#look_pwd2A").mousedown(function() { $("#passwordA").attr('type', 'text'); $("#password_repeatA").attr('type', 'text'); });
$("#look_pwd2A").mouseup(function() { $("#passwordA").attr('type', 'password'); $("#password_repeatA").attr('type', 'password'); });
$("#look_pwd2A").mouseout(function() { $("#passwordA").attr('type', 'password'); $("#password_repeatA").attr('type', 'password'); });
// ПРОВЕРКА КОНТРОЛЬНОГО ПАРОЛЯ
$("#password_repeatA").keyup(function(){
if( $(this).val() != '')
if( $(this).val() == $('#passwordA').val() ) $("#valid-password-repeatA").css({ "color": "green" });
else $("#valid-password-repeatA").css({ "color": "red" });
else $("#valid-password-repeatA").css({ "color": "white" });
});
// ПРОВЕРКА КАЧЕСТВА ПАРОЛЯ
$("#passwordA").keyup(function(){
var ucase = new RegExp("[A-Z]+");
var lcase = new RegExp("[a-z]+");
var num = new RegExp("[0-9]+");
if( $(this).val() != '')
if( $(this).val().length >= 6 )
if( ucase.test($(this).val()) && lcase.test($(this).val()) && num.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "green" });
$('#pwd_comment_textA').text("Отличный пароль!");
$("#pwd_commentA").css({ "color": "green" });
}
else if ( ucase.test($(this).val()) && lcase.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "grey" });
$('#pwd_comment_textA').text("Хороший пароль! Не хватает цифр.");
$("#pwd_commentA").css({ "color": "green" });
}
else if ( lcase.test($(this).val()) && num.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "grey" });
$('#pwd_comment_textA').text("Хороший пароль! Не хватает прописных букв.");
$("#pwd_commentA").css({ "color": "green" });
}
else if ( ucase.test($(this).val()) && num.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "grey" });
$('#pwd_comment_textA').text("Хороший пароль! Не хватает строчных букв.");
$("#pwd_commentA").css({ "color": "green" });
}
else if ( ucase.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "orange" });
$('#pwd_comment_textA').text("Слабый пароль! Не хватает цифр и строчных букв.");
$("#pwd_commentA").css({ "color": "orange" });
}
else if ( lcase.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "orange" });
$('#pwd_comment_textA').text("Слабый пароль! Не хватает цифр и прописных букв.");
$("#pwd_commentA").css({ "color": "orange" });
}
else if ( num.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "orange" });
$('#pwd_comment_textA').text("Слабый пароль! Не хватает букв.");
$("#pwd_commentA").css({ "color": "orange" });
}
else {
$("#valid-passwordA").css({ "color": "grey" });
$('#pwd_comment_textA').text("Странный пароль! Вы точно сможете его замнить?");
$("#pwd_commentA").css({ "color": "grey" });
}
else
if( ucase.test($(this).val()) && lcase.test($(this).val()) && num.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "grey" });
$('#pwd_comment_textA').text("Хороший пароль!.. но короткий.");
$("#pwd_commentA").css({ "color": "grey" });
}
else if ( ucase.test($(this).val()) && lcase.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "orange" });
$('#pwd_comment_textA').text("Короткий пароль!.. и нет цифр.");
$("#pwd_commentA").css({ "color": "orange" });
}
else if ( lcase.test($(this).val()) && num.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "orange" });
$('#pwd_comment_textA').text("Короткий пароль!.. и нет прописных букв.");
$("#pwd_commentA").css({ "color": "orange" });
}
else if ( ucase.test($(this).val()) && num.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "orange" });
$('#pwd_comment_textA').text("Короткий пароль!.. и нет строчных букв.");
$("#pwd_commentA").css({ "color": "orange" });
}
else if ( ucase.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "red" });
$('#pwd_comment_textA').text("Короткий пароль!.. и нет строчных букв и цифр.");
$("#pwd_commentA").css({ "color": "red" });
}
else if ( lcase.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "red" });
$('#pwd_comment_textA').text("Короткий пароль!.. и нет прописных букв и цифр.");
$("#pwd_commentA").css({ "color": "red" });
}
else if ( num.test($(this).val()) ) {
$("#valid-passwordA").css({ "color": "red" });
$('#pwd_comment_textA').text("Короткий пароль!.. и нет букв.");
$("#pwd_commentA").css({ "color": "red" });
}
else {
$("#valid-passwordA").css({ "color": "red" });
$('#pwd_comment_textA').text("Странныйе символы! Переключитесь на латиницу!");
$("#pwd_commentA").css({ "color": "red" });
}
else {
$("#valid-passwordA").css({ "color": "white" });
$('#pwd_comment_textA').text('Шесть (или более) букв (прописных и строчных) и цифр');
$("#pwd_commentA").css({ "color": "grey" });
}
});
// ОБРАБОТЧИК КНОПКИ SUBMIT. ПЕРЕГРУЖАЕТ БЛОК #box
$('#restore-password').submit(
function enter(){
$.ajax({
url: "/change_password", //Адрес подгружаемой страницы
type: "POST", //Тип запроса
dataType: "html", //Тип данных
data: $("#restore-password").serialize(),
success: function(html){ $("#box").html(html)}
});
return false;
}
);
})
</script>
<h1>Смена пароля</h1>
<p>Для пользователя: <strong>{{ USERNAME }}</strong> <small>({{ EMAIL }})</small></p>
<form id="restore-password">
{% csrf_token %}
<input type="hidden" name="username" value="{{ USERNAME }}" />
<input type="hidden" name="user_id" value="{{ USER_ID }}" />
<input type="hidden" name="email" value="{{ EMAIL }}" />
<div class="col-md-5 pwdA">
<div class="input-group">
<div class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></div>
<input type="password" class="form-control" id="passwordA" name="passwordA" placeholder="password" data-toggle="popover" />
<div class="input-group-addon check-it">
<i class="glyphicon glyphicon-ok-sign" id="valid-passwordA"></i>
</div>
<span class="input-group-btn">
<button class="btn btn-default" id="look_pwd1A" type="button"><small><small class="glyphicon glyphicon-eye-open"></small></small></button>
</span>
</div>
<dIV class="collapse" id="pwd_commentA" style="padding-top:2px;">
<i class="glyphicon glyphicon-info-sign"></i> <span id="pwd_comment_textA"><!--- Содержимое этого блока будет подменяться во время набора и валидации пароля --->Шесть (или более) букв (прописных и строчных) и цифр</span>
</dIV>
</div>
<dIV class="col-md-5 pwdA">
<div class="input-group">
<div class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></div>
<input type="password" class="form-control" id="password_repeatA" name="password_repeatA" placeholder="повторите passport" />
<div class="input-group-addon check-it">
<i class="glyphicon glyphicon-ok-sign" id="valid-password-repeatA"></i>
</div>
<span class="input-group-btn">
<button class="btn btn-default" id="look_pwd2A" type="button"><small><small class="glyphicon glyphicon-eye-open"></small></small></button>
</span>
</div>
</dIV>
<dIV class="col-md-2 pwdA">
<button type="submit" class="btn btn-primary btn" name="change_pwd" onclick="$('#Astatus').val('enter');">Сменить пароль</button>
</dIV>
</form>