diff --git a/js/includes/input-facebook-contact.js b/js/includes/input-facebook-contact.js index f8af882..ae2795f 100644 --- a/js/includes/input-facebook-contact.js +++ b/js/includes/input-facebook-contact.js @@ -15,12 +15,86 @@ inputFacebookContact.prototype = { }; +/* [2.1] Fiche CALL range +=========================================================*/ +inputFacebookContact.prototype.callRange = function(uid){ return uid >= 0 && uid < 20; }; -/* [2] Vérification des données d'un contact +/* [2.2] Fiche SMS range +=========================================================*/ +inputFacebookContact.prototype.smsRange = function(uid){ return uid >= 20 && uid < 40; }; + +/* [2.3] Si contact identique +=========================================================*/ +inputFacebookContact.prototype.sameContact = function(uid, username, existing, range){ + var contact = null, + limits = null; + + /* (1) Gestion de la tranche + ---------------------------------------------------------*/ + if( range === 'call' ) limits = { min: 0, max: 19 }; + else if( range === 'sms' ) limits = { min: 29, max: 39 }; + else if( range === 'mini' ) limits = { min: 40, max: Infinity }; + else + return false; + + + /* (2) Gestion de la vérification + ---------------------------------------------------------*/ + for( var a = limits.min, b = limits.max ; a < b ; a++ ){ + /* (1) On récupère le contact */ + contact = lsi.get('f_contacts', a); + + // si n'existe pas, on quitte + if( contact === null ) break; + + /* (2) si c'est le contact actuel, on passe au suivant */ + if( parseInt(contact.uid) === parseInt(uid) ) + continue; + + /* (3) On vérifie si le contact est identique (si défini par `username`) */ + if( contact.username.length > 0 && username === contact.username ) + return true; + + /* (4) On vérifie par référence */ + else if( username.length === 0 && parseInt(existing) === parseInt(contact.existing) ) + return true; + + } + + return false; +}; + +/* [2.4] Vérification des données d'un contact =========================================================*/ inputFacebookContact.prototype.check = function(deflated){ - /* On retourne la validité du formulaire */ - return !isNaN(deflated.existing) || deflated.username.length > 0; + /* (1) Si on a pas renseigné le sujet + ---------------------------------------------------------*/ + if( lsi.keys('f_subject').length === 0 ){ + Notification.warning('ATTENTION', 'Il faut renseigner le sujet avant de saisir les contacts'); + return false; + } + + /* (2) On vérifie la validité du formulaire + ---------------------------------------------------------*/ + var isValid = !isNaN(deflated.existing) || deflated.username.length > 0; + if( !isValid ) return false; + + /* (3) On vérifie l'unicité du contact dans le top/mini + ---------------------------------------------------------*/ + /* (1) On calcule la tranche actuelle (call, sms, mini) */ + var range = this.callRange(deflated.uid) ? 'call' : this.smsRange(deflated.uid) ? 'sms' : 'mini'; + + /* (2) On effectue la vérification */ + if( this.sameContact(deflated.uid, deflated.username, deflated.existing, range) ){ + if( deflated.username.length > 0 ) Notification.error('Contact dupliqué', 'Le contact de nom '+deflated.username+' est déja utilisé dans cette partie'); + else Notification.error('Contact dupliqué', 'Le contact '+lsi.get('f_friends', deflated.existing).name+' est déja utilisé dans cette partie'); + + return false; + } + + + + return true; } diff --git a/js/includes/input-phone-contact.js b/js/includes/input-phone-contact.js index a8d3d32..be92bd3 100644 --- a/js/includes/input-phone-contact.js +++ b/js/includes/input-phone-contact.js @@ -67,15 +67,24 @@ inputPhoneContact.prototype.sameContact = function(uid, username, existing, rang /* [2.4] Vérification des données d'un contact =========================================================*/ inputPhoneContact.prototype.check = function(deflated){ - /* On vérifie la validité du formulaire */ + /* (1) Si on a pas renseigné le sujet + ---------------------------------------------------------*/ + if( lsi.keys('p_subject').length === 0 ){ + Notification.warning('ATTENTION', 'Il faut renseigner le sujet avant de saisir les contacts'); + return false; + } + + /* (2) On vérifie la validité du formulaire + ---------------------------------------------------------*/ var isValid = !isNaN(deflated.existing) || deflated.username.length > 0; if( !isValid ) return false; - /* On vérifie l'unicité du contact */ + /* (3) On vérifie l'unicité du contact dans le top/mini + ---------------------------------------------------------*/ + /* (1) On calcule la tranche actuelle (call, sms, mini) */ var range = this.callRange(deflated.uid) ? 'call' : this.smsRange(deflated.uid) ? 'sms' : 'mini'; - /* (1) Si contact "identique" dans la même tranche - ---------------------------------------------------------*/ + /* (2) On effectue la vérification */ if( this.sameContact(deflated.uid, deflated.username, deflated.existing, range) ){ if( deflated.username.length > 0 ) Notification.error('Contact dupliqué', 'Le contact de nom '+deflated.username+' est déja utilisé dans cette partie'); else Notification.error('Contact dupliqué', 'Le contact '+lsi.get('p_friends', deflated.existing).name+' est déja utilisé dans cette partie'); @@ -83,6 +92,8 @@ inputPhoneContact.prototype.check = function(deflated){ return false; } + + return true; }; diff --git a/js/includes/min/input-facebook-contact.js b/js/includes/min/input-facebook-contact.js index 7b58e6c..e875a00 100644 --- a/js/includes/min/input-facebook-contact.js +++ b/js/includes/min/input-facebook-contact.js @@ -1,4 +1,7 @@ -function inputFacebookContact(a,c){this.container=a;this.nav_container=c}inputFacebookContact.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null};inputFacebookContact.prototype.check=function(a){return!isNaN(a.existing)||0a};inputFacebookContact.prototype.smsRange=function(a){return 20<=a&&40>a}; +inputFacebookContact.prototype.sameContact=function(a,c,b,d){var e=null,e=null;if("call"===d)e={min:0,max:19};else if("sms"===d)e={min:29,max:39};else if("mini"===d)e={min:40,max:Infinity};else return!1;d=e.min;for(var f=e.max;d"+c[b].name+"\n";this.container.innerHTML+=fContactBuilder.build(a);b=$('[data-sublink="facebook"] article.contact-panel .new-contact input[data-name="uid"][value="'+a.uid+'"] ~ span select[data-name="existing"]>option[value="'+a.existing+ diff --git a/js/includes/min/input-phone-contact.js b/js/includes/min/input-phone-contact.js index 468eea9..6d2dd91 100644 --- a/js/includes/min/input-phone-contact.js +++ b/js/includes/min/input-phone-contact.js @@ -1,7 +1,8 @@ function inputPhoneContact(a,b){this.container=a;this.nav_container=b}inputPhoneContact.prototype={container:this.container,nav_container:this.nav_container,selected:0,handler:null};inputPhoneContact.prototype.callRange=function(a){return 0<=a&&20>a};inputPhoneContact.prototype.smsRange=function(a){return 20<=a&&40>a}; inputPhoneContact.prototype.sameContact=function(a,b,c,d){var e=null,e=null;if("call"===d)e={min:0,max:19};else if("sms"===d)e={min:29,max:39};else if("mini"===d)e={min:40,max:Infinity};else return!1;d=e.min;for(var f=e.max;d"+b[c].name+"\n";this.container.innerHTML+=pContactBuilder.build(a);c=$('[data-sublink="phone"] article.contact-panel .new-contact input[data-name="uid"][value="'+a.uid+'"] ~ span select[data-name="existing"]>option[value="'+ a.existing+'"]');null!=c&&c.setAttribute("selected","selected");a=$$('[data-sublink="phone"] article.contact-panel .new-contact');var d=this;for(c=0;c=a.length&&this.add({uid:a.length});this.updateNavBar();console.groupEnd()};