Changeset 311


Ignore:
Timestamp:
06/10/08 16:41:40 (16 years ago)
Author:
niltonneto
Message:

Correções críticas para funcionalidades já existentes.

Location:
trunk/instant_messenger
Files:
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/instant_messenger/inc/Jabberd2.abstract.php

    r305 r311  
    171171        } 
    172172 
     173        final function get_last_access_user($pUser) 
     174        { 
     175                $id = "last_time_user"; 
     176                $jid = ( trim($pUser['jid']) == "this" ) ? $this->_user . '@' . $this->_server : $pUser['jid']; 
     177                $this->iq('get', $id, $jid, NULL, "jabber:iq:last"); 
     178        } 
     179 
    173180        final function setStatus() 
    174181        { 
  • trunk/instant_messenger/inc/class.Ujabber.inc.php

    r305 r311  
    7474                        return "disconnected"; 
    7575 
     76                $this->get_last_access_user(array("jid" => "this")); 
     77 
    7678                if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ) 
    7779                { 
     
    8991                        $buffer = ''; 
    9092 
    91                         while ( ( connection_aborted() === 0 ) && time() - $init < 50 ) 
     93                        while ( ( connection_aborted() === 0 ) && time() - $init < 30 ) 
    9294                        { 
    9395                                # read from server and write in the client 
  • trunk/instant_messenger/js/client.js

    r305 r311  
    2929        var _window = new Windows(_xtools, _im_content); 
    3030        var _ldap = new InstantMessengerLDAP(_conn, _xtools, _window); 
    31         var _jabber = new Jabber(_conn, _xtools, _window, _ldap); 
     31        var _showhidden = new ShowHidden(1500); 
     32        var _jabber = new Jabber(_conn, _xtools, _window, _ldap, _showhidden); 
    3233 
    3334        // XSL preload 
    34         var _xsl_preload = ['chat.xsl','layer.xsl','contacts']; 
     35        var _xsl_preload = ['window.xsl','layer.xsl','contacts.xsl', 'chat.xsl']; 
    3536        var _xsl_preload_legth = _xsl_preload.length; 
    3637        for ( var i = 0; i < _xsl_preload_legth; i++ ) 
     
    4041        if ( (local = top.document.getElementById('user_info')) ) 
    4142        { 
    42                 local.innerHTML = ' ' + local.innerHTML; 
    43                 var _status = top.document.createElement('img'); 
    44                         _status.setAttribute('id','im_status_src'); 
    45                         _status.src = im_available.src; 
     43                local.firstChild.style.marginLeft = '30px'; 
     44 
     45                var _status = top.document.createElement('div'); 
     46                        _status.setAttribute('id', 'im_status'); 
     47                        _status.style.height = '15px'; 
     48                        _status.style.margin = '0 0 0 10px'; 
     49                        _status.style.padding = '0px'; 
     50                        _status.style.width = '15px'; 
     51                        _status.style.background = 'no-repeat'; 
     52                        _status.style.backgroundImage = 'url(' + im_unavailable.src + ')'; 
     53                        _status.style.float = 'left'; 
     54                        _status.style.position = 'absolute'; 
    4655 
    4756                local.insertBefore(_status, local.firstChild); 
     
    5059 
    5160                var _menu; 
    52                 _menu = top.document.createElement('span'); 
    53                 _menu.setAttribute('id','fast_menu_im'); 
     61                        _menu = top.document.createElement('span'); 
     62                        _menu.setAttribute('id','fast_menu_im'); 
     63                        _menu.style.backgroundColor = 'b4cfe5'; 
     64                        _menu.style.display = 'none'; 
     65                        _menu.style.margin = '15px 0 0 -15px'; 
     66                        _menu.style.position = 'absolute'; 
     67                        _menu.style.zIndex = '99999'; 
    5468                local.insertBefore(_menu, local.firstChild); 
    5569 
    56                 _menu = top.document.createElement('img'); 
    57                 _menu.src = im_fast_menu.src; 
    58                 local.insertBefore(_menu, local.firstChild); 
    59  
    60                 //var local_old = local.innerHTML ; 
    61                 //local.innerHTML  = '<img src="' + im_fast_menu.src + '" onclick="javascript:templates.fast_menu();">'; 
    62                 //local.innerHTML += '<img id="im_status_src" src="' + im_available.src + '" onclick="javascript:load_im_contacts();"/>'; 
    63                 //local.innerHTML += local_old; 
    64                 //local.innerHTML += '<div id="instant_messenger_content"></div><span id="fast_menu_im"/>'; 
     70                var _menu_img = top.document.createElement('div'); 
     71                        _menu_img.style.background = 'no-repeat'; 
     72                        _menu_img.style.backgroundImage = 'url(' + im_fast_menu.src + ')'; 
     73                        _menu_img.style.height = '10px'; 
     74                        _menu_img.style.margin = '0px'; 
     75                        _menu_img.style.padding = '0px'; 
     76                        _menu_img.style.position = 'absolute'; 
     77                        _menu_img.style.width = '10px'; 
     78                        _menu_img.style.float = 'left'; 
     79                local.insertBefore(_menu_img, local.firstChild); 
     80 
     81                _config( 
     82                        _menu_img, 
     83                        'onclick', 
     84                        function() 
     85                        { 
     86                                var _options = [ 
     87                                        'available', 
     88                                        'away', 
     89                                        'dnd', 
     90                                        'unavailable' 
     91                                ]; 
     92 
     93                                var _style_text = 'cursor: pointer; padding:2px 4px 2px 20px; background: no-repeat '; 
     94 
     95                                var _xml = _xtools.xml('menu'); 
     96                                var _option; 
     97                                var _item; 
     98                                var _action; 
     99                                var _style; 
     100 
     101                                for ( var i in _options ) 
     102                                { 
     103                                        _option = _xml.createElement('option'); 
     104 
     105                                        _item = _xml.createElement('item'); 
     106                                        _item.appendChild(_xml.createTextNode(imGetLang(_options[i]))); 
     107 
     108                                        _style = _xml.createElement('style'); 
     109                                        _style.appendChild(_xml.createTextNode(_style_text + 'url(' + eval('im_' + _options[i] + '.src') + ')')); 
     110 
     111                                        _option.appendChild(_item); 
     112                                        _option.appendChild(_style); 
     113 
     114                                        _xml.documentElement.appendChild(_option); 
     115                                } 
     116 
     117                                _menu.innerHTML = _xtools.parse(_xml, 'options.xsl'); 
     118                                _showhidden.action('onmouseover', 'onmouseout', _menu); 
     119 
     120                                _item = _menu.firstChild; 
     121 
     122                                for ( var i in _options ) 
     123                                { 
     124                                        _item.childNodes[i].setAttribute('presence', _options[i]); 
     125                                        _config( 
     126                                                _item.childNodes[i], 
     127                                                'onclick', 
     128                                                function(e) 
     129                                                { 
     130                                                        var el = ( e.target ) ? e.target : e.srcElement; 
     131 
     132                                                        _status.style.backgroundImage = el.style.backgroundImage; 
     133 
     134                                                        var _presence = el.getAttribute('presence'); 
     135                                                                _jabber.setPresence(_presence); 
     136 
     137                                                        var _win_contacts = _window.get('contact_list'); 
     138                                                        if ( _win_contacts ) 
     139                                                                _win_contacts.icon(eval('im_' + _presence + '.src')); 
     140                                                } 
     141                                        ); 
     142                                } 
     143                        } 
     144                ); 
    65145        } 
    66146 
     
    114194        } 
    115195 
     196        var _count_reconnect = 0; 
    116197        function _request() 
    117198        { 
     
    122203                                'classCostructor=read' 
    123204                        ); 
     205                else 
     206                        setTimeout(_reconnect, (++_count_reconnect * 2000)); 
    124207        } 
    125208 
  • trunk/instant_messenger/js/connector.js

    r305 r311  
    181181                        return {'error' : "#1\n\n" + usage()}; 
    182182 
    183                 if ( _THREADS[_ID] ) 
    184                         return {'error' : '#2 - there is a equal request running'}; 
     183                //if ( _THREADS[_ID] ) 
     184                //      return {'error' : '#2 - there is a equal request running'}; 
    185185 
    186186                _THREADS[_ID] = { 
  • trunk/instant_messenger/js/images.js

    r305 r311  
    2929        var im_group_open = new Image(); 
    3030        im_group_open.src = path_im + 'templates/default/images/group_open.gif'; 
     31 
     32        var im_group_close = new Image(); 
     33        im_group_close.src = path_im + 'templates/default/images/group_close.gif'; 
    3134 
    3235// Smiles 
  • trunk/instant_messenger/js/jabber.js

    r305 r311  
    55        var _window; 
    66        var _ldap; 
    7  
    8         var _menu = new ShowHidden(1500); 
     7        var _menu; 
    98 
    109        var _vcards = []; 
     
    138137                var _win = _window.get('chat' + id); 
    139138                if ( !_win ) 
    140                         _chat(id); 
     139                { 
     140                        _win = _chat(id); 
     141                        var _st = el.style.backgroundImage; 
     142                        _win.icon(_st.substr(4, (_st.length - 5))); 
     143                } 
    141144                else 
    142145                { 
     
    155158                        _win_contact.bc.style.display = 'none'; 
    156159                        _win_contact.wm.style.display = 'none'; 
     160                        _win_contact.icon(im_available.src); 
    157161 
    158162                var _params = { 
     
    172176                if ( _contact_list ) 
    173177                { 
    174                         _conn.go('$this.Ujabber.setStatus'); 
     178                        _setPresence('unavailable'); 
     179                        _setPresence(); 
    175180                        _ldap.photo( 
    176181                                'im_avatar', 
     
    222227                                        var _sub_menu = top.document.getElementById('sub_' + el.getAttribute('jid')); 
    223228                                                _sub_menu.innerHTML = _xtools.parse(_xml, 'options.xsl'); 
    224                                                 _menu.action('onmouseover', 'onmouseout', _sub_menu); 
     229 
     230                                        _menu.action('onmouseover', 'onmouseout', _sub_menu); 
    225231 
    226232                                        _sub_menu = _sub_menu.firstChild; 
     
    260266                        while ( _contact ) 
    261267                        { 
     268                                _config(_contact, 'onmouseover', _hover); 
     269                                _config(_contact, 'onmouseout', _hover); 
    262270                                if ( _contact.getAttribute('jid') ) 
    263271                                { 
    264272                                        //_config(_contact, 'onmousedown', _click); 
    265273                                        _config(_contact, 'onmouseup', _click); 
    266                                         _config(_contact, 'onmouseover', _hover); 
    267                                         _config(_contact, 'onmouseout', _hover); 
     274                                } 
     275                                else 
     276                                { 
     277                                        _config(_contact, 'onclick', 
     278                                        function(e) 
     279                                        { 
     280                                                var el = ( e.target ) ? e.target : e.srcElement; 
     281 
     282                                                if ( el.style.backgroundImage.indexOf('group_open') < 0 ) 
     283                                                        el.style.backgroundImage = 'url(' + im_group_open.src + ')'; 
     284                                                else 
     285                                                        el.style.backgroundImage = 'url(' + im_group_close.src + ')'; 
     286 
     287                                                el = el.nextSibling; 
     288                                                while ( el.getAttribute('jid') ) 
     289                                                { 
     290                                                        el.style.display = ( el.style.display != 'none' ) ? 
     291                                                                'none' : 'block'; 
     292                                                        el = el.nextSibling; 
     293                                                        if ( el && el.nextSibling ) 
     294                                                                el = el.nextSibling; 
     295                                                } 
     296                                        }); 
    268297                                } 
    269298                                _contact = _contact.nextSibling; 
     
    272301        } 
    273302 
     303        function _setPresence() 
     304        { 
     305                var _presence = false; 
     306                var _pPresence; 
     307                if ( arguments.length == 0 ) 
     308                        _pPresence = 'available'; 
     309                else 
     310                        _pPresence = arguments[0]; 
     311                switch ( _pPresence ) 
     312                { 
     313                        case 'away': 
     314                        case 'dnd': 
     315                        case 'xa': 
     316                                _presence = 'show=' + _pPresence; 
     317                        break; 
     318                        case 'available': 
     319                        case 'unavailable': 
     320                                _presence = 'type=' + _pPresence; 
     321                        break; 
     322                } 
     323 
     324                if ( _presence ) 
     325                { 
     326                        var _status = top.document.getElementById('im_status'); 
     327                        if ( _status ) 
     328                                _status.style.backgroundImage = 'url(' + eval('im_' + _pPresence + '.src') + ')'; 
     329                        _conn.go('$this.Ujabber.setPresence', _presence); 
     330                } 
     331        } 
     332 
    274333        function _vcard(_pJid) 
    275334        { 
     
    285344 
    286345                                _win_vcard = _window.load('vcard_' + _pJid); 
    287                                 _win_vcard.title('.:: Informações do Contato ::.'); 
     346                                _win_vcard.title('.:: Informações do Contato ::.'); 
    288347                                _win_vcard.size(300); 
    289348                                _win_vcard.position(_win_pos, _win_pos); 
     
    347406                                _readVCard(pIq); 
    348407                        break; 
     408                        case 'last_time_user' : 
     409                                _readLastTimeUser(pIq); 
     410                        break; 
    349411                        default : //alert('readIq : ' + pIq.getAttribute('id')); 
    350412                } 
     413        } 
     414 
     415        function _readLastTimeUser(pIq) 
     416        { 
     417                if ( pIq.firstChild.getAttribute("seconds") != 0 ) 
     418                        _setPresence(); 
    351419        } 
    352420 
     
    366434                { 
    367435                        if ( !_win ) 
     436                        { 
    368437                                _win = _chat(_from); 
     438                                var _st = top.document.getElementById('contact_' + _from); 
     439                                if ( _st ) 
     440                                { 
     441                                        _st = _st.style.backgroundImage; 
     442                                        _win.icon(_st.substr(4, (_st.length - 5))); 
     443                                } 
     444                        } 
    369445 
    370446                        var _history = _win.wc.firstChild; 
     
    409485                var _img_status_contact = top.document.getElementById('contact_' + _from); 
    410486                var _mensagem_status_contact = top.document.getElementById('status_' + _from); 
     487                var _win_chat = _window.get('chat' + _from); 
     488 
    411489                if ( _mensagem_status_contact ) 
    412490                { 
     
    423501                                        if ( _img_status_contact ) 
    424502                                                _img_status_contact.style.backgroundImage = 'url(' + eval('im_' + _presence_type + '.src') + ')'; 
     503                                        if ( _win_chat ) 
     504                                                _win_chat.icon(eval('im_' + _presence_type + '.src')); 
    425505                                break; 
    426506                                case 'subscribe' : 
     
    538618                                                        if ( _img_status_contact ) 
    539619                                                                _img_status_contact.style.backgroundImage = 'url(' + eval('im_' + _node.firstChild.nodeValue + '.src') + ')'; 
     620                                                        if ( _win_chat ) 
     621                                                                _win_chat.icon(eval('im_' + _node.firstChild.nodeValue + '.src')); 
    540622                                                break; 
    541623                                                case "status" : 
     
    550632                                                        if ( _img_status_contact ) 
    551633                                                                _img_status_contact.style.backgroundImage = 'url(' + im_available.src + ')'; 
     634                                                        if ( _win_chat ) 
     635                                                                _win_chat.icon(im_available.src); 
    552636                                        } 
    553637                                } 
     
    610694                _window = arguments[2]; 
    611695                _ldap = arguments[3]; 
     696                _menu = arguments[4]; 
    612697        } 
    613698 
    614699        Jabber.prototype.action = _action; 
     700        Jabber.prototype.setPresence = _setPresence; 
    615701        window.Jabber = Jabber; 
    616702} 
  • trunk/instant_messenger/js/ldap.js

    r305 r311  
    5151                                        if ( !_jid ) 
    5252                                        { 
    53                                                 _status.innerHTML = 'Selecione uma organização no campo da esquerda e em<br/>' 
    54                                                                                         + ' seguida, no campo da direita, um membro da organização<br/>' 
     53                                                _status.innerHTML = 'Selecione uma organização no campo da esquerda e em<br/>' 
     54                                                                                        + ' seguida, no campo da direita, um membro da organização<br/>' 
    5555                                                                                        + ' para adicionar como contato'; 
    5656                                        } 
     
    6262                                                if ( !(_name.value) || !(_group.value) ) 
    6363                                                { 
    64                                                         _status.innerHTML = '<br/>O campo destacado em vermelho é obrigatório!<br/>'; 
     64                                                        _status.innerHTML = '<br/>O campo destacado em vermelho é obrigatório!<br/>'; 
    6565 
    6666                                                        if ( !(_name.value) ) 
  • trunk/instant_messenger/js/windows.js

    r305 r311  
    4040                        _window.childNodes[1].childNodes[1].setAttribute('dragdrop_child','true'); 
    4141 
    42                         _config(_window.childNodes[1].childNodes[1].childNodes[0], 'onclick', _button); 
    43                         _config(_window.childNodes[1].childNodes[1].childNodes[1], 'onclick', _button); 
    44                         _config(_window.childNodes[1].childNodes[1].childNodes[2], 'onclick', _button); 
     42                        _config(_window.childNodes[1].childNodes[2].childNodes[0], 'onclick', _button); 
     43                        _config(_window.childNodes[1].childNodes[2].childNodes[1], 'onclick', _button); 
     44                        _config(_window.childNodes[1].childNodes[2].childNodes[2], 'onclick', _button); 
    4545 
    4646                        _all_windows[pId + '__window_master'] = { 
    4747                                'id' : pId, 
    4848                                'wm' : _window, // wm - window master 
    49                                 'wt' : _window.childNodes[1].firstChild, // wt - window title 
    50                                 'bc' : _window.childNodes[1].childNodes[1].childNodes[0], // bc - button close 
    51                                 'bx' : _window.childNodes[1].childNodes[1].childNodes[1], // bx - button maximize 
    52                                 'bz' : _window.childNodes[1].childNodes[1].childNodes[2], // bz - button minimize 
     49                                'ic' : _window.childNodes[1].firstChild, // wt - window title 
     50                                'wt' : _window.childNodes[1].childNodes[1], // wt - window title 
     51                                'bc' : _window.childNodes[1].childNodes[2].childNodes[0], // bc - button close 
     52                                'bx' : _window.childNodes[1].childNodes[2].childNodes[1], // bx - button maximize 
     53                                'bz' : _window.childNodes[1].childNodes[2].childNodes[2], // bz - button minimize 
    5354                                'wc' : _window.childNodes[2].firstChild, // wc - window content 
    5455                                'wf' : _window.childNodes[3], // wf - window footer 
     
    5657                                'content' : _content, 
    5758                                'focus' : _focus, 
     59                                'icon' : _icon, 
    5860                                'position' : _position, 
    5961                                'size' : _size, 
     
    240242        } 
    241243 
     244        function _icon(_pIcon) 
     245        { 
     246                if ( typeof _pIcon == 'string' ) 
     247                        this.ic.style.backgroundImage = 'url(' + _pIcon + ')'; 
     248        } 
     249 
    242250        function _position(pX, pY) 
    243251        { 
  • trunk/instant_messenger/setup/phpgw_pt-br.lang

    r305 r311  
    44add new contact instant_messenger       pt-br   Adicionar Novo Contato 
    55add user        instant_messenger       pt-br   Adicionar Usuário 
     6allow   instant_messenger       pt-br   Adicionar 
    67Added information!      instant_messenger       pt-br   Informações Adicionadas! 
    78Authorization   instant_messenger       pt-br   Autorização 
     9available       instant_messenger       pt-br   Conectado 
    810away    instant_messenger       pt-br   Ausente 
    911Birthday        instant_messenger       pt-br   Aniversário 
     
    1921Delete  instant_messenger       pt-br   Remover 
    2022Description     instant_messenger       pt-br   Descrição 
     23dnd     instant_messenger       pt-br   Desconectado 
     24deny    instant_messenger       pt-br   Negar 
    2125Error in the message!   instant_messenger       pt-br   Erro na mensagem! 
    2226E-mail  instant_messenger       pt-br   E-mail 
     
    3236List of Contacts        instant_messenger       pt-br   Lista de Contatos 
    3337Loading...      instant_messenger       pt-br   Carregando... 
     38member of organization  instant_messenger       pt-br   Usuários da Organização 
    3439Maximize/Restore        instant_messenger       pt-br   Maximizar/Restaurar Janela 
    3540Minimize        instant_messenger       pt-br   Minimizar Janela 
     
    7479Update  instant_messenger       pt-br   Atualizar 
    7580Username        instant_messenger       pt-br   Username 
     81unavailable     instant_messenger       pt-br   Não Perturbe 
    7682Vcard   instant_messenger       pt-br   Vcard 
    7783You desire to register in service IM?   instant_messenger       pt-br   Você deseja registrar no serviço IM? 
  • trunk/instant_messenger/templates/default/css/window.css

    r305 r311  
    2121} 
    2222 
     23#instant_messenger_content .icon 
     24{ 
     25        position:absolute !important; 
     26        height: 15px; 
     27        width: 15px; 
     28} 
     29 
    2330#instant_messenger_content .titulo 
    2431{ 
     
    2734        font: 8pt Verdana, Arial, Helvetica, sans-serif; 
    2835        height: 20px; 
    29         margin: 0px 0px; 
    30         padding: 0px 0px 0px 5px; 
     36        line-height: 1.5em; 
     37        margin: 0 0; 
    3138        overflow: hidden; 
     39        padding: 0 0 0 5px; 
     40} 
     41 
     42#instant_messenger_content .titulo span 
     43{ 
     44        float:left; 
     45        margin-left: 17px; 
    3246} 
    3347 
  • trunk/instant_messenger/xsl/contacts.xsl

    r305 r311  
    1515                                <xsl:choose> 
    1616                                        <xsl:when test="not(group = preceding-sibling::item/group)"> 
    17                                                 <img id="group_{group[current()]}" src="{$path}templates/default/images/group_open.gif" onclick="javascript:im.group_close('{group[current()]}');"/> 
    18                                                 <b><xsl:value-of select="group[current()]" /><br/></b> 
     17                                                <div style="font-weight:bold;padding-left:16px;background:url({$path}templates/default/images/group_open.gif) no-repeat;"> 
     18                                                        <xsl:value-of select="group[current()]" /> 
     19                                                </div> 
    1920                                                <xsl:apply-templates select="." mode="contacts"/> 
    2021                                        </xsl:when> 
  • trunk/instant_messenger/xsl/window.xsl

    r305 r311  
    1212                </b> 
    1313                <div class="titulo"> 
    14                         <span id="{name}__window_title" style="float:left;"></span> 
     14                        <div class="icon"></div> 
     15                        <span id="{name}__window_title" style=""></span> 
    1516                        <div id="{name}__window_title_buttons" class="buttons"> 
    1617                                <div title="close" class="button_close"></div> 
Note: See TracChangeset for help on using the changeset viewer.