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/

Reply via email to