Boite d'alerte permettant de revenir à la page d'accueil

Résolu/Fermé
clend Messages postés 21 Date d'inscription jeudi 2 février 2017 Statut Membre Dernière intervention 1 avril 2020 - 1 avril 2020 à 10:01
clend Messages postés 21 Date d'inscription jeudi 2 février 2017 Statut Membre Dernière intervention 1 avril 2020 - 1 avril 2020 à 14:25
Bonjour,

J'utilise un module de connexion (cf. bt login) qui a le vilain défaut d'afficher une boîte d'alerte en JS si l'utilisateur saisit un identifiant & un mot de passe erronés. Et le pire c'est qu'après avoir refermé l'alerte (cf. bouton OK), l'utilisateur retrouve sa fenêtre de connexion complètement bloquée, inutilisable même pour corriger son erreur !

J'aimerais donc pouvoir afficher une boîte d'alerte qui afficherait automatiquement la page d'accueil quand on clique sur le bouton OK ... ou tout autre bouton.

Question : comment écrire ceci en javascript ?

Merci pour votre aide.

Configuration: Linux / Firefox 74.0
A voir également:

2 réponses

jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
1 avril 2020 à 12:05
Bonjour,

Sans voir le code actuellement utilisé... impossible de t'aider.

Tu parles de BT login..
tu es sur joomla ? quelle version ?
C'est bien de ce module qu'il est question ? https://bowthemes.com/joomla-extensions/bt-login-module.html
Est-il à jour ?
Comment est-il configuré ?


Et puis tu nous indiques :

'utilisateur retrouve sa fenêtre de connexion complètement bloquée, inutilisable même pour corriger son erreur !

C'est à dire ?
Y a t'il des erreurs dans la console javascript de ton navigateur ?


0
clend Messages postés 21 Date d'inscription jeudi 2 février 2017 Statut Membre Dernière intervention 1 avril 2020
1 avril 2020 à 13:58
Bonjour Jordane,

Mes réponses :
1. il s'agit bien de ce module bt login,
2. je suis en Joomla 3.9.16 (donc à jour de ce côté),
3. ce module n'est plus suivi par son concepteur depuis 2014 & je possède la dernière version publiée,
4. quand je parle d'erreur bloquante pour l'utilisateur, cela veut dire que même après avoir refermé sa fenêtre popup d'alerte, il se retrouve avec son formulaire de connexion inopérant -totalement bloqué- et sa seule solution pratique est de revenir à la page d'accueil et de tenter une nouvelle connexion,
5. je posais ma question d'aide JS en dehors de tout contexte particulier, mais puisque tu dis souhaiter voir le code, voici donc le script JS qui pose problème :


jQuery.noConflict();
if(typeof(BTLJ)=='undefined') var BTLJ = jQuery;
if(typeof(btTimeOut)=='undefined') var btTimeOut;
if(typeof(requireRemove)=='undefined') var requireRemove = true;


BTLJ(document).ready(function() {

BTLJ('#btl-content').appendTo('body');
BTLJ(".btl-input #jform_profile_aboutme").attr("cols",21);
BTLJ('.bt-scroll .btl-buttonsubmit').click(function(){
setTimeout(function(){
if(BTLJ("#btl-registration-error").is(':visible')){
BTLJ('.bt-scroll').data('jsp').scrollToY(0,true);
}else{
var position = BTLJ('.bt-scroll').find('.invalid:first').position();
if(position) BTLJ('.bt-scroll').data('jsp').scrollToY(position.top-15,true);
}
},20);
})
//SET POSITION
if(BTLJ('.btl-dropdown').length){
setFPosition();
BTLJ(window).resize(function(){
setFPosition();
})
}

BTLJ(btlOpt.LOGIN_TAGS).addClass("btl-modal");
if(btlOpt.REGISTER_TAGS != ''){
BTLJ(btlOpt.REGISTER_TAGS).addClass("btl-modal");
}

// Login event
var elements = '#btl-panel-login';
if (btlOpt.LOGIN_TAGS) elements += ', ' + btlOpt.LOGIN_TAGS;
if (btlOpt.MOUSE_EVENT =='click'){
BTLJ(elements).click(function (event) {
return showLoginForm();
});
}else{
BTLJ(elements).hover(function () {
return showLoginForm();
},function(){});
}

// Registration/Profile event
elements = '#btl-panel-registration';
if (btlOpt.REGISTER_TAGS) elements += ', ' + btlOpt.REGISTER_TAGS;
if (btlOpt.MOUSE_EVENT =='click'){
BTLJ(elements).click(function (event) {
return showRegistrationForm();
});
BTLJ("#btl-panel-profile").click(function(event){
showProfile();
event.preventDefault();
});
}else{
BTLJ(elements).hover(function () {
if(!BTLJ("#btl-integrated").length){
return showRegistrationForm();
}
},function(){});
BTLJ("#btl-panel-profile").hover(function () {
showProfile();
},function(){});
}
BTLJ('#register-link a').click(function (event) {
if(BTLJ('.btl-modal').length){
BTLJ.simpleModal.close();
setTimeout(showRegistrationForm(),1000);
}
else{
return showRegistrationForm();
}

});

// Close form
BTLJ(document).click(function(event){
if(requireRemove && event.which == 1) btTimeOut = setTimeout('BTLJ("#btl-content > div").slideUp();BTLJ(".btl-panel span").removeClass("active");',10);
requireRemove =true;
})
BTLJ(".btl-content-block").click(function(){requireRemove =false;});
BTLJ(".btl-panel span").click(function(){requireRemove =false;});

// Modify iframe
BTLJ('#btl-iframe').load(function (){
//edit action form
oldAction=BTLJ('#btl-iframe').contents().find('form').attr("action");
if(oldAction!=null){
if(oldAction.search("tmpl=component")==-1){
if(BTLJ('#btl-iframe').contents().find('form').attr("action").indexOf('?')!=-1){
BTLJ('#btl-iframe').contents().find('form').attr("action",oldAction+"&tmpl=component");
}
else{
BTLJ('#btl-iframe').contents().find('form').attr("action",oldAction+"?tmpl=component");
}
}
}
});

//reload captcha click event
BTLJ('span#btl-captcha-reload').click(function(){
BTLJ.ajax({
type: "post",
url: btlOpt.BT_AJAX,
data: 'bttask=reload_captcha',
success: function(html){
BTLJ('#recaptcha img').attr('src', html);
}
});
});

});

