I changed nickname.js on the server side to check for age and gender.
When I want to use some custom error codes, for example 206 it will
catch the error, but after that it keeps trying to connect.
However when i use error code 006 or 007 in the same way, it works
good. In the example below, if I change 206 to 006 it works good? I
really can't figure it out why it doesn't work, because it should
work.
Is there maybe something special to error code 006 or 007?
Client side:
APE.Chat = new Class({
Extends: APE.Client,
Implements: Options,
options:{
container: null,
container: document.body
},
initialize: function(options){
this.setOptions(options);
this.els = {};
this.currentPipe = null;
this.onRaw('data',this.rawData);
this.onCmd('send',this.cmdSend);
this.onError('004',this.reset);
this.onError('206',this.setName);
this.onError('006',this.setName);
this.onError('007',this.setName);
this.addEvent('load',this.start);
this.addEvent('ready',this.createChat);
this.addEvent('uniPipeCreate',this.setPipeName);
this.addEvent('uniPipeCreate',this.createPipe);
this.addEvent('multiPipeCreate',this.createPipe);
this.addEvent('userJoin',this.createUser);
this.addEvent('userLeft',this.deleteUser);
},
setName: function(errorRaw){
this.els.setName = {};
this.els.setName.div = new Element('div',{
'class' : 'setname'
}).inject(this.options.container)
this.els.setName.form = new Element('form',{
'class' : 'setnameform'
}).inject(this.els.setName.div);
this.els.setName.form.addEvent('submit',function(event){
event.stop();
this.options.name =
this.els.setName.nameInput.get('value');
this.options.age =
this.els.setName.ageInput.get('value');
this.options.gender =
this.els.setName.genderSelect.get('value');
this.els.setName.div.dispose();
this.start();
}.bindWithEvent(this));
this.els.setName.form.appendText('Voer een gebruikersnaam in:
');
this.els.setName.nameInput = new Element('input',{'class' :
'setnameinput'}).inject(this.els.setName.form);
new Element('br').inject(this.els.setName.form);
this.els.setName.form.appendText('Voer leeftijd in: ');
this.els.setName.ageInput = new Element('input',{'class' :
'setageinput'}).inject(this.els.setName.form);
new Element('br').inject(this.els.setName.form);
this.els.setName.form.appendText('Kies geslacht: ');
this.els.setName.genderSelect = new Element('select',{'class' :
'setgenderselect'}).inject(this.els.setName.form);
new Element('option',{'value' : 'm','text' :
'Man'}).inject(this.els.setName.genderSelect);
new Element('option',{'value' : 'f','text' :
'Vrouw'}).inject(this.els.setName.genderSelect);
new Element('option',{'value' : 'c','text' :
'Stel'}).inject(this.els.setName.genderSelect);
new Element('option',{'value' : 'x','text' :
'ee'}).inject(this.els.setName.genderSelect);
new Element('br').inject(this.els.setName.form);
this.els.setName.button = new Element('input',{
'class' : 'setnamesubmit',
'type' : 'submit',
'value' : 'Inloggen'
}).inject(this.els.setName.form)
var error;
if (errorRaw) {
alert(errorRaw.data.code);
if (errorRaw.data.code == 206) error = '<li>Ongeldige
leeftijd!</
li>';
if (errorRaw.data.code == 007) error = '<li>Deze
gebruikersnaam is
al in gebruik!</li>';
if (errorRaw.data.code == 006) error = '<li>Onjuiste
gebruikersnaam, de gebruikersnaam mag alleen uit a-z en 0-9 bestaan!</
li>';
if (error) {
this.els.setName.error = new
Element('ul',{'class' :
'setnameerror','html': error}).inject(this.els.setName.div,'top');
}
}
},
start: function(){
if (!(this.options.name && this.options.age &&
this.options.gender)
&& !this.core.options.restore) {
this.setName();
} else {
//console.log('p ');
var opts = {'sendStack' : false,'request' : 'stack'};
this.core.start({'name' : this.options.name,'age' :
this.options.age,'gender' : this.options.gender},opts);
if (this.core.options.restore) {
this.core.getSession('currentPipe',function(response) {
this.setCurrentPipe(response.data.sessions.currentPipe);
}.bind(this),opts);
}
this.core.request.stack.send();
}
},
setPipeName: function(pipe,options) {
if (options.name) {
pipe.name = options.name;
return;
}
if (options.from) {
pipe.name = options.from.properties.name;
} else {
pipe.name = options.pipe.properties.name;
}
},
getCurrentPipe: function(){
return this.currentPipe;
},
setCurrentPipe: function(pubid,save){
save = !save;
if (this.currentPipe){
this.currentPipe.els.tab.addClass('unactivetab');
this.currentPipe.els.container.addClass('hide');
}
this.currentPipe = this.core.getPipe(pubid);
this.currentPipe.els.tab.removeClass('notifytab');
this.currentPipe.els.tab.removeClass('unactivetab');
this.currentPipe.els.container.removeClass('hide');
this.scrollMsg(this.currentPipe);
if (save) this.core.setSession({'currentPipe' :
this.currentPipe.getPubid()});
return this.currentPipe;
},
cmdSend: function(data,pipe){
this.writeMessage(pipe,data.msg,this.core.user);
},
rawData: function(raw,pipe){
this.writeMessage(pipe,raw.data.msg,raw.data.from);
},
parseMessage: function(message){
return decodeURIComponent(message);
},
notify: function(pipe){
pipe.els.tab.addClass('notifytab');
},
scrollMsg: function(pipe){
var scrollSize = pipe.els.messages.getScrollSize();
pipe.els.messages.scrollTo(0,scrollSize.y);
},
writeMessage: function(pipe,message,from){
if (pipe.lastMsg && pipe.lastMsg.from.pubid == from.pubid){
var cnt = pipe.lastMsg.el;
} else {
var msg = new Element('div',{'class' : 'message'});
var cnt = new Element('div',{'class' :
'usermessages'}).inject(msg);
if (from) {
new Element('div',{'class' : 'from','text' :
from.properties.name}).inject(msg,'top');
}
msg.inject(pipe.els.messages);
}
new Element('div',{
'text' : this.parseMessage(message),
'class' : 'usermessage'
}).inject(cnt);
this.scrollMsg(pipe);
pipe.lastMsg = {from : from,el : cnt};
if (this.getCurrentPipe().getPubid() != pipe.getPubid()){
this.notify(pipe);
}
},
createUser: function(user,pipe){
user.el = new Element('div',{
'class' : 'user'
}).inject(pipe.els.users);
new Element('a',{
'text' : user.properties.name + '(' +
user.properties.age + ')',
'href' : 'javascript:void(0)',
'events' : {
'click' :
function(ev,user) {
if (this.core.user.pubid != user.pubid)
{
this.core.getPipe(user.pubid)
this.setCurrentPipe(user.pubid);
}
}.bindWithEvent(this,[user])
}
}).inject(user.el,'inside');
},
deleteUser: function(user,pipe){
user.el.dispose();
},
createPipe: function(pipe,options){
pipe.els = {};
pipe.els.container = new Element('div',{
'class' : 'pipe hide'
}).inject(this.els.pipeContainer);
pipe.els.messages = new Element('div',{'class' :
'messages'}).inject(pipe.els.container,'inside');
if (pipe.users) {
pipe.els.userList = new Element('div',{
'class' : 'userlist'
}).inject(pipe.els.container);
pipe.els.users = new Element('div',{
'class' : 'users'
}).inject(pipe.els.userList);
}
pipe.els.tab = new Element('div',{
'class' :'tab unactivetab'
}).inject(this.els.tabContainer);
new Element('a',{
'text' : pipe.name,
'href' : 'javascript:void(0)',
'events' : {
'click' : function(pipe) {
this.setCurrentPipe(pipe.getPubid())
}.bind(this,[pipe])
}
}).inject(pipe.els.tab);
this.setCurrentPipe(pipe.getPubid());
},
createChat: function() {
this.els.pipeContainer = new Element('div',{'id' : 'pipes'});
this.els.pipeContainer.inject(this.options.container);
this.els.actionContainer = new Element('div',{'id' :
'actions'}).inject(this.options.container,'after');
this.els.tabContainer = new Element('div',{'id' :
'tabs'}).inject(this.els.actionContainer);
this.els.sendContainer = new Element('div',{'id' :
'send'}).inject(this.els.actionContainer);
this.els.sendForm = new Element('form',{
'class' : 'sendform',
'events' : {
'submit' : function(event) {
event.stop();
var val =
this.els.sendInput.get('value');
if (val != ''){
this.getCurrentPipe().send(val);
this.els.sendInput.set('value','');
}
}.bindWithEvent(this)
}
}).inject(this.els.sendContainer);
this.els.sendInput = new Element('input',{
'type' : 'text',
'id' : 'sendinput',
'autocomplete' : 'off'
}).inject(this.els.sendForm);
this.els.sendSubmit = new Element('input',{
'type' : 'submit',
'id' : 'sendsubmit',
'value' : 'Versturen'
}).inject(this.els.sendForm);
},
reset: function(){
this.core.clearSession();
if (this.els.pipeContainer){
this.els.pipeContainer.dispose();
this.els.actionContainer.dispose();
}
this.core.initialize(this.core.options);
}
});
Serverside:
var userlist = new $H;
Ape.registerHookCmd("connect", function(params, cmd) {
if (!$defined(params)) return 0;
if (!$defined(params.name)) return 0;
if (userlist.has(params.name.toLowerCase())) return ["007",
"NICK_USED"];
if (params.name.length > 16 || params.name.test('[^a-zA-
Z0-9]', 'i')) return ["006", "BAD_NICK"];
if (params.age.toInt() < 1) return ["206", "BAD_AGE"];
cmd.user.setProperty('name',params.name);
cmd.user.setProperty('age',params.age);
cmd.user.setProperty('gender',params.gender);
return 1;
});
Ape.addEvent('adduser', function(user) {
userlist.set(user.getProperty('name').toLowerCase(), true);
});
Ape.addEvent('deluser', function(user) {
userlist.erase(user.getProperty('name').toLowerCase());
});
--
You received this message because you are subscribed to the Google
Groups "APE Project" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/ape-project?hl=en
---
APE Project (Ajax Push Engine)
Official website : http://www.ape-project.org/
Git Hub : http://github.com/APE-Project/