function setFPosition(){
if(btlOpt.ALIGN == "center"){
BTLJ("#btl-content > div").each(function(){
var panelid = "#"+this.id.replace("content","panel");
var left = BTLJ(panelid).offset().left + BTLJ(panelid).width()/2 - BTLJ(this).width()/2;
if(left < 0) left = 0;
BTLJ(this).css('left',left);
});
}else{
if(btlOpt.ALIGN == "right"){
BTLJ("#btl-content > div").css('right',BTLJ(document).width()-BTLJ('.btl-panel').offset().left-BTLJ('.btl-panel').width());
}else{
BTLJ("#btl-content > div").css('left',BTLJ('.btl-panel').offset().left);
}
}
BTLJ("#btl-content > div").css('top',BTLJ(".btl-panel").offset().top+BTLJ(".btl-panel").height()+2);
}

// SHOW LOGIN FORM
function showLoginForm(){
if(BTLJ('#btl-content-login').size() == 0){
return;
}
BTLJ('.btl-panel span').removeClass("active");
var el = '#btl-panel-login';
if (btlOpt.LOGIN_TAGS) el += ', ' + btlOpt.LOGIN_TAGS;
BTLJ.simpleModal.close();
var containerWidth = 0;
var containerHeight = 0;
containerHeight = 371;
containerWidth = 357;

if(containerWidth>BTLJ(window).width()){
containerWidth = BTLJ(window).width()-50;
}
if(btlOpt.EFFECT == "btl-modal"){
BTLJ(el).addClass("active");
BTLJ("#btl-content > div").slideUp();
BTLJ("#btl-content-login").simpleModal({
overlayClose:true,
persist :true,
autoPosition:true,
fixed: BTLJ(window).width()>500,
onOpen: function (dialog) {
dialog.overlay.fadeIn();
dialog.container.show();
dialog.data.show();
},
onClose: function (dialog) {
dialog.overlay.fadeOut(function () {
dialog.container.hide();
dialog.data.hide();
BTLJ.simpleModal.close();
BTLJ('.btl-panel span').removeClass("active");
});
},
containerCss:{
height:containerHeight,
width:containerWidth
}
})
}
else
{
setFPosition();
BTLJ("#btl-content > div").each(function(){
if(this.id=="btl-content-login")
{
if(BTLJ(this).is(":hidden")){
BTLJ(el).addClass("active");
BTLJ(this).slideDown();
}
else{
BTLJ(this).slideUp();
BTLJ(el).removeClass("active");
}

}
else{
if(BTLJ(this).is(":visible")){
BTLJ(this).slideUp();
BTLJ('#btl-panel-registration').removeClass("active");
}
}

})
}
return false;
}

// SHOW REGISTRATION FORM
function showRegistrationForm(){
if(BTLJ("#btl-integrated").length){
window.location.href=BTLJ("#btl-integrated").val();
return;
}
if(BTLJ('#btl-content-registration').size() == 0){
return;
}
BTLJ('.btl-panel span').removeClass("active");
BTLJ.simpleModal.close();
var el = '#btl-panel-registration';
var containerWidth = 0;
var containerHeight = 0;
containerHeight = "auto";
containerWidth = "auto";
if(containerWidth>BTLJ(window).width()){
containerWidth = BTLJ(window).width();
}
if(btlOpt.EFFECT == "btl-modal"){
BTLJ(el).addClass("active");
BTLJ("#btl-content > div").slideUp();
BTLJ("#btl-content-registration").simpleModal({
overlayClose:true,
persist :true,
autoPosition:true,
fixed: BTLJ(window).width()>500,
onOpen: function (dialog) {
dialog.overlay.fadeIn();
dialog.container.show();
dialog.data.show();
},
onClose: function (dialog) {
dialog.overlay.fadeOut(function () {
dialog.container.hide();
dialog.data.hide();
BTLJ.simpleModal.close();
BTLJ('.btl-panel span').removeClass("active");
});
},
containerCss:{
height:containerHeight,
width:containerWidth
}
})
}
else
{
setFPosition();
BTLJ("#btl-content > div").each(function(){
if(this.id=="btl-content-registration")
{
if(BTLJ(this).is(":hidden")){
BTLJ(el).addClass("active");
BTLJ(this).slideDown();
}
else{
BTLJ(this).slideUp();
BTLJ(el).removeClass("active");
}
}
else{
if(BTLJ(this).is(":visible")){
BTLJ(this).slideUp();
BTLJ('#btl-panel-login').removeClass("active");
}
}

})
}
return false;
}

// SHOW PROFILE (LOGGED MODULES)
function showProfile(){
setFPosition();
var el = '#btl-panel-profile';
BTLJ("#btl-content > div").each(function(){
if(this.id=="btl-content-profile")
{
if(BTLJ(this).is(":hidden")){
BTLJ(el).addClass("active");
BTLJ(this).slideDown();
}
else{
BTLJ(this).slideUp();
BTLJ('.btl-panel span').removeClass("active");
}
}
else{
if(BTLJ(this).is(":visible")){
BTLJ(this).slideUp();
BTLJ('.btl-panel span').removeClass("active");
}
}

})
}

// AJAX REGISTRATION
function registerAjax(){

BTLJ("#btl-registration-error").hide();
BTLJ(".btl-error-detail").hide();
if(BTLJ("#btl-input-name").val()==""){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.REQUIRED_NAME).show();
BTLJ("#btl-input-name").focus();
return false;
}
if(BTLJ("#btl-input-username1").val()==""){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.REQUIRED_USERNAME).show();
BTLJ("#btl-input-username1").focus();
return false;
}
if(BTLJ("#btl-input-password1").val()==""){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.REQUIRED_PASSWORD).show();
BTLJ("#btl-input-password1").focus();
return false;
}
if(BTLJ("#btl-input-password2").val()==""){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.REQUIRED_VERIFY_PASSWORD).show();
BTLJ("#btl-input-password2").focus();
return false;
}
if(BTLJ("#btl-input-password2").val()!=BTLJ("#btl-input-password1").val()){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.PASSWORD_NOT_MATCH).show();
BTLJ("#btl-input-password2").focus().select();
BTLJ("#btl-registration-error").show();
return false;
}
if(BTLJ("#btl-input-email1").val()==""){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.REQUIRED_EMAIL).show();
BTLJ("#btl-input-email1").focus();
return false;
}
var emailRegExp = /^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.([a-zA-Z]){2,4})$/;
if(!emailRegExp.test(BTLJ("#btl-input-email1").val())){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.EMAIL_INVALID).show();
BTLJ("#btl-input-email1").focus().select();
return false;
}
if(BTLJ("#btl-input-email2").val()==""){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.REQUIRED_VERIFY_EMAIL).show();
BTLJ("#btl-input-email2").focus().select();
return false;
}
if(BTLJ("#btl-input-email1").val()!=BTLJ("#btl-input-email2").val()){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.EMAIL_NOT_MATCH).show();;
BTLJ("#btl-input-email2").focus().select();
return false;
}
if(btlOpt.RECAPTCHA =="1"){
if(BTLJ('#recaptcha_response_field').length && BTLJ('#recaptcha_response_field').val()==''){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.CAPTCHA_REQUIRED).show();
BTLJ('#recaptcha_response_field').focus();
return false;
}
}else if(btlOpt.RECAPTCHA =="2"){
if(BTLJ('#btl-captcha').length && BTLJ('#btl-captcha').val()==''){
BTLJ("#btl-registration-error").html(btlOpt.MESSAGES.CAPTCHA_REQUIRED).show();
BTLJ('#btl-captcha').focus();
return false;
}
}


var datasubmit = BTLJ('#btl-content-registration form').serialize();


BTLJ.ajax({
type: "POST",
beforeSend:function(){
BTLJ("#btl-register-in-process").show();
},
url: btlOpt.BT_AJAX,
data: datasubmit,
success: function(html){
//if html contain "Registration failed" is register fail
BTLJ("#btl-register-in-process").hide();
if(html.indexOf('$error$')!= -1){
BTLJ("#btl-registration-error").html(html.replace('$error$',''));
BTLJ("#btl-registration-error").show();
if(btlOpt.RECAPTCHA =="1"){
if(typeof(Recaptcha) != 'undefined'){
Recaptcha.reload();
}else if(typeof(grecaptcha) != 'undefined'){
grecaptcha.reset('bt-login-recaptcha');
}
}else if(btlOpt.RECAPTCHA =="2"){
BTLJ.ajax({
type: "post",
url: btlOpt.BT_AJAX,
data: 'bttask=reload_captcha',
success: function(html){
BTLJ('#recaptcha img').attr('src', html);
}
});
}

}else{
BTLJ(".btl-formregistration").children("div").hide();
BTLJ("#btl-success").html(html);
BTLJ("#btl-success").show();
setTimeout(function() {window.location.reload();},7000);

}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus + ': Ajax request failed');
}
});
return false;
}

// AJAX LOGIN
function loginAjax(){
if(BTLJ("#btl-input-username").val()=="") {
showLoginError(btlOpt.MESSAGES.REQUIRED_USERNAME);
return false;
}
if(BTLJ("#btl-input-password").val()==""){
showLoginError(btlOpt.MESSAGES.REQUIRED_PASSWORD);
return false;
}
var token = BTLJ('.btl-buttonsubmit input:last').attr("name");
var value_token = encodeURIComponent(BTLJ('.btl-buttonsubmit input:last').val());
var datasubmit= "bttask=login&username="+encodeURIComponent(BTLJ("#btl-input-username").val())
+"&passwd=" + encodeURIComponent(BTLJ("#btl-input-password").val())
+ "&"+token+"="+value_token
+"&return="+ encodeURIComponent(BTLJ("#btl-return").val());

if(BTLJ("#btl-checkbox-remember").is(":checked")){
datasubmit += '&remember=yes';
}

BTLJ.ajax({
type: "POST",
beforeSend:function(){
BTLJ("#btl-login-in-process").show();
BTLJ("#btl-login-in-process").css('height',BTLJ('#btl-content-login').outerHeight()+'px');

},
url: btlOpt.BT_AJAX,
data: datasubmit,
success: function (html, textstatus, xhrReq){
if(html == "1" || html == 1){
window.location.href=btlOpt.BT_RETURN;
}else{
if(html.indexOf('</head>')==-1){
showLoginError(btlOpt.MESSAGES.E_LOGIN_AUTHENTICATE);
}
else
{
if(html.indexOf('btl-panel-profile')==-1){
showLoginError('Another plugin has redirected the page on login, Please check your plugins system');
}
else
{
window.location.href=btlOpt.BT_RETURN;
}
}
}
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus + ': Membre inexistant. Cliquez sur OK, puis n\'importe où en dehors de la fenêtre de Connexion, et recommencez !');
}
});
return false;
}
function showLoginError(notice,reload){
BTLJ("#btl-login-in-process").hide();
BTLJ("#btl-login-error").html(notice);
BTLJ("#btl-login-error").show();
if(reload){
setTimeout(function() {window.location.reload();},5000);
}
}


nb: j'ai modifié le texte d'origine qui était "Ajax request failed !" (cf. 13ème ligne en remontant le script de bas en haut) par "Membre inexistant. Cliquez sur OK, puis n\'importe où en dehors de la fenêtre de Connexion, et recommencez !"
0
jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024 4 705
1 avril 2020 à 14:02
Tu ne m'as pas indiqué si il y avait des erreurs dans la console de ton navigateur lorsque le formulaire devient inopérant...
0
clend Messages postés 21 Date d'inscription jeudi 2 février 2017 Statut Membre Dernière intervention 1 avril 2020 > jordane45 Messages postés 38314 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 24 novembre 2024
1 avril 2020 à 14:25
Re,

Toutes mes excuses Jordane. Je n'avais pas encore eu ce réflexe d'aller voir les éventuels messages dans la console. D'où mon silence.
Mais je viens de le faire, et j'ai trouvé pourquoi l'utilisateur se retrouve ainsi bloqué : c'est une directive http de protection "nosniff" placée en sécurité dans mon fichier .htaccess qui provoque ce blocage !
Je viens de la supprimer ... et c'est OK.

Merci pour ton aide.
0