Changeset 305


Ignore:
Timestamp:
06/06/08 13:54:09 (16 years ago)
Author:
niltonneto
Message:

Correçoes

Location:
trunk/instant_messenger
Files:
17 added
528 deleted
34 edited

Legend:

Unmodified
Added
Removed
  • trunk/instant_messenger/inc/Controller.class.php

    r287 r305  
    155155                $obj = new ReflectionClass($class); 
    156156 
    157                 if ( $pRequest['classConstructor'] ) 
     157                if ( $pRequest['classCostructor'] ) 
    158158                { 
    159                         $obj = $obj->newInstance($pRequest['classConstructor']); 
    160                         unset($pRequest['classConstructor']); 
     159                        $obj = $obj->newInstance($pRequest['classCostructor']); 
     160                        unset($pRequest['classCostructor']); 
    161161                } 
    162162                else 
  • trunk/instant_messenger/inc/Jabber.abstract.php

    r287 r305  
    3333 
    3434        private final function _connect( $pUser = false, $pPassword = false, $pConnectionType = false, $pWebjabber = false ) 
    35         {        
     35        { 
    3636                try 
    3737                { 
     
    4848 
    4949                        $this->_socket = $socket; 
    50                          
     50 
    5151                        //stream_socket_enable_crypto($this->_socket, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); 
    52                          
     52 
    5353                        fwrite($socket, "{$USER}@{$SERVER}##{$pPassword}##{$pConnectionType}"); 
    5454 
     
    8080 
    8181        protected function connect($pUser = false, $pPassword = false, $pConnectionType = false, $pWebjabber = false ) 
    82         {  
    83                 try 
    84                 { 
    85                         $_connect = $this->_connect($pUser, $pPassword, $pConnectionType, $pWebjabber ); 
     82        { 
     83                try 
     84                { 
     85                        $_connect = $this->_connect($pUser, $pPassword, $pConnectionType, $pWebjabber); 
    8686 
    8787                        if ( !$_connect ) 
     
    162162 
    163163                        usleep(50000); 
    164                          
     164 
    165165                        fread($this->_socket, 4096); 
    166                          
     166 
    167167                        if ( !$this->_plain() ) 
    168168                                throw new Exception('[starttls] #3 it isn\'t possible carry out the verification. File: ' . __FILE__ . '  ::  ' . __LINE__); 
     
    186186                                throw new Exception('[_plain] #1 it isn\'t possible read the socket. File: ' . __FILE__ . '  ::  ' . __LINE__); 
    187187 
    188                         $xml  = "<username>" . $this->_username . "</username>"; 
    189                         $xml .= "<password>" . $this->_password . "</password>"; 
    190                         $xml .= "<resource>" . $this->_resource . "</resource>"; 
     188                        $xml  = "<username><![CDATA[" . $this->_username . "]]></username>"; 
     189                        $xml .= "<password><![CDATA[" . $this->_password . "]]></password>"; 
     190                        $xml .= "<resource><![CDATA[" . $this->_resource . "]]></resource>"; 
    191191 
    192192                        unset($this->_password); 
  • trunk/instant_messenger/inc/Jabberd2.abstract.php

    r287 r305  
    77class Jabberd2 extends Jabber 
    88{ 
    9         final function connect($pUser = false, $pPassword = false, $pConnectionType = false) 
     9        final function connect($pUser = false, $pPassword = false, $pConnectionType = false, $pWebjabber = false ) 
    1010        { 
    1111                try 
    1212                { 
    1313                        if ( $pUser && $pPassword && $pConnectionType ) 
    14                                 if ( $_connect = parent::connect($pUser, $pPassword, $pConnectionType) ) 
     14                                if ( $_connect = parent::connect($pUser, $pPassword, $pConnectionType, $pWebjabber) ) 
    1515                                        return $_connect; 
    1616 
     
    4848         */ 
    4949 
    50         final function addContacts($pContact) 
    51         { 
    52                 $jid = explode("@",$pContact['email']); 
    53                 $jid = $jid[0]."@".$this->_server; 
    54                 $name = $pContact['name']; 
    55                 $group = $pContact['group']; 
    56  
    57                 if(trim($jid[0]) != trim($this->_user)) 
    58                 { 
    59                         if ( $jid ) 
     50        final function addRoster($pRoster) 
     51        { 
     52                if ( !$this->connected ) 
     53                        return "disconnected"; 
     54 
     55                if ( trim($pRoster['uid']) ) 
     56                { 
     57                        $jid = $pRoster['uid'] . "@" . $this->_server; 
     58 
     59                        $newroster  = "<item jid='" . $jid . "'"; 
     60                        $newroster .= " name='" . $pRoster['name'] . "'"; 
     61                        $newroster .= "><group>" . $pRoster['group'] . "</group></item>"; 
     62 
     63                        if ( $this->iq('set', "addroster_" . time(), NULL, NULL, "jabber:iq:roster", $newroster) ) 
    6064                        { 
    61                                 $newcontact  = "<item jid='".$jid."'"; 
    62                                 $newcontact .= " name='" . $name . "'"; 
    63                                 $newcontact .= "><group>" . $group . "</group></item>"; 
     65                                $this->getContacts(); 
     66                                return true; 
    6467                        } 
    6568                } 
    66                 $addid = "adduser_" . time(); 
    67                 if ( !$this->connected ) 
    68                         echo "disconnected"; 
    69                 else 
    70                 { 
    71                         if ( $this->iq('set', $addid, NULL, NULL, "jabber:iq:roster", $newcontact) ) 
    72                                 $this->getContacts(); 
    73                         echo "OK"; 
    74                 } 
     69                return false; 
     70        } 
     71 
     72        final function addContact($pContact) 
     73        { 
     74                $this->addRoster($pContact); 
     75                $this->subscription($pContact['uid'] . "@" . $this->_server, 'subscribe'); 
    7576        } 
    7677 
     
    8990                        $jid = ( trim($pJid['jid']) == "this" ) ? $this->_user . '@' . $this->_server : $pJid['jid']; 
    9091                        $vcard = (trim($pJid['jid']) == "this") ? 'vCard_user' : 'vCard'; 
    91                          
     92 
    9293                        if ( !$this->connected ) 
    9394                        { 
     
    120121        final function removeContact($pContact) 
    121122        { 
    122                 $delid  = 'deluser_' . time(); 
    123123                if ( !$this->isConnected() ) 
    124124                        return "disconnected"; 
    125                          
    126                 if ( $this->iq('set',$delid,NULL,NULL,"jabber:iq:roster","<item jid='".$pContact['jid']."' subscription='remove'/>") ) 
    127                         if ( $this->subscription($pContact['jid'],"unsubscribed") ) 
    128                                 echo "OK"; 
     125 
     126                if ( $this->iq('set', 'delroster_' . time(), NULL, NULL, 'jabber:iq:roster',"<item jid='".$pContact['jid']."' subscription='remove'/>") ) 
     127                { 
     128                        $this->getContacts(); 
     129                        return true; 
     130                } 
     131                return false; 
     132        } 
     133 
     134        function allowContact($pRoster) 
     135        { 
     136                $this->addRoster($pRoster); 
     137                $jid = $pRoster['uid'] . "@" . $this->_server; 
     138                $this->subscription($jid, 'subscribed'); 
     139                $this->subscription($jid, 'subscribe'); 
    129140        } 
    130141 
     
    141152                        return true; 
    142153                } 
    143         } 
    144  
    145         final function compression() 
    146         { 
    147                 $compress = "<compress xmlns='http://jabber.org/protocol/compress'><method>zlib</method></compress>";    
    148                 $this->writeSocket($compress); 
    149154        } 
    150155 
     
    166171        } 
    167172 
    168         final function get_last_access_user($pUser) 
    169         { 
    170                 $id = "last_time_user"; 
    171                 $jid = ( trim($pUser['jid']) == "this" ) ? $this->_user . '@' . $this->_server : $pUser['jid']; 
    172                 $this->iq('get', $id, $jid, NULL, "jabber:iq:last"); 
    173         } 
    174  
    175173        final function setStatus() 
    176174        { 
    177175                $this->setPresence(array("type" => "unavailable")); 
    178                 $this->setPresence(array("type" => "available"));        
     176                $this->setPresence(array("type" => "available")); 
    179177        } 
    180178 
  • trunk/instant_messenger/inc/Socket.abstract.php

    r287 r305  
    5252                set_magic_quotes_runtime(0); 
    5353                $return = @fread($pSocket, $pLength); 
     54                set_magic_quotes_runtime(get_magic_quotes_gpc()); 
    5455 
    55                 set_magic_quotes_runtime(get_magic_quotes_gpc()); 
    5656 
    5757                if ( $php_errormsg ) 
  • trunk/instant_messenger/inc/class.Ujabber.inc.php

    r287 r305  
    11<?php 
    2  
     2#error_reporting(E_ALL); 
    33require_once 'Jabberd2.abstract.php'; 
    44 
    55class Ujabber extends Jabberd2 
    66{ 
    7         private $set_presence; 
    8          
    97        public final function __construct($pConnectionType = 'write') 
    10         {        
    11                 session_start(); 
     8        { 
     9                /*session_start(); 
     10 
    1211                $this->_user     = $_SESSION['phpgw_info']['instant_messenger']['user']; 
     12                //$this->_user     = 'niltonneto';//$_SESSION['phpgw_info']['instant_messenger']['user']; 
     13                //$this->_pass     = 'nine59ever';//$_SESSION['phpgw_info']['instant_messenger']['passwd']; 
     14                //$this->_pass     = 'senha';//$_SESSION['phpgw_info']['instant_messenger']['passwd']; 
    1315                $this->_pass     = $_SESSION['phpgw_info']['instant_messenger']['passwd']; 
    1416                $this->_server   = $_SESSION['phpgw_info']['instant_messenger']['name_jabber']; 
    15                 $this->_port     = $_SESSION['phpgw_info']['instant_messenger']['port_jabber']; 
     17                $this->_port     = '8883';//$_SESSION['phpgw_info']['instant_messenger']['port_jabber']; 
    1618                $this->_resource = $_SESSION['phpgw_info']['instant_messenger']['resource_jabber']; 
    17                 $webjabber       = $_SESSION['phpgw_info']['instant_messenger']['webjabber']; 
    18                 session_write_close(); 
     19                //$webjabber       = 'im.pr.gov.br';//$_SESSION['phpgw_info']['instant_messenger']['webjabber']; 
     20                $webjabber       = '10.15.22.236';//$_SESSION['phpgw_info']['instant_messenger']['webjabber']; 
    1921 
    20                 if ( $this->connect($this->_user . '@' . $this->_server . '/' . $this->_resource . ':' . $this->_port, $this->_pass, $pConnectionType, $webjabber) ) 
    21                         $this->connected = true; 
    22                 else 
     22                session_write_close();*/ 
     23 
     24                try 
     25                { 
     26                        if ( !file_exists(dirname(__FILE__) . '/../instant_messenger.define.php') ) 
     27                                throw new Exception(__CLASS__ . '[ ERROR #1 ] : Not found configuration file'); 
     28 
     29                        require_once dirname(__FILE__) . '/../instant_messenger.define.php'; 
     30 
     31                        if ( !(defined('JABBER_URL') && defined('JABBER_RESOURCE')) ) 
     32                                throw new Exception(__CLASS__ . '[ ERROR #2 ] : Jabber server is not cofigured'); 
     33 
     34                        if ( !(defined('WEBJABBER_URL') && defined('WEBJABBER_PORT')) ) 
     35                                throw new Exception(__CLASS__ . '[ ERROR #3 ] : Webabber server is not cofigured'); 
     36 
     37                        $this->_server = constant('JABBER_URL'); 
     38                        $this->_resource = constant('JABBER_RESOURCE'); 
     39 
     40                        $this->_port = constant('WEBJABBER_PORT'); 
     41 
     42                        session_start(); 
     43                        $this->_user = $_SESSION['phpgw_info']['instant_messenger']['user']; 
     44                        $this->_pass = $_SESSION['phpgw_info']['instant_messenger']['passwd']; 
     45                        session_write_close(); 
     46 
     47                        $access_string = $this->_user . '@' . $this->_server . '/' . $this->_resource . ':' . $this->_port; 
     48 
    2349                        $this->connected = false; 
     50                        if ( $this->connect($access_string, $this->_pass, $pConnectionType, constant('WEBJABBER_URL')) ) 
     51                                $this->connected = true; 
     52                } 
     53                catch(Exception $e) 
     54                { 
     55                        echo $e->getMessage(); 
     56                } 
    2457        } 
    2558 
     
    3063                flush(); 
    3164        } 
    32          
     65 
    3366        public final function isConnected() 
    3467        { 
     
    4073                if ( !$this->isConnected() ) 
    4174                        return "disconnected"; 
    42  
    43                 $this->get_last_access_user(array("jid" => "this"));     
    4475 
    4576                if ( strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') ) 
     
    5687 
    5788                        $init = time(); 
     89                        $buffer = ''; 
    5890 
    5991                        while ( ( connection_aborted() === 0 ) && time() - $init < 50 ) 
    6092                        { 
    61                                 if( isset($xml) )        
    62                                         unset($xml); 
    63                          
    6493                                # read from server and write in the client 
    6594                                $xml = $this->readSocket(); 
     95                                //var_dump($xml); 
     96                                if ( strlen($xml) && $xml != ' ' ) 
     97                                { 
     98                                        if ( $xml[strlen($xml) - 1 ] != '>' ) 
     99                                        { 
     100                                                $buffer .= $xml; 
     101                                                $xml = ''; 
     102                                        } 
     103                                        else 
     104                                        { 
     105                                                $xml = $buffer . $xml; 
     106                                                $buffer = ''; 
     107                                                //var_dump($xml); 
     108                                                //strlen($xml); 
     109                                                //exit; 
     110                                        } 
     111                                } 
    66112                                $xml = ( strlen($xml) ) ? $xml : ' '; 
    67                                 //$xml = ( strlen($xml) ) ? $xml : '_##_'; 
    68113                                printf("%s", $xml); 
    69114                                ob_flush(); 
     
    85130                $pSendMessage['body'] = preg_replace($patterns, $replace, $pSendMessage['body']); 
    86131 
    87                 $_emotions  = '/<img[^>]*emotion="(\S+)?"[^>]*>/';  
     132                $_emotions  = '/<img emotion="(\S+)?"[^>]+>/'; 
    88133                $_emotions = preg_match_all($_emotions, $pSendMessage['body'], $emotions); 
    89134 
     
    134179 
    135180                        //retirar a linha abaixo para voltar ao padrão conforme acima 
    136                         $xml .= "<body><![CDATA[" . htmlentities($content['body']) . "]]></body>"; 
     181                        $xml .= "<body><![CDATA[" . $content['body'] . "]]></body>"; 
    137182                        $xml .= $payload; 
    138183                        $xml .= "</message>"; 
  • trunk/instant_messenger/inc/class.db_im.inc.php

    r287 r305  
    1919        function db_im() 
    2020        { 
     21                 
    2122                session_start();                 
    2223                $this->db_name = $_SESSION['phpgw_info']['instant_messenger']['server']['db_name']; 
  • trunk/instant_messenger/inc/class.ldap_im.inc.php

    r287 r305  
    22class ldap_im 
    33{ 
    4         var $ldap_host; 
    5         var $ldap_context; 
    6         var $conn; 
    7         var $user; 
    8         var $jid; 
    9         var $password; 
     4        private $ldap_host; 
     5        private $ldap_context; 
     6        private $conn; 
     7        private $user; 
     8        private $jid; 
     9        private $password; 
    1010         
    1111        function __construct() 
     
    1313                session_start(); 
    1414                $this->ldap_host                = $_SESSION['phpgw_info']['instant_messenger']['server_ldap_jabber']; 
    15                 $this->ldap_context             = $_SESSION['phpgw_info']['instant_messenger']['context_ldap_jabber']; 
     15                $this->ldap_context     = $_SESSION['phpgw_info']['instant_messenger']['context_ldap_jabber']; 
    1616                $this->user                     = $_SESSION['phpgw_info']['instant_messenger']['user_ldap_jabber']; 
    1717                $this->password                 = $_SESSION['phpgw_info']['instant_messenger']['password_ldap_jabber']; 
    18                 $this->jid                      = $_SESSION['phpgw_info']['instant_messenger']['user']; 
    19                 $this->connect_ldap(true); 
     18                $this->jid                              = $_SESSION['phpgw_info']['instant_messenger']['user']; 
     19                $this->connect_ldap(false); 
    2020                session_write_close(); 
    2121        } 
    22                  
    23         function valor() 
    24         { 
    25  
    26                 if ($this->conn)  
    27                 { 
    28                         $filter="ou=*";          
    29                         $justthese = array("ou"); 
    30                         $search = ldap_list($this->conn,$this->ldap_context, $filter, $justthese); 
    31                         return ldap_get_entries($this->conn, $search); 
    32                          
    33                         $entry = ldap_get_entries($this->conn, $search); 
    34                 } 
    35                  
    36         }        
    37                  
     22         
    3823        function __destruct() 
    3924        { 
     
    5439        function get_photo_ldap($pUser,$getPhoto) 
    5540        { 
    56                 $user = ( $pUser == "im__avatar" ) ? $this->jid : $pUser ; 
     41                $user = ( $pUser == "im_avatar" ) ? $this->jid : $pUser ; 
    5742                 
    5843                if ($this->conn)  
     
    9479        function photo_ldap($user) 
    9580        { 
    96                 $uid = ( $user['uid'] == "im__avatar" ) ? $this->jid : $user['uid'] ; 
     81                $uid = ( $user['uid'] == "im_avatar" ) ? $this->jid : $user['uid'] ; 
    9782                return $this->get_photo_ldap($uid,false); 
    9883        } 
     
    176161                 
    177162                foreach($entry as $tmp) 
    178                         if(trim($tmp['ou'][0]) != "") 
     163                        if($tmp['ou'][0] != "") 
    179164                                $result_org .= "<ou>" . $tmp['ou'][0] . "</ou>";   
    180165 
    181166                $result_org .= "</organizations>"; 
    182  
     167                 
    183168                return $result_org; 
    184169        } 
  • trunk/instant_messenger/inc/controller.xml

    r287 r305  
    2020                        <item ref="connector" js="connector" /> 
    2121                        <item ref="xtools" js="xtools" /> 
     22                        <item ref="ldap" js="ldap" /> 
    2223                        <item ref="jabber" js="jabber" /> 
    2324                        <item ref="client" js="client" /> 
     
    2526                        <item ref="dragdrop" js="dragdrop" /> 
    2627                        <item ref="build_win" js="build_win" /> 
     28                        <item ref="windows" js="windows" /> 
    2729                        <item ref="templates" js="templates" /> 
    2830                        <item ref="fcommon" js="fcommon" /> 
    29                         <item ref="menu_action" js="menu_action" /> 
     31                        <item ref="show_hidden" js="show_hidden" /> 
    3032                        <item ref="functions" js="functions" /> 
    3133                        <item ref="images" js="images" /> 
     
    3739                        <item ref="db_im" alias="get_preferences" class="db_im" method="get_preferences" prefix="class." suffix=".inc.php"/> 
    3840                        <item ref="db_im" alias="set_preferences" class="db_im" method="set_preferences" prefix="class." suffix=".inc.php"/> 
    39                         <item ref="ldap_im" alias="list_organizations_ldap" class="ldap_im" method="list_organizations_ldap" prefix="class." suffix=".inc.php"/>                                         
    40                         <item ref="ldap_im" alias="photo_ldap" class="ldap_im" method="photo_ldap" prefix="class." suffix=".inc.php"/>                                   
    41                         <item ref="Ujabber" alias="addContacts" class="Ujabber" method="addContacts" prefix="class." suffix=".inc.php" /> 
     41                        <item ref="ldap_im" alias="list_organizations_ldap" class="ldap_im" method="list_organizations_ldap" prefix="class." suffix=".inc.php"/> 
     42                        <item ref="ldap_im" alias="photo_ldap" class="ldap_im" method="photo_ldap" prefix="class." suffix=".inc.php"/> 
     43                        <item ref="Ujabber" alias="addContact" class="Ujabber" method="addContact" prefix="class." suffix=".inc.php" /> 
    4244                        <item ref="Ujabber" alias="listen" class="Ujabber" method="listen" prefix="class." suffix=".inc.php" /> 
    4345                        <item ref="Ujabber" alias="getContacts" class="Ujabber" method="getContacts" prefix="class." suffix=".inc.php" /> 
    44                         <item ref="Ujabber" alias="get_last_access_user" class="Ujabber" method="get_last_access_user" prefix="class." suffix=".inc.php" /> 
    4546                        <item ref="Ujabber" alias="getVcard" class="Ujabber" method="getVcard" prefix="class." suffix=".inc.php" /> 
    4647                        <item ref="Ujabber" alias="newVcard" class="Ujabber" method="newVcard" prefix="class." suffix=".inc.php" /> 
     
    4849                        <item ref="Ujabber" alias="setPresence" class="Ujabber" method="setPresence" prefix="class." suffix=".inc.php" /> 
    4950                        <item ref="Ujabber" alias="sendMessage" class="Ujabber" method="sendMessage" prefix="class." suffix=".inc.php" /> 
    50                         <item ref="Ujabber" alias="subscription" class="Ujabber" method="subscription" prefix="class." suffix=".inc.php" />                      
     51                        <item ref="Ujabber" alias="subscription" class="Ujabber" method="subscription" prefix="class." suffix=".inc.php" /> 
     52                        <item ref="Ujabber" alias="allowContact" class="Ujabber" method="allowContact" prefix="class." suffix=".inc.php" /> 
    5153                        <item ref="Ujabber" alias="updateContact" class="Ujabber" method="updateContact" prefix="class." suffix=".inc.php" /> 
    5254                        <item ref="Ujabber" alias="setStatus" class="Ujabber" method="setStatus" prefix="class." suffix=".inc.php" /> 
  • trunk/instant_messenger/inc/im_acl.inc.php

    r287 r305  
    33$size_of_acl = sizeof($GLOBALS['phpgw_info']['user']['acl']); 
    44 
    5 # percorre a ACL até o fim ou até encontrar a entrada para o módulo de mensagem instantânea 
     5# percorre a ACL até o fim ou até encontrar a entrada para o módulo de mensagem instantânea 
    66for ( $i = 0; $i < $size_of_acl && $GLOBALS['phpgw_info']['user']['acl'][$i]['appname'] != 'instant_messenger'; $i++ ); 
    77 
    8 # verifica se foi encontrada a permissão para o módulo de mensagem instantânea 
     8# verifica se foi encontrada a permissão para o módulo de mensagem instantânea 
    99if ( $GLOBALS['phpgw_info']['user']['acl'][$i]['appname'] == 'instant_messenger' ) 
    1010{ 
    11         $webserver_url_im = $GLOBALS['phpgw_info']['server']['webserver_url']; 
    12         $webserver_url_im = ( !empty($webserver_url_im) ) ? $webserver_url_im : '/'; 
     11        $webserver_url = $GLOBALS['phpgw_info']['server']['webserver_url']; 
     12        $webserver_url = ( !empty($webserver_url) ) ? $webserver_url : '/'; 
    1313 
    14         if ( strrpos($webserver_url_im, '/') === false || strrpos($webserver_url_im, '/') != (strlen($webserver_url_im) - 1) ) 
    15                 $webserver_url_im .= '/'; 
     14        if ( strrpos($webserver_url, '/') === false || strrpos($webserver_url, '/') != (strlen($webserver_url) - 1) ) 
     15                $webserver_url .= '/'; 
    1616 
    17         $webserver_url_im = $webserver_url_im . 'instant_messenger/'; 
     17        $webserver_url = $webserver_url . 'instant_messenger/'; 
    1818 
    1919        require_once PHPGW_SERVER_ROOT . '/instant_messenger/inc/im_sessions.inc.php'; 
    20         require_once PHPGW_SERVER_ROOT . '/instant_messenger/inc/load_lang.php'; 
     20        //require_once PHPGW_SERVER_ROOT . '/instant_messenger/inc/load_lang.php'; 
    2121 
    2222        $js = array( 
    2323                'connector', 
     24                'xtools', 
     25                'windows', 
    2426                'jabber', 
    25                 'xtools', 
    2627                'client', 
    27                 'images', 
     28                /*'images', 
    2829                'dragdrop', 
    29                 'build_win', 
    30                 'templates', 
    31                 'fcommon', 
    32                 'menu_action', 
     30                'templates',*/ 
     31                #'fcommon', 
     32                /*'menu_action', 
    3333                'functions', 
    3434                'images', 
    3535                'cookies_im', 
    36                 'load', 
     36                'load',*/ 
    3737        ); 
    3838 
    39         print '<script type="text/javascript">var path_im = "'.$webserver_url_im.'";</script>'; 
     39        print '<script type="text/javascript">var path_im = "'.$webserver_url.'";</script>'; 
    4040 
     41        #require_once dirname(__FILE__) . '/Controller.class.php'; 
    4142 
    42         require_once dirname(__FILE__) . '/Controller.class.php'; 
     43        #$controller = new Controller; 
     44        #$script = ''; 
     45        #foreach ( $js as $key => $val ) 
     46        #{ 
     47        #       $val = array('act' => 'j.' . $val); 
     48        #       $script .= $controller->exec($val); 
     49        #} 
    4350 
    44         $controller = new Controller; 
    45         $script = ''; 
    46         foreach ( $js as $key => $val ) 
    47         { 
    48                 $val = array('act' => 'j.' . $val); 
    49                 $script .= $controller->exec($val); 
    50         } 
     51        //printf("<script type=\"text/javascript\">%s</script>", $script); 
    5152 
    52         printf("<script type=\"text/javascript\">%s</script>", $script); 
     53        print '<link rel="stylesheet" type="text/css" href="' . $webserver_url . 'templates/default/css/window.css">'; 
     54        print '<link rel="stylesheet" type="text/css" href="' . $webserver_url . 'templates/default/css/chat.css">'; 
     55        print '<link rel="stylesheet" type="text/css" href="' . $webserver_url . 'templates/default/css/common.css">'; 
    5356 
    54         print '<link rel="stylesheet" type="text/css" href="' . $webserver_url_im . 'templates/default/css/window.css">'; 
    55         print '<link rel="stylesheet" type="text/css" href="' . $webserver_url_im . 'templates/default/css/chat.css">'; 
    56         print '<link rel="stylesheet" type="text/css" href="' . $webserver_url_im . 'templates/default/css/common.css">'; 
    57  
    58         # trecho de código javascript utilizado para 
    59         # controle de possí­vel erro no load do script 
    60         # feito acima e está sendo inserido via PHP 
    61         # pois é um complemento do procedimento acima 
    62         $init_client  = '<script type="text/javascript">'; 
    63         $init_client .= '       function im_init(pTimes)'; 
    64         $init_client .= '       {'; 
    65         $init_client .= '               if ( !pTimes )'; 
    66         $init_client .= '                       pTimes = 0;'; 
    67         $init_client .= '               if ( pTimes == 5 )'; 
    68         $init_client .= '                       return false;'; 
    69         $init_client .= '               if ( window.client )'; 
    70         $init_client .= '                       client();'; 
    71         $init_client .= '               else'; 
    72         $init_client .= '                       setTimeout("im_init("+(++pTimes)+")", (pTimes + 1) * 2000);'; 
    73         $init_client .= '       }'; 
    74         $init_client .= '       im_init();'; 
    75         $init_client .= '</script>'; 
    76         printf("%s", $init_client); 
     57        # trecho de código javascript utilizado para 
     58        # controle de possível erro no load do script 
     59        # feito acima e está sendo inserido via PHP 
     60        # pois é um complemento do procedimento acima 
     61        #$init_client  = '<script type="text/javascript">'; 
     62        #$init_client .= '      function im_init(pTimes)'; 
     63        #$init_client .= '      {'; 
     64        #$init_client .= '              if ( !pTimes )'; 
     65        #$init_client .= '                      pTimes = 0;'; 
     66        #$init_client .= '              if ( pTimes == 5 )'; 
     67        #$init_client .= '                      return false;'; 
     68        #$init_client .= '              if ( window.InstantMessengerClient )'; 
     69        #$init_client .= '                      InstantMessengerClient();'; 
     70        #$init_client .= '              else'; 
     71        #$init_client .= '                      setTimeout("im_init("+(++pTimes)+")", (pTimes + 1) * 2000);'; 
     72        #$init_client .= '      }'; 
     73        #$init_client .= '      var bkp_onload = window.onload;'; 
     74        #$init_client .= '      window.onload = function(){if (typeof bkp_onload == "function") bkp_onload();setTimeout("im_init()",10000);};'; 
     75        #$init_client .= '</script>'; 
     76        //printf("%s", $init_client); 
     77        echo '<iframe style="display:none" height="100%" !width="100%" src="'.$webserver_url.'client.php"></iframe>'; 
    7778} 
    7879?> 
  • trunk/instant_messenger/inc/im_sessions.inc.php

    r287 r305  
    11<?php 
    2          
     2 
    33                $_SESSION['phpgw_info']['instant_messenger']['user']             = $GLOBALS['phpgw_info']['user']['account_lid']; 
    4                 $_SESSION['phpgw_info']['instant_messenger']['user_id']          = $GLOBALS['phpgw_info']['user']['account_id'];                 
     4                $_SESSION['phpgw_info']['instant_messenger']['user_id']                 = $GLOBALS['phpgw_info']['user']['account_id'];                 
    55                $_SESSION['phpgw_info']['instant_messenger']['passwd']           = $GLOBALS['phpgw_info']['user']['passwd']; 
    6                 $_SESSION['phpgw_info']['instant_messenger']['name_jabber']      = $GLOBALS['phpgw_info']['server']['name_jabber']; 
    7                 $_SESSION['phpgw_info']['instant_messenger']['port_jabber']      = $GLOBALS['phpgw_info']['server']['port_jabber']; 
    8                 $_SESSION['phpgw_info']['instant_messenger']['resource_jabber']  = $GLOBALS['phpgw_info']['server']['resource_jabber']; 
     6                #$_SESSION['phpgw_info']['instant_messenger']['name_jabber']      = $GLOBALS['phpgw_info']['server']['name_jabber']; 
     7                #$_SESSION['phpgw_info']['instant_messenger']['port_jabber']      = $GLOBALS['phpgw_info']['server']['port_jabber']; 
     8                #$_SESSION['phpgw_info']['instant_messenger']['resource_jabber']  = $GLOBALS['phpgw_info']['server']['resource_jabber']; 
     9                #$_SESSION['phpgw_info']['instant_messenger']['tls_jabber']      = $GLOBALS['phpgw_info']['server']['tls_jabber']; 
    910                 
    10                 $_SESSION['phpgw_info']['instant_messenger']['server_ldap_jabber']      = $GLOBALS['phpgw_info']['server']['server_ldap_jabber']; 
    11                 $_SESSION['phpgw_info']['instant_messenger']['context_ldap_jabber']     = $GLOBALS['phpgw_info']['server']['context_ldap_jabber']; 
    12                 $_SESSION['phpgw_info']['instant_messenger']['user_ldap_jabber']        = $GLOBALS['phpgw_info']['server']['user_ldap_jabber']; 
    13                 $_SESSION['phpgw_info']['instant_messenger']['password_ldap_jabber']    = $GLOBALS['phpgw_info']['server']['password_ldap_jabber']; 
    14                 $_SESSION['phpgw_info']['instant_messenger']['webjabber']               = $GLOBALS['phpgw_info']['server']['webjabber'];                 
     11                $_SESSION['phpgw_info']['instant_messenger']['server_ldap_jabber']   = $GLOBALS['phpgw_info']['server']['server_ldap_jabber']; 
     12                $_SESSION['phpgw_info']['instant_messenger']['context_ldap_jabber']  = $GLOBALS['phpgw_info']['server']['context_ldap_jabber']; 
     13                $_SESSION['phpgw_info']['instant_messenger']['user_ldap_jabber']     = $GLOBALS['phpgw_info']['server']['user_ldap_jabber']; 
     14                $_SESSION['phpgw_info']['instant_messenger']['password_ldap_jabber'] = $GLOBALS['phpgw_info']['server']['password_ldap_jabber']; 
     15                $_SESSION['phpgw_info']['instant_messenger']['webjabber']                        = $GLOBALS['phpgw_info']['server']['wejabber'];                 
    1516                 
    1617                $_SESSION['phpgw_info']['instant_messenger']['server']['db_name'] = $GLOBALS['phpgw_info']['server']['db_name']; 
     
    2021                $_SESSION['phpgw_info']['instant_messenger']['server']['db_pass'] = $GLOBALS['phpgw_info']['server']['db_pass']; 
    2122                $_SESSION['phpgw_info']['instant_messenger']['server']['db_type'] = $GLOBALS['phpgw_info']['server']['db_type']; 
    22                  
     23 
    2324?> 
  • trunk/instant_messenger/inc/load_lang.php

    r287 r305  
    1212        } 
    1313 
    14 $script  = '<script>'; 
    15 $script .= 'var lang_im = [];'; 
     14$script  = '<script>function imGetLang(pKey){'; 
     15$script .= 'var lang = [];'; 
    1616 
    1717foreach ( $LANG_IM as $key => $value ) 
    18    $script .= "lang_im['" . strtolower(addslashes($key)) . "'] = '" . addslashes($value) . "';"; 
     18   $script .= "lang['" . strtolower(addslashes($key)) . "'] = '" . addslashes($value) . "';"; 
    1919 
    20 $script .= '</script>'; 
     20$script .= "return lang[pKey.toLowerCase()] || '* ' + pKey;}</script>"; 
    2121 
    2222echo $script; 
  • trunk/instant_messenger/inc/teste.php

    r287 r305  
    11<?php 
    22 
    3 require_once "class.Jabber.inc.php"; 
     3require_once 'class.Ujabber.inc.php'; 
    44 
    5         $a = new Jabber(); 
     5$a = new Ujabber; 
    66 
     7exit; 
     8$fp = stream_socket_client("tcp://im.pr.gov.br:8800", $errno, $errstr, 30); 
     9if (!$fp) { 
     10  die("Unable to connect: $errstr ($errno)"); 
     11} 
     12 
     13$xml  = "<?xml version='1.0' ?>"; 
     14$xml .= "<stream:stream to='im.pr.gov.br' xmlns='jabber:client' "; 
     15$xml .= "xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>"; 
     16fwrite($fp, $xml); 
     17usleep(50000); 
     18echo fread($fp, 4096); 
     19echo "\n\n"; 
     20 
     21$xml = "<starttls xmlns='urn:ietf:params:xml:ns:xmpp-tls'/>"; 
     22fwrite($fp, $xml); 
     23usleep(50000); 
     24echo fread($fp, 4096); 
     25echo "\n\n"; 
     26 
     27stream_socket_enable_crypto($fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT); 
     28 
     29$xml  = "<?xml version='1.0' encoding='UTF-8'?>"; 
     30$xml .= "<stream:stream to='im.pr.gov.br' xmlns='jabber:client' xmlns:stream='http://etherx.jabber.org/streams' version='1.0'>"; 
     31fwrite($fp, $xml); 
     32usleep(50000); 
     33echo fread($fp, 4096); 
     34echo "\n\n"; 
     35 
     36usleep(50000); 
     37echo fread($fp, 4096); 
     38echo "\n\n"; 
     39 
     40$xml  = "<iq type='set' id='conn'><query xmlns='jabber:iq:auth'>"; 
     41$xml .= "<username>teste9</username>"; 
     42$xml .= "<password>teste99</password>"; 
     43$xml .= "<resource>IM</resource>"; 
     44$xml .= "</query></iq>"; 
     45fwrite($fp, $xml); 
     46usleep(50000); 
     47echo fread($fp, 4096); 
     48echo "\n\n"; 
     49 
     50stream_set_blocking ($fp, false); 
     51$xml  = "<presence xmlns='jabber:client' from='alexandrecorreia@im.pr.gov.br' />"; 
     52fwrite($fp, $xml); 
     53usleep(50000); 
     54//echo fread($fp, 4096); 
     55//echo "\n\n"; 
     56 
     57//while(1)  
     58//{ 
     59//      echo fread($fp, 4096); 
     60//      echo "\n\n"; 
     61//      sleep(1); 
     62//} 
     63 
     64echo "=================================================\n\n"; 
     65 
     66$time = time(); 
     67                do 
     68                { 
     69                        $line = NULL; 
     70                        $line = fread($fp, 4096); 
     71 
     72                        if ( !empty($line) ) 
     73                                var_dump($line); 
     74                } 
     75                while ( time() - $time < 20 ); 
     76fclose($fp); 
     77 
     78 
     79        exit(0); 
    780        session_start(); 
    8          
    9         $a->username    = $_SESSION['phpgw_info']['instant_messenger']['user']; 
    10         $a->password    = $_SESSION['phpgw_info']['instant_messenger']['passwd']; 
    11         $a->server      = $_SESSION['phpgw_info']['instant_messenger']['name_jabber']; 
    12         $a->port        = "5222"; 
    13         $a->resource    = "webb"; 
    14          
    15         session_write_close(); 
    16          
    17         echo "Conectando no Jabber"; 
    18  
    19         $a->Connect(); 
    20         $a->SendAuth(); 
    21  
    22         $a->RosterUpdateXML(); 
    2381 
    2482        echo "<pre>"; 
    25         print_r($a->roster); 
     83        print_r($_SESSION['debug']); 
    2684        echo "</pre>"; 
    2785 
    28         $a->Disconnect(); 
     86        session_write_close(); 
     87 
    2988 
    3089?> 
  • trunk/instant_messenger/js/client.js

    r287 r305  
    1 var conn_im = new IMConnector; 
    2 var disconnected = false; 
    3 var validate_data = false; 
    4 var buffer_im = ''; 
    5 var xtools_im = null; 
    6 var count_im = 0; 
    7 var activate_timeOut = ''; 
     1(function() 
     2{ 
     3        function _config(pObj, pEvent, pHandler) 
     4        { 
     5                if ( typeof pObj == 'object' ) 
     6                { 
     7                        if ( pEvent.substring(0, 2) == 'on' ) 
     8                                pEvent = pEvent.substring(2, pEvent.length); 
    89 
    9 function clientConnectionIm() 
    10 { 
    11         if( count_im < 2 ) 
     10                        if ( pObj.addEventListener ) 
     11                                pObj.addEventListener(pEvent, pHandler, false); 
     12                        else if ( pObj.attachEvent ) 
     13                                pObj.attachEvent('on' + pEvent, pHandler); 
     14                } 
     15        } 
     16 
     17        if ( !(top.document.getElementById('instant_messenger_content')) ) 
    1218        { 
    13                 if( buffer_im.length > 0 ) 
    14                         activate_timeOut = setTimeout('clientConnectionIm()', 5000); 
    15          
    16                 count_im++; 
     19                var _im_content = top.document.createElement('div'); 
     20                _im_content.setAttribute('id', 'instant_messenger_content'); 
     21                _im_content = top.document.body.appendChild(_im_content); 
    1722        } 
    18         else 
     23 
     24        var buffer = ''; 
     25        var _disconnected = false; 
     26 
     27        var _conn = new IMConnector(path_im); 
     28        var _xtools = new XTools(path_im); 
     29        var _window = new Windows(_xtools, _im_content); 
     30        var _ldap = new InstantMessengerLDAP(_conn, _xtools, _window); 
     31        var _jabber = new Jabber(_conn, _xtools, _window, _ldap); 
     32 
     33        // XSL preload 
     34        var _xsl_preload = ['chat.xsl','layer.xsl','contacts']; 
     35        var _xsl_preload_legth = _xsl_preload.length; 
     36        for ( var i = 0; i < _xsl_preload_legth; i++ ) 
     37                _xtools.load(_xsl_preload[i]); 
     38 
     39        var local; 
     40        if ( (local = top.document.getElementById('user_info')) ) 
    1941        { 
    20                 count_im = 0; 
    21                 buffer_im = 0; 
    22                 clientDisconnectIm(); 
    23                 clearTimeout(activate_timeOut); 
    24                 killConnIm(); 
     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; 
     46 
     47                local.insertBefore(_status, local.firstChild); 
     48 
     49                _config(_status, 'onclick', _contacts); 
     50 
     51                var _menu; 
     52                _menu = top.document.createElement('span'); 
     53                _menu.setAttribute('id','fast_menu_im'); 
     54                local.insertBefore(_menu, local.firstChild); 
     55 
     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"/>'; 
    2565        } 
    26 } 
    2766 
    28 function clientDisconnectIm() 
    29 { 
    30         if( xtools_im == null ) 
    31                  xtools_im = new XTools; 
     67        function _stream(data) 
     68        { 
     69                data = data.replace(/^ | $/, ''); 
    3270 
    33         disconnected = true; 
    34         var XmlDoc = "<disconnected>" + 
    35                         "<path>" + path_im + "</path>" + 
    36                      "</disconnected>"; 
    37          
    38         im_window.load('__contacts_im_','instant_messenger_content','<title>.::Expresso Messenger::.</title>','window.xsl','190',true,true,false); 
    39         im_window.elementC('__contacts_im_').innerHTML  = xtools_im.parse(XmlDoc,'disconnected.xsl'); 
    40         func.byId('im_status_src').src = im_unavailable.src; 
    41         im.status = 'type=unavailable'; 
    42         im.statusFlag = 'unavailable';                                                                                                   
    43          
    44         function handler_presence_disconnected() 
    45         { 
    46         } 
    47         conn_im.go('$this.Ujabber.setPresence', {'request' : handler_presence_disconnected }, im.status); 
    48 } 
     71                if ( !(data.length) ) 
     72                        return false; 
    4973 
    50 function killConnIm() 
    51 { 
    52         var i; 
    53         disconnected = true; 
    54          
    55         for ( i in conn_im.__HTTP__ ) 
    56                 conn_im.__HTTP__[i].abort(); 
    57 } 
    58  
    59 function client() 
    60 { 
    61         if( jabber == null ) 
    62                 var jabber = new Jabber; 
    63          
    64         if( xtools_im == null ) 
    65                 xtools_im = new XTools; 
    66  
    67         function request(data) 
    68         { 
    69                 if ( !disconnected ) 
     74                if ( data.indexOf('disconnected') != -1 || data.indexOf('</stream:stream>') != -1 ) 
    7075                { 
    71                         conn_im.go('$this.Ujabber.listen', {'stream':stream, 'request':request}, 'classConstructor=read'); 
     76                        _disconnected = true; 
     77                        //alert('disconnected'); 
    7278                } 
    7379                else 
    7480                { 
    75                         clientDisconnectIm(); 
    76                         return false; 
     81                        if ( data.lastIndexOf('>') != data.length - 1) 
     82                                buffer += data + ' '; 
     83                        else 
     84                        { 
     85                                if ( buffer.length ) 
     86                                { 
     87                                        data = buffer + data; 
     88                                        buffer = ''; 
     89                                } 
     90 
     91                                // com xmlns ocorre problemas durante o parse entre 
     92                                // xml e xsl e por esse motivo está sendo retirado 
     93                                data = data.replace(/ xmlns='.*?'/g, ''); 
     94                                data = '<handler>' + data + '</handler>'; 
     95 
     96                                var _xml = _xtools.convert(data); 
     97 
     98                                if ( _xml ) 
     99                                { 
     100                                        var _node = _xml.documentElement.firstChild; 
     101 
     102                                        while ( _node ) 
     103                                        { 
     104                                                if ( _node.nodeType == 1 ) 
     105                                                        _jabber.action(_node); 
     106                                                //else 
     107                                                //      alert('name : ' + _node.nodeName + "\n\nhas children:" + _node.hasChildNodes() + "\nvalue\n\n" + _node.nodeValue); 
     108 
     109                                                _node = _node.nextSibling; 
     110                                        } 
     111                                } 
     112                        } 
    77113                } 
    78114        } 
    79115 
    80         function stream(data) 
     116        function _request() 
    81117        { 
    82                 function trim(pData) 
    83                 { 
    84                         return pData.replace(/^ +| +$/g, ''); 
    85                 } 
    86  
    87                 function retrim(pData) 
    88                 { 
    89                         return pData.replace(/(_##_)+\b/g, ''); 
    90                 } 
    91                  
    92                 data = trim(data); 
    93                  
    94                 if ( data == 'disconnected' || data == '</stream:stream>' ) 
    95                 { 
    96                         clientDisconnectIm(); 
    97                         return false; 
    98                 } 
    99                 else if ( data.lastIndexOf('>') == data.length - 1 && data.length > 0 ) 
    100                 { 
    101                         if ( buffer_im.length ) 
    102                         { 
    103                                 data = buffer_im + data; 
    104                                 buffer_im = ""; 
    105                         } 
    106  
    107                         // com xmlns ocorre problemas durante o parse entre 
    108                         // xml e xsl e por esse motivo está sendo retirado 
    109                         data = '<handler>' + data.replace(/ xmlns='.*?'/g, '') + '</handler>'; 
    110  
    111                         if ( window.ActiveXObject ) 
    112                         { 
    113                                 var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
    114                                 xmlDoc.async = "false"; 
    115                                 xmlDoc.loadXML(data); 
    116                         } 
    117                         else 
    118                         { 
    119                                 var parser = new DOMParser(); 
    120                                 var xmlDoc = parser.parseFromString(data, "text/xml"); 
    121                         } 
    122  
    123                         var node = xmlDoc.documentElement.firstChild; 
    124                          
    125                         while ( node ) 
    126                         { 
    127                                 try 
    128                                 { 
    129                                         jabber.doIt(node.nodeName, node); 
    130                                         node = node.nextSibling; 
    131                                 } 
    132                                 catch(e) 
    133                                 { 
    134                                         alert('erro : ' + e + "\n\n" + e.description); 
    135                                         node = node.nextSibling; 
    136                                 } 
    137                         } 
    138                 } 
    139                 else 
    140                 { 
    141                         data = data.replace(/^ +| +$/g, ''); 
    142                         buffer_im +=  data + " "; 
    143                 } 
     118                if ( !_disconnected ) 
     119                        return _conn.go( 
     120                                '$this.Ujabber.listen', 
     121                                {'stream':_stream, 'request':_wait}, 
     122                                'classCostructor=read' 
     123                        ); 
    144124        } 
    145125 
    146         function contacts(data) 
     126        function _wait() 
    147127        { 
    148                 setTimeout('clientConnectionIm()', 3000); 
     128                setTimeout(_request, 3000); 
    149129        } 
    150         request(); 
    151         setTimeout("conn_im.go('$this.Ujabber.getContacts', {'request':"+contacts+"})", 3000); 
     130 
     131        function _reconnect() 
     132        { 
     133                _disconnected = false; 
     134                _request(); 
     135        } 
     136 
     137        function _disconnect() 
     138        { 
     139                _disconnected = true; 
     140        } 
     141 
     142        function _contacts() 
     143        { 
     144                var _win = _window.get('contact_list'); 
     145                if ( _win ) 
     146                        if ( _win.wm.style.display != 'none' ) 
     147                                _win.wm.style.display = 'none'; 
     148                        else 
     149                                _win.wm.style.display = 'block'; 
     150                else 
     151                        if ( !_disconnected ) 
     152                                _conn.go('$this.Ujabber.getContacts'); 
     153        } 
     154 
     155        function Client() 
     156        { 
     157                _request(); 
     158                setTimeout('InstantMessengerContacts()', 3000); 
     159        } 
     160 
     161        window.InstantMessengerClient = Client; 
     162        window.InstantMessengerReconnect = _reconnect; 
     163        window.InstantMessengerDisconnect = _disconnect; 
     164        window.InstantMessengerContacts = _contacts; 
    152165} 
    153  
    154 var _bkp_onbeforeunload = window.onbeforeunload; 
    155  
    156 window.onbeforeunload = function() 
    157 { 
    158         if ( typeof _bkp_onbeforeunload == 'function' ) 
    159                 _bkp_onbeforeunload(); 
    160  
    161         killConnIm(); 
    162 }; 
     166)(); 
  • trunk/instant_messenger/js/connector.js

    r280 r305  
    1 function IMConnector() 
     1(function() 
    22{ 
    3         this.__HTTP__ = []; 
    4         this.__THREADS__ = []; 
    5 } 
    6  
    7 IMConnector.prototype = { 
    8         'go' : function() 
    9         { 
    10                 // connection 
    11                 var index = 0; 
    12                 var rtlen = 0; 
    13                 var ie = false; // ie doesn't has stream 
    14                 var __this__ = this; 
    15                 function makeConnection(pThread) 
    16                 { 
    17                         __this__.__HTTP__[pThread] = xhr(); 
    18                 } 
    19                 function setPost(pThread) 
    20                 { 
    21                         __this__.__THREADS__[pThread].__METHOD__ = 'POST'; 
    22                         return true; 
    23                 } 
    24                 // this function set __this__.__THREADS__[?].__TYPE__ to 4 for request or 3 for stream 
    25                 function setStream(pThread) 
    26                 { 
    27                         __this__.__THREADS__[pThread].__TYPE__ = ( !ie ) ? 3 : 4; 
    28                         return true; 
    29                 } 
    30                 function trim(pData) 
    31                 { 
    32                         return pData.replace(/^ +| +$/g, ''); 
    33                 } 
    34                 function verifyUserHandler(pThread, pHandler) 
    35                 { 
    36                         var type_of_handler = typeof pHandler; 
    37                         var i; 
    38                         switch ( type_of_handler ) 
     3        var _THREADS = []; 
     4        var _ie; 
     5 
     6        // xhr = XMLHttpRequest 
     7        function _xhr() 
     8        { 
     9                try 
     10                { 
     11                        return new XMLHttpRequest(); 
     12                } 
     13                catch (_e) 
     14                { 
     15                        _ie = true; 
     16                        try 
     17                        { 
     18                                return new ActiveXObject('Msxml2.XMLHTTP'); 
     19                        } 
     20                        catch (_e1) 
     21                        { 
     22                                try 
     23                                { 
     24                                        return new ActiveXObject('Microsoft.XMLHTTP'); 
     25                                } 
     26                                catch (_e2) 
     27                                { 
     28                                        return false; 
     29                                } 
     30                        } 
     31                } 
     32        } 
     33 
     34        function _HANDLER() 
     35        { 
     36                var _ID = arguments[0]; 
     37 
     38                if ( _ie && _THREADS[_ID]._XHR.readyState != 4 ) 
     39                        return false; 
     40 
     41                switch ( _THREADS[_ID]._XHR.readyState ) 
     42                { 
     43                        case 3 : 
     44                                if ( _THREADS[_ID]._HANDLER.stream ) 
     45                                { 
     46                                        var _data = _THREADS[_ID]._XHR.responseText.substr(_THREADS[_ID]._index).replace(/^ +| +$/g, ''); 
     47                                        //alert(_data); 
     48                                        _THREADS[_ID]._rtlen = _THREADS[_ID]._XHR.responseText.length; 
     49 
     50                                        if ( _THREADS[_ID]._index < _THREADS[_ID]._rtlen && _data.length ) 
     51                                                try 
     52                                                { 
     53                                                        _THREADS[_ID]._HANDLER.stream(_data); 
     54                                                } 
     55                                                catch(_e) 
     56                                                { 
     57                                                        alert("#stream\n\n" + _e + "\n\n" + _e.description); 
     58                                                } 
     59 
     60                                        _THREADS[_ID]._index = _THREADS[_ID]._rtlen; 
     61                                } 
     62                        break; 
     63                        case 4 : 
     64                                switch ( _THREADS[_ID]._XHR.status ) 
     65                                { 
     66                                        case 200: 
     67                                                var _data = ( _THREADS[_ID]._MODE == 'XML' ) ? 
     68                                                        _THREADS[_ID]._XHR.responseXML : 
     69                                                        _THREADS[_ID]._XHR.responseText; 
     70 
     71                                                if ( _ie && _THREADS[_ID]._HANDLER.stream ) 
     72                                                        _THREADS[_ID]._HANDLER.stream(_data); 
     73 
     74                                                var _request = ( _THREADS[_ID]._HANDLER.request ) ? 
     75                                                        _THREADS[_ID]._HANDLER.request : false; 
     76 
     77                                                delete _THREADS[_ID]; 
     78 
     79                                                if ( _request ) 
     80                                                        try 
     81                                                        { 
     82                                                                _request(_data); 
     83                                                        } 
     84                                                        catch(_e) 
     85                                                        { 
     86                                                                alert("#request\n\n" + _e + "\n\n" + _e.description); 
     87                                                        } 
     88 
     89                                        break; // [case : status 200] 
     90                                        case 404: 
     91                                                delete _THREADS[_ID]; 
     92                                                alert('Page Not Found!'); 
     93                                        break; // [case : status 404] 
     94                                        default: 
     95                                                delete _THREADS[_ID]; 
     96                                } 
     97                        break; 
     98                        default : 
     99                } 
     100        } 
     101 
     102        function _execute() 
     103        { 
     104                var _ID = arguments[0]; 
     105                var _ACTION = 'act=' + _ID; 
     106                var _TARGET = this._PATH; 
     107                var _SEND = null; 
     108 
     109                if ( _TARGET != '' && _TARGET.lastIndexOf('/') != (_TARGET.length - 1) ) 
     110                        _TARGET += '/'; 
     111 
     112                _TARGET += ( this._CONTROLLER ) ? 
     113                        this._CONTROLLER  : 'controller.php'; 
     114 
     115                if ( _THREADS[_ID]._METHOD == 'GET' ) 
     116                        _TARGET += '?' + _ACTION; 
     117 
     118                _THREADS[_ID]._XHR.open(_THREADS[_ID]._METHOD, _TARGET, true); 
     119 
     120                if ( _THREADS[_ID]._METHOD == 'POST' ) 
     121                { 
     122                        _THREADS[_ID]._XHR.setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
     123                        _THREADS[_ID]._XHR.setRequestHeader('Cache-Control',  'no-store, no-cache, must-revalidate'); 
     124                        _THREADS[_ID]._XHR.setRequestHeader('Cache-Control', 'post-check=0, pre-check=0'); 
     125                        _THREADS[_ID]._XHR.setRequestHeader('Pragma', 'no-cache'); 
     126                        _SEND = _ACTION + '&' + arguments[1]; 
     127                } 
     128 
     129                _THREADS[_ID]._XHR.onreadystatechange = function(){_HANDLER(_ID);}; 
     130                _THREADS[_ID]._XHR.send(_SEND); 
     131        } 
     132 
     133        function usage() 
     134        { 
     135                return ""+ 
     136                        "Description:\n"+ 
     137                        "\t<obj>.go(string access, [mixed handler[, mixed post]])\n\n"+ 
     138                        "Parameters:\n"+ 
     139                        "\taccess : assinatura de acesso à camada de controle.\n"+ 
     140                        "\thandler : uma função a ser executada no fim da requisição\n"+ 
     141                        "\t\tou um objeto que poderá conter dois índices sendo\n"+ 
     142                        "\t\tque ambos deverão ser uma função que será executada\n"+ 
     143                        "\t\tconforme o status do objeto xhr, sendo que na posição\n"+ 
     144                        "\t\t'stream' será a função a ser executada a cada iteração\n"+ 
     145                        "\t\tdo objeto xhr e na posição 'request' será a função\n"+ 
     146                        "\t\ta ser executada no fim da requisição.\n"+ 
     147                        "\tpost : se especificado deverá ser uma query string ou um\n"+ 
     148                        "\tXML bem formatado.\n\n"; 
     149        } 
     150 
     151        // @PARAM arguments[0] string : 
     152        //              assinatura de acesso à camada de controle 
     153        // 
     154        // @PARAM arguments[1] object : 
     155        //              OBS : neste caso a conexão assumirá que se trata de uma stream 
     156        //              objeto contendo dois duas funções, sendo, 
     157        //              no índice stream deverá conter uma função que será execultada 
     158        //              a cada mudança de status do objeto xhr 
     159        //      or 
     160        // @PARAM arguments[1] function : funcão a ser executada no retorno da 
     161        //              requisição 
     162        //              OBS : neste caso a conexão assumirá que se trata de uma 
     163        //              requisição função que será execultada no final da requisição 
     164        // 
     165        // @PARAM arguments[2] string : 
     166        //              este parâmetro define se a conexão é via GET ou POST 
     167        //              caso o parâmetro não esteja presente a conexão será execultada 
     168        //              via GET, por outro lado, caso ele exista deverá ser uma query 
     169        //              string válida ou um xml bem formatado 
     170        // 
     171        function go() 
     172        { 
     173                var _argv = arguments; 
     174                var _argc = _argv.length; 
     175                var _ID = _argv[0]; 
     176                var _POST; 
     177                if ( _argc < 1 || _argc > 3 ) 
     178                        return {'error' : "#0\n\n" + usage()}; 
     179 
     180                if ( typeof _ID != 'string' ) 
     181                        return {'error' : "#1\n\n" + usage()}; 
     182 
     183                if ( _THREADS[_ID] ) 
     184                        return {'error' : '#2 - there is a equal request running'}; 
     185 
     186                _THREADS[_ID] = { 
     187                        '_HANDLER'      : {}, 
     188                        '_METHOD'       : ( _argv[2] ) ? 'POST' : 'GET',  // [GET | POST] 
     189                        '_MODE'         : null, // [XML | TEXT] 
     190                        '_TYPE'         : null, // [4 for request | 3 for stream] 
     191                        '_XHR'          : null  // [4 for request | 3 for stream] 
     192                }; 
     193 
     194                if ( _argv[2] ) 
     195                        _POST = _argv[2]; 
     196 
     197                if ( _argv[1] ) 
     198                        switch ( typeof _argv[1] ) 
    39199                        { 
    40200                                case 'function' : 
    41                                         return true; 
     201                                        _THREADS[_ID]._HANDLER = {'request' : _argv[1]}; 
    42202                                break; 
    43203                                case 'object' : 
    44                                         for ( i in pHandler ) 
     204                                        for ( var i in _argv[1] ) 
    45205                                                if ( i != 'stream' && i != 'request' ) 
    46                                                         return false; 
     206                                                { 
     207                                                        delete _THREADS[_ID]; 
     208                                                        return {'error' : "#3\n\n" + usage()}; 
     209                                                } 
    47210                                                else if ( i == 'stream' ) 
    48                                                         setStream(pThread); 
    49                                         return true; 
     211                                                { 
     212                                                        _THREADS[_ID]._index = 0; 
     213                                                        _THREADS[_ID]._rtlen = 0; 
     214                                                } 
     215                                                _THREADS[_ID]._HANDLER = _argv[1]; 
     216                                break; 
     217                                case 'string' : 
     218                                        if ( _argc == 2 ) 
     219                                        { 
     220                                                _THREADS[_ID]._METHOD = 'POST'; 
     221                                                _POST = _argv[1]; 
     222                                        } 
    50223                                break; 
    51224                                default : 
    52                                         return false; 
    53                         } 
    54                 } 
    55                 // xhr = XMLHttpRequest 
    56                 function xhr() 
    57                 { 
     225                                        //delete _THREADS[_ID]; 
     226                                        //return {'error' : "#4\n\n" + usage()}; 
     227                        } 
     228 
     229                if ( !(_THREADS[_ID]._XHR = _xhr()) ) 
     230                        return {'error' : "#4 it cannot make a xhr object"}; 
     231 
     232                ( _THREADS[_ID]._METHOD == 'GET' ) ? 
     233                        _execute.call(this, _ID) : _execute.call(this, _ID, _POST); 
     234                return {'success' : "your thread is running and the response "+ 
     235                                                        "will be manipulated by the handler"}; 
     236        } 
     237 
     238        function Connector() 
     239        { 
     240                var _argv = arguments; 
     241                this._PATH = ( _argv.length > 0 ) ? 
     242                        _argv[0] : ''; 
     243                this._CONTROLLER = ( _argv.length == 2 ) ? 
     244                        _argv[1] : false; 
     245        } 
     246 
     247        Connector.prototype.go = go; 
     248        window.IMConnector = Connector; 
     249 
     250        var _unload_event = window.onbeforeunload; 
     251        window.onbeforeunload = function() 
     252        { 
     253                for ( var _ID in _THREADS ) 
     254                { 
     255                        //if ( _THREADS[_ID]._XHR.abort ) 
    58256                        try 
    59257                        { 
    60                                 return new XMLHttpRequest(); 
    61                         } 
    62                         catch (e) 
    63                         { 
    64                                 ie = true; 
    65                                 try 
    66                                 { 
    67                                         return new ActiveXObject('Msxml2.XMLHTTP'); 
    68                                 } 
    69                                 catch (e1) 
    70                                 { 
    71                                         try 
    72                                         { 
    73                                                 return new ActiveXObject('Microsoft.XMLHTTP'); 
    74                                         } 
    75                                         catch (e2) 
    76                                         { 
    77                                                 return null; 
    78                                         } 
    79                                 } 
    80                         } 
    81                 } 
    82  
    83                 function __HANDLER__() 
    84                 { 
    85                         try 
    86                         { 
    87                                 if ( ie && __this__.__HTTP__[arguments[0]].readyState != 4 ) 
    88                                         return false; 
    89  
    90                                 var threadId = arguments[0]; 
    91  
    92                                 if ( !threadId ) 
    93                                         return false; 
    94  
    95                                 if ( __this__.__HTTP__[threadId].readyState == 3 || __this__.__HTTP__[threadId].readyState == 4 ) 
    96                                 { 
    97                                         if ( !ie && __this__.__HTTP__[threadId].readyState == 3 && __this__.__THREADS__[threadId].__HANDLER__.stream ) 
    98                                         { 
    99                                                 var data = trim(__this__.__HTTP__[threadId].responseText.substr(index)); 
    100                                                 rtlen = __this__.__HTTP__[threadId].responseText.length; 
    101                                                 if ( index < rtlen && data.length ) 
    102                                                 { 
    103                                                         __this__.__THREADS__[threadId].__HANDLER__.stream(data); 
    104                                                         index = rtlen; 
    105                                                 } 
    106                                         } 
    107                                         if ( __this__.__THREADS__[threadId].__HANDLER__.request && __this__.__HTTP__[threadId].readyState == 4 ) 
    108                                         { 
    109                                                 switch ( __this__.__HTTP__[threadId].status ) 
    110                                                 { 
    111                                                         case 200: 
    112                                                                 var stream = false; 
    113                                                                 var request = false; 
    114                                                                 var data = ( __this__.__THREADS__[threadId].__MODE__ == 'XML' ) ? 
    115                                                                         __this__.__HTTP__[threadId].responseXML : 
    116                                                                         __this__.__HTTP__[threadId].responseText; 
    117  
    118                                                                 if ( ie && __this__.__THREADS__[threadId].__HANDLER__.stream ) 
    119                                                                         stream = __this__.__THREADS__[threadId].__HANDLER__.stream; 
    120  
    121                                                                 if ( __this__.__THREADS__[threadId].__HANDLER__.request ) 
    122                                                                         request = __this__.__THREADS__[threadId].__HANDLER__.request; 
    123  
    124                                                                 delete __this__.__THREADS__[threadId]; 
    125  
    126                                                                 if ( stream ) 
    127                                                                         stream(data); 
    128  
    129                                                                 if ( request ) 
    130                                                                         request(data); 
    131  
    132                                                                 break; // [case : status 200] 
    133                                                         case 404: 
    134                                                                 alert('Page Not Found!'); 
    135                                                                 break; // [case : status 404] 
    136                                                         default: 
    137                                                 } 
    138                                         } 
    139                                 } 
     258                                if ( _THREADS[_ID]._XHR && _THREADS[_ID]._XHR.abort ) 
     259                                        _THREADS[_ID]._XHR.abort(); 
     260                                delete _THREADS[_ID]; 
    140261                        } 
    141262                        catch(e) 
    142263                        { 
    143                                 //alert("__HANDLER__\n" + threadId + "\n " + e + "\n ErroR: " + e.description); 
    144                                 //delete __this__.__THREADS__[threadId]; 
    145                         } 
    146                 }; 
    147  
    148                 var argc = arguments.length; 
    149                 if ( argc < 2 || argc > 4 ) 
    150                         return {'error':'#0 - invalid params'}; 
    151  
    152                 if ( __this__.__THREADS__[arguments[0]] ) 
    153                         return {'error':'#2 - request is running'}; 
    154  
    155                 __this__.__THREADS__[arguments[0]] = { 
    156                         '__HANDLER__' : arguments[1], 
    157                         '__METHOD__'  : 'GET',  // __METHOD__ = [GET | POST] 
    158                         '__MODE__'    : 'TEXT', // __MODE__ = [XML | TEXT] 
    159                         '__TYPE__'    : 4       // __TYPE__ = [4 for request | 3 for stream] 
    160                 }; 
    161  
    162                 makeConnection(arguments[0]); 
    163  
    164                 if ( !verifyUserHandler(arguments[0], arguments[1]) ) 
    165                 { 
    166                         //delete __this__.__THREADS__[arguments[0]]; 
    167                         return {'error':'#1 - invalid handler'}; 
    168                 } 
    169  
    170                 if ( argc == 3 ) 
    171                         setPost(arguments[0]); 
    172  
    173                 if ( __this__.__HTTP__[arguments[0]] != null ) 
    174                 { 
    175                         try 
    176                         { 
    177                                 var __TARGET__ = path_im + 'controller.php?act=' + arguments[0]; 
    178  
    179                                 var __SEND__ = null; 
    180                                 __this__.__HTTP__[arguments[0]].open(__this__.__THREADS__[arguments[0]].__METHOD__, __TARGET__, true); 
    181                                 if ( __this__.__THREADS__[arguments[0]].__METHOD__ == 'POST' ) 
    182                                 { 
    183                                         __this__.__HTTP__[arguments[0]].setRequestHeader('Content-Type','application/x-www-form-urlencoded'); 
    184                                         __this__.__HTTP__[arguments[0]].setRequestHeader('Cache-Control',  'no-store, no-cache, must-revalidate'); 
    185                                         __this__.__HTTP__[arguments[0]].setRequestHeader('Cache-Control', 'post-check=0, pre-check=0'); 
    186                                         __this__.__HTTP__[arguments[0]].setRequestHeader('Pragma', 'no-cache'); 
    187                                         __SEND__ = 'act=' + arguments[0] + '&' + arguments[2]; 
    188                                 } 
    189                                 var tst = arguments[0]; 
    190                                 __this__.__HTTP__[arguments[0]].onreadystatechange = function(){__HANDLER__(tst);}; 
    191                                 __this__.__HTTP__[arguments[0]].send(__SEND__); 
    192                         } 
    193                         catch(e) 
    194                         { 
    195                                 alert("go\n" + e.description); 
    196                                 return {'error':'#3 - ' + e.description}; 
    197                         } 
    198                 } 
    199         } 
    200 }; 
     264                        } 
     265                } 
     266 
     267                if ( typeof _unload_event == 'function' ) 
     268                        return _unload_event(); 
     269        }; 
     270} 
     271)(); 
  • trunk/instant_messenger/js/dragdrop.js

    r260 r305  
    1 /** 
    2 * @AUTHOR: Alexandre Correia - alexandrecorreia [.at.] celepar [.dot.] pr [.dot.] gov [.dot.] br 
    3 * @AUTHOR: Rodrigo Souza - rodrigosouzadossantos [.at.] gmail [.dot.] com 
    4 * @COPYLEFT: GPL - http://www.gnu.org/copyleft/gpl.html 
    5 * @DATE: 10/10/2007 
    6 * @LAST CHANGE: 11/10/2007 
    7 * @BRIEF: 
    8 **/ 
     1(function() 
     2{ 
     3        var _element = null; 
    94 
    10 function DragDrop() 
    11 { 
    12         this.dragObject         = null; 
    13         this.mouseOffset        = null; 
    14         this.documentMouseMove  = null; 
    15         this.documentMouseUp    = null; 
     5        function _config(pObj, pEvent, pHandler) 
     6        { 
     7                if ( typeof pObj == 'object' ) 
     8                { 
     9                        if ( pEvent.substring(0, 2) == 'on' ) 
     10                                pEvent = pEvent.substring(2, pEvent.length); 
    1611 
    17 } 
    18  
    19 DragDrop.prototype = { 
    20         "drag" : function(ev, pObject) 
    21         { 
    22                 function mouseMove(pEv, pObject, pTarget) 
    23                 { 
    24                         function getMouseOffset(pThis, target, pEv) 
     12                        if ( arguments.length == 3 ) 
    2513                        { 
    26                                 function getPosition(pObject) 
    27                                 { 
    28                                         try 
    29                                         { 
    30                                                 var left = 0; 
    31                                                 var top  = 0; 
    32  
    33                                                 while (pObject.offsetParent) 
    34                                                 { 
    35                                                         left += pObject.offsetLeft; 
    36                                                         top  += pObject.offsetTop; 
    37                                                         pObject = pObject.offsetParent; 
    38                                                 } 
    39  
    40                                                 left += pObject.offsetLeft; 
    41                                                 top  += pObject.offsetTop; 
    42  
    43                                                 return {x:left, y:top}; 
    44                                         }catch(e){} 
    45                                 } 
    46                                 try 
    47                                 { 
    48                                         var ev = pEv || window.event; 
    49  
    50                                         var docPos = getPosition(target); 
    51                                         var mousePos = mouseCoords(ev); 
    52                                         return {x:mousePos.x - docPos.x, y:mousePos.y - docPos.y}; 
    53                                 } 
    54                                 catch(e){} 
     14                                if ( pObj.addEventListener ) 
     15                                        pObj.addEventListener(pEvent, pHandler, false); 
     16                                else if ( pObj.attachEvent ) 
     17                                        pObj.attachEvent('on' + pEvent, pHandler); 
    5518                        } 
    56                         function mouseCoords(pEv) 
     19                        else if ( arguments.length == 4 ) 
    5720                        { 
    58                                 try 
    59                                 { 
    60                                         var ev = pEv; 
    61                                         var CoordX = ""; 
    62                                         var CoordY = ""; 
    63  
    64                                         if(ev.pageX || ev.pageY) 
    65                                                 return {x:ev.pageX, y:ev.pageY}; 
    66  
    67                                         CoordX = ev.clientX + document.body.scrollLeft - document.body.clientLeft; 
    68                                         CoordY = ev.clientY + document.body.scrollTop  - document.body.clientTop; 
    69                                         return { x:CoordX, y:CoordY }; 
    70                                 } 
    71                                 catch(e){} 
    72                         } 
    73                         try 
    74                         { 
    75                                 if ( pObject.mouseOffset == null ) 
    76                                         pObject.mouseOffset = getMouseOffset(pObject, pTarget, pEv); 
    77  
    78                                 var ev = pEv || window.event; 
    79                                 var mousePos = mouseCoords(ev); 
    80  
    81                                 if( pObject.dragObject ) 
    82                                 { 
    83                                         var x = mousePos.x - pObject.mouseOffset.x; 
    84                                         var y = mousePos.y - pObject.mouseOffset.y; 
    85                                         pObject.dragObject.style.left = ( x < 0 ) ? 0 : x; 
    86                                         pObject.dragObject.style.top  = ( y < 0 ) ? 0 : y; 
    87                                 } 
    88                                 if ( typeof pObject.documentMouseMove == 'function' ) 
    89                                         pObject.documentMouseMove(); 
    90                         } 
    91                         catch(e){} 
    92                 } 
    93                 function mouseUp(pObject) 
    94                 { 
    95                         try 
    96                         { 
    97                                 if ( typeof pObject.documentMouseUp == 'function' ) 
    98                                         pObject.documentMouseUp(); 
    99                                 pObject.dragObject = null; 
    100                                 document.onmousemove = pObject.documentMouseMove; 
    101                                 document.onmouseup = pObject.documentMouseUp; 
    102                                 pObject.documentMouseMove = pObject.documentMouseUp = null; 
    103                                 pObject.mouseOffset = null; 
    104                         } 
    105                         catch(e){} 
    106                 } 
    107                 try 
    108                 { 
    109                         if( !pObject ) 
    110                                 return; 
    111  
    112                         if (typeof ev.preventDefault != 'undefined') 
    113                                 ev.preventDefault(); 
    114                         else 
    115                                 pObject.onselectstart = new Function("return false;"); 
    116  
    117                         this.mouseOffset = null; 
    118  
    119                         if ( pObject.getAttribute('dragdrop') === "true" ) 
    120                         { 
    121                                 var _this = this; 
    122                                 pObject.style.cursor = "pointer"; 
    123                                 pObject.style.position = 'absolute'; 
    124  
    125                                 pObject.onmousemove = function(ev) 
    126                                 { 
    127                                         mouseMove(ev, _this, pObject); 
    128                                 }; 
    129  
    130                                 if ( typeof document.onmousemove == 'function' && document.onmousemove != pObject.onmousemove ) 
    131                                         this.documentMouseMove = document.onmousemove; 
    132  
    133                                 document.onmousemove = function(ev) 
    134                                 { 
    135                                         mouseMove(ev, _this, pObject); 
    136                                 }; 
    137  
    138                                 pObject.onmouseup = function() 
    139                                 { 
    140                                         mouseUp(_this); 
    141                                 }; 
    142  
    143                                 if ( typeof document.onmouseup == 'function' && document.onmouseup != pObject.onmouseup ) 
    144                                         this.documentMouseUp = document.onmouseup; 
    145  
    146                                 document.onmouseup = pObject.onmouseup; 
    147  
    148                                 var el = ( window.event ) ? window.event.srcElement : ev.target; 
    149  
    150                                 if ( el.getAttribute('dragdrop') === "true" ) 
    151                                 { 
    152                                         _this.dragObject  = pObject; 
    153                                         return false; 
    154                                 } 
     21                                if ( pObj.removeEventListener ) 
     22                                        pObj.removeEventListener(pEvent, pHandler, false); 
     23                                else if ( pObj.detachEvent ) 
     24                                        pObj.detachEvent('on' + pEvent, pHandler); 
    15525                        } 
    15626                } 
    157                 catch(e){alert(e.description);} 
    15827        } 
    159 }; 
    16028 
    161 var drag_drop = new DragDrop(); 
     29        function _getMouseOffset(e, el) 
     30        { 
     31                var docPos = _getPosition(el); 
     32                var mousePos = _mouseCoords(e); 
     33                return { 
     34                        'x' : mousePos.x - docPos.x, 
     35                        'y' : mousePos.y - docPos.y 
     36                }; 
     37        } 
     38 
     39        function _getPosition(_pObject) 
     40        { 
     41                var left = 0; 
     42                var top  = 0; 
     43 
     44                while ( _pObject.offsetParent ) 
     45                { 
     46                        left += _pObject.offsetLeft; 
     47                        top  += _pObject.offsetTop; 
     48                        _pObject = _pObject.offsetParent; 
     49                } 
     50 
     51                left += _pObject.offsetLeft; 
     52                top  += _pObject.offsetTop; 
     53 
     54                return { 
     55                        'x' : left, 
     56                        'y' : top 
     57                }; 
     58        } 
     59 
     60        function _mouseCoords(ev) 
     61        { 
     62                var CoordX = ""; 
     63                var CoordY = ""; 
     64 
     65                if ( ev.pageX || ev.pageY ) 
     66                        return { 
     67                                'x' : ev.pageX, 
     68                                'y' : ev.pageY 
     69                        }; 
     70 
     71                CoordX = ev.clientX + document.body.scrollLeft - document.body.clientLeft; 
     72                CoordY = ev.clientY + document.body.scrollTop  - document.body.clientTop; 
     73                return { 
     74                        'x' : CoordX, 
     75                        'y' : CoordY 
     76                }; 
     77        } 
     78 
     79        function _mouseMove(e) 
     80        { 
     81                if ( _element ) 
     82                { 
     83                        if ( _element.mouseOffset == null ) 
     84                                _element.mouseOffset = _getMouseOffset(e, _element); 
     85 
     86                        var mousePos = _mouseCoords(e); 
     87 
     88                        var x = mousePos.x - _element.mouseOffset.x; 
     89                        var y = mousePos.y - _element.mouseOffset.y; 
     90                        _element.style.left = ( x < 0 ) ? 0 : x; 
     91                        _element.style.top  = ( y < 0 ) ? 0 : y; 
     92                } 
     93        } 
     94 
     95        function _mouseUp() 
     96        { 
     97                if ( _element ) 
     98                { 
     99                        _config(_element, 'onmousemove', _mouseMove, 'remove'); 
     100                        _config(top.document, 'onmousemove', _mouseMove, 'remove'); 
     101 
     102                        _config(_element, 'onmouseup', _mouseUp, 'remove'); 
     103                        _config(top.document, 'onmouseup', _mouseUp, 'remove'); 
     104 
     105                        _element.mouseOffset = null; 
     106                        _element = null; 
     107                } 
     108        } 
     109 
     110        function _toDrag(el) 
     111        { 
     112                if ( el.getAttribute('dragdrop_parent') == null ) 
     113                { 
     114                        if ( el.getAttribute('dragdrop_child') != null ) 
     115                        { 
     116                                var children = 0; 
     117                                while ( (++children < 5) && (el.getAttribute('dragdrop_parent') == null) ) 
     118                                        el = el.parentNode; 
     119                        } 
     120                        if ( el.getAttribute('dragdrop_parent') == null ) 
     121                                el = false; 
     122                } 
     123                return el; 
     124        } 
     125 
     126        function _drag(e) 
     127        { 
     128                if (typeof e.preventDefault != 'undefined') 
     129                        e.preventDefault(); 
     130                else 
     131                        el.onselectstart = new Function("return false;"); 
     132 
     133                var el = ( e.target ) ? e.target : e.srcElement; 
     134 
     135                el = _toDrag(el); 
     136 
     137                if ( el ) 
     138                { 
     139                        _element = el; 
     140 
     141                        _config(el, 'onmousemove', _mouseMove); 
     142                        _config(top.document, 'onmousemove', _mouseMove); 
     143 
     144                        _config(el, 'onmouseup', _mouseUp); 
     145                        _config(top.document, 'onmouseup', _mouseUp); 
     146                } 
     147        } 
     148 
     149        function _set(_pObject) 
     150        { 
     151                if ( typeof _pObject != 'object' ) 
     152                        return false; 
     153 
     154                _pObject.style.position = 'absolute'; 
     155                _pObject.setAttribute('dragdrop_parent', 'true'); 
     156 
     157                _config(_pObject, 'onmousedown', _drag); 
     158        } 
     159 
     160        function DragDrop() 
     161        { 
     162        } 
     163 
     164        DragDrop.prototype.drag = _set; 
     165        window.DragDrop = DragDrop; 
     166} 
     167)(); 
  • trunk/instant_messenger/js/images.js

    r287 r305  
    22        var im_available = new Image(); 
    33        im_available.src = path_im + 'templates/default/images/available.gif'; 
    4          
     4 
    55        var im_away = new Image(); 
    66        im_away.src = path_im + 'templates/default/images/away.gif'; 
    7          
     7 
    88        var im_chat = new Image(); 
    99        im_chat.src = path_im + 'templates/default/images/chat.gif'; 
    10          
     10 
    1111        var im_dnd = new Image(); 
    1212        im_dnd.src = path_im + 'templates/default/images/dnd.gif'; 
    13          
     13 
    1414        var im_xa = new Image(); 
    1515        im_xa.src = path_im + 'templates/default/images/xa.gif'; 
    16          
     16 
    1717        var im_unavailable = new Image(); 
    1818        im_unavailable.src = path_im + 'templates/default/images/unavailable.gif'; 
    19          
     19 
    2020        var im_fast_menu = new Image(); 
    2121        im_fast_menu.src = path_im + 'templates/default/images/menuarwopen.gif'; 
    22          
     22 
    2323        var im_photo = new Image(); 
    2424        im_photo.src = path_im + 'templates/default/images/photo.png'; 
    25          
     25 
    2626        var im_photo_1 = new Image(); 
    2727        im_photo_1.src = path_im + 'templates/default/images/photo_1.png'; 
     
    3434        var smile_1 = new Image(); 
    3535        smile_1.src = path_im + "templates/default/images/smiles/1.gif"; 
    36          
     36 
    3737        var smile_2 = new Image(); 
    3838        smile_2.src = path_im + "templates/default/images/smiles/2.gif"; 
    39          
     39 
    4040        var smile_3 = new Image(); 
    4141        smile_3.src = path_im + "templates/default/images/smiles/3.gif"; 
    42          
     42 
    4343        var smile_4 = new Image(); 
    4444        smile_4.src = path_im + "templates/default/images/smiles/4.gif"; 
    45          
     45 
    4646        var smile_5 = new Image(); 
    4747        smile_5.src = path_im + "templates/default/images/smiles/5.gif"; 
    48          
     48 
    4949        var smile_6 = new Image(); 
    5050        smile_6.src = path_im + "templates/default/images/smiles/6.gif"; 
    51          
     51 
    5252        var smile_7 = new Image(); 
    5353        smile_7.src = path_im + "templates/default/images/smiles/7.gif"; 
    54          
     54 
    5555        var smile_8 = new Image(); 
    5656        smile_8.src = path_im + "templates/default/images/smiles/8.gif"; 
    57          
     57 
    5858        var smile_9 = new Image(); 
    5959        smile_9.src = path_im + "templates/default/images/smiles/9.gif"; 
    60          
     60 
    6161        var smile_10 = new Image(); 
    6262        smile_10.src = path_im + "templates/default/images/smiles/10.gif"; 
    63          
     63 
    6464        var smile_11 = new Image(); 
    6565        smile_11.src = path_im + "templates/default/images/smiles/11.gif"; 
    66          
     66 
    6767        var smile_12 = new Image(); 
    68         smile_12.src = path_im + "templates/default/images/smiles/12.gif";       
     68        smile_12.src = path_im + "templates/default/images/smiles/12.gif"; 
  • trunk/instant_messenger/js/jabber.js

    r287 r305  
    1 function Jabber() 
     1(function() 
    22{ 
    3         this.con = null; 
    4         this.xtools = null; 
    5         this.send_presence = false; 
    6 } 
    7  
    8 Jabber.prototype = { 
    9         'doIt' : function(pAction, pParam) 
    10         { 
    11                 var __this = this; 
    12                 function __connector() 
    13                 { 
    14                         if ( __this.con == null ) 
    15                                 __this.con = new IMConnector; 
    16                 } 
    17                 function __xtools() 
    18                 { 
    19                         __this.xtools = new XTools; 
    20                 } 
    21  
    22                 __connector(); 
    23                 __xtools(); 
    24  
    25                 if ( typeof pAction != 'string' || typeof pParam != 'object' ) 
    26                         return false; 
    27  
    28                 switch ( pAction ) 
    29                 { 
    30                         case 'iq' : 
    31                                 readIq(pParam); 
    32                         break; 
    33                         case 'message' : 
    34                                 readMessage(pParam); 
    35                         break; 
    36                         case 'presence' : 
    37                                 readPresence(pParam); 
    38                         break; 
    39                         case 'sendMessage': 
    40                                 sendMessage(pParam.message,pParam.from); 
    41                                 break; 
    42                 } 
    43  
    44                 function readContacts(pContacts) 
    45                 {  
    46                         var XmlDoc = "<layer>" + 
    47                                                         "<lang1>" + im.get_lang("Nickname") + "</lang1>" + 
    48                                                         "<lang2>" + im.get_lang("Add Contact") + "</lang2>" + 
    49                                                         "<lang3>" + im.get_lang("Preferences") + "</lang3>" + 
    50                                                         "<nickname>" + im.get_lang("Username") + "</nickname>" + 
    51                                                         "<path>" + path_im + "</path>" + 
    52                                                  "</layer>"; 
    53  
    54                         im_window.load('__contacts_im_','instant_messenger_content','<title>.::Expresso Messenger::.</title>','window.xsl','',true,true,false ); 
    55                         im_window.elementC('__contacts_im_').innerHTML  = __this.xtools.parse(XmlDoc,'layer.xsl'); 
    56                         im_window.elementC('__contacts_im_').innerHTML += __this.xtools.parse(pContacts, 'contacts.xsl'); 
    57                          
    58                         var element = func.byId('im_contact_list').firstChild; 
    59  
    60                         while(element) 
    61                         { 
    62                                 if( element.nodeType == 1 ) 
    63                                         if(element.nodeName.toLowerCase() == "img") 
    64                                                 element.src = im_group_open.src; 
    65                                         else if(element.nodeName.toLowerCase() == "div" && element.hasChildNodes()) 
    66                                                 element.firstChild.src = im_unavailable.src; 
    67  
    68                                 element = element.nextSibling; 
    69                         } 
    70                          
    71                         if(func.byId('im__avatar').src === im_photo.src) 
    72                         {                        
    73                                 im.request_vcard('this',false); 
    74                                 im.ldap_photo('im__avatar'); 
    75                         } 
    76                          
    77                         function handler(Xmldata) 
    78                         { 
    79                         } 
    80                         __this.con.go('$this.Ujabber.setStatus', {'request':handler}); 
    81                          
    82                         var status = ""; 
    83                         if( status = cookies_im.checkCookie('status')) 
    84                         { 
    85                                 status = status.substr(status.indexOf("=") + 1,status.length); 
    86                                 im.status = status; 
    87                         } 
    88                         else 
    89                         { 
    90                                 im.status = 'type=available'; 
    91                                 im.statusFlag = 'available'; 
    92                                 func.byId('im_status_src').src = im_available.src; 
    93                         } 
    94          
    95                         im.presence(im.status); 
    96                 } 
    97  
    98                 function readIq(pIq) 
    99                 { 
    100                         switch ( pIq.getAttribute('id') ) 
    101                         { 
    102                                 case 'contacts' : readContacts(pIq); break; 
    103                                 case 'vCard' :  
    104                                 case 'vCard_user' :  
    105                                         readVcard(pIq);  
    106                                         break; 
    107                                 case 'last_time_user': 
    108                                         readLastTimeUser(pIq); 
    109                                         break; 
    110                         } 
    111                 } 
    112  
    113                 function readMessage(pMessage) 
    114                 { 
    115                         if ( pMessage.getElementsByTagName('body').length > 0 ) 
    116                         { 
    117                                 var msg = __this.xtools.parse(pMessage, 'message_new.xsl'); 
    118                                 var from = pMessage.getAttribute('from'); 
    119                                 from = from.substr(0,from.indexOf('/')); 
    120  
    121                                 var iframe = func.byId('iframe_' + from); 
    122  
    123                                 var win; 
    124  
    125                                 if ( !(win = im_window.elementC(from)) ) 
    126                                 { 
    127                                         im_window.load(from, 'instant_messenger_content', '<title>.:: Expresso Messenger ::.</title>', 'chat.xsl', '310', true, true, true); 
    128                                         func.byId(from + '__avatar').src = path_im + "/templates/default/images/photo.png"; 
    129                                 } 
     3        var _conn; 
     4        var _xtools; 
     5        var _window; 
     6        var _ldap; 
     7 
     8        var _menu = new ShowHidden(1500); 
     9 
     10        var _vcards = []; 
     11        var _info = []; 
     12 
     13        var _win_position = 30; 
     14 
     15        function _next_position() 
     16        { 
     17                return (_win_position += 30); 
     18        } 
     19 
     20        function _chat(_pJid) 
     21        { 
     22                var _win_pos = _next_position(); 
     23                var _win_chat = _window.load('chat' + _pJid); 
     24                        _win_chat.title('.::Expresso Messenger::.'); 
     25                        _win_chat.size(310); 
     26                        _win_chat.content(_xtools.parse('chat.xsl')); 
     27                        _win_chat.position(_win_pos, _win_pos); 
     28                        _win_chat.wc.style.padding = "3px"; 
     29 
     30                _ldap.photo( 
     31                        _pJid.substr(0,_pJid.indexOf('@')), 
     32                        _win_chat.wc.childNodes[2] 
     33                ); 
     34 
     35                var _iframe = top.document.createElement('iframe'); 
     36                        _iframe.id = 'iframe_' + _pJid; 
     37 
     38                _win_chat.wc.childNodes[2].appendChild(_iframe); 
     39 
     40                _iframe.style.width = '250px'; 
     41                _iframe.style.height = '100%'; 
     42                _iframe.style.border = '0'; 
     43                _iframe.style.margin = '0'; 
     44 
     45                var _contentWindow = _iframe.contentWindow; 
     46 
     47                _iframe = _contentWindow.document; 
     48                _iframe.write('<html><body style="padding:0;margin:0;"></body></html>'); 
     49                _iframe.close(); 
     50                _iframe.designMode = "On"; 
     51 
     52                _contentWindow.focus(); 
     53 
     54                _config( 
     55                        _win_chat.wc.childNodes[1].childNodes[5], 
     56                        'onclick', 
     57                        function() 
     58                        { 
     59                                _info[_pJid] = true; 
     60                                _vcard(_pJid); 
     61                        } 
     62                ); 
     63 
     64                _config( 
     65                        _win_chat.wc.childNodes[1].lastChild.previousSibling, 
     66                        'onclick', 
     67                        function() 
     68                        { 
     69                                _sendMessage( 
     70                                        _pJid, 
     71                                        _iframe, 
     72                                        _win_chat.wc.firstChild 
     73                                ); 
     74                                _iframe.body.innerHTML = ''; 
     75                                _contentWindow.focus(); 
     76                        } 
     77                ); 
     78 
     79                function _execKeyAction(e) 
     80                { 
     81                        switch ( e.keyCode ) 
     82                        { 
     83                                case 13 : 
     84                                        if ( !(e.shiftKey) ) 
     85                                        { 
     86                                                if ( e.type.indexOf('keydown') != -1 ) 
     87                                                        _sendMessage( 
     88                                                                _pJid, 
     89                                                                _iframe, 
     90                                                                _win_chat.wc.firstChild 
     91                                                        ); 
     92                                                else 
     93                                                        _iframe.body.innerHTML = ''; 
     94 
     95                                                return false; 
     96                                        } 
     97                                break; 
     98                                case 27 : 
     99                                        if ( e.type.indexOf('keyup') != -1 ) 
     100                                                _win_chat.button(_win_chat.bc); 
     101                                break; 
     102                        } 
     103                } 
     104                _config(_contentWindow.document, 'onkeydown', _execKeyAction); 
     105                _config(_contentWindow.document, 'onkeyup', _execKeyAction); 
     106 
     107                if ( !(_vcards[_pJid]) ) 
     108                        _conn.go('$this.Ujabber.getVcard','jid='+_pJid); 
     109                else 
     110                        _readVCard(_vcards[_pJid]); 
     111 
     112                return _win_chat; 
     113        } 
     114 
     115        function _config(pObj, pEvent, pHandler) 
     116        { 
     117                if ( typeof pObj == 'object' ) 
     118                { 
     119                        if ( pEvent.substring(0, 2) == 'on' ) 
     120                                pEvent = pEvent.substring(2, pEvent.length); 
     121 
     122                        if ( pObj.addEventListener ) 
     123                                pObj.addEventListener(pEvent, pHandler, false); 
     124                        else if ( pObj.attachEvent ) 
     125                                pObj.attachEvent('on' + pEvent, pHandler); 
     126                } 
     127        } 
     128 
     129        function _openChat(el) 
     130        { 
     131                var id = el.id; 
     132 
     133                id = id.substr(id.indexOf('_') + 1); 
     134 
     135                if ( id.indexOf('/') > -1 ) 
     136                        id = id.substr(0, id.indexOf('/')); 
     137 
     138                var _win = _window.get('chat' + id); 
     139                if ( !_win ) 
     140                        _chat(id); 
     141                else 
     142                { 
     143                        _win.wm.style.display = 'block'; 
     144                        _win.focus(); 
     145                        _win.wc.childNodes[2].firstChild.contentWindow.focus(); 
     146                } 
     147        } 
     148 
     149        function _readContacts(_pContacts) 
     150        { 
     151                var _win_contact = _window.load('contact_list'); 
     152                        _win_contact.title('.::Expresso Messenger::.'); 
     153                        _win_contact.size(170, 350); 
     154                        _win_contact.position(30, 30, true); 
     155                        _win_contact.bc.style.display = 'none'; 
     156                        _win_contact.wm.style.display = 'none'; 
     157 
     158                var _params = { 
     159                        'lang1':imGetLang('nickname'), 
     160                        'lang2':imGetLang('add contact'), 
     161                        'lang3':imGetLang('preferences'), 
     162                        'nickname':imGetLang('username') 
     163                }; 
     164                _win_contact.content( 
     165                        _xtools.parse(_xtools.xml('layer'),'layer.xsl', _params) 
     166                        + _xtools.parse(_pContacts, 'contacts.xsl', {'path':path_im}) 
     167                ); 
     168 
     169                _config(_win_contact.wc.firstChild.childNodes[5], 'onclick', _ldap.add); 
     170 
     171                var _contact_list = top.document.getElementById('im_contact_list'); 
     172                if ( _contact_list ) 
     173                { 
     174                        _conn.go('$this.Ujabber.setStatus'); 
     175                        _ldap.photo( 
     176                                'im_avatar', 
     177                                _win_contact.wc.firstChild 
     178                        ); 
     179                        _conn.go('$this.Ujabber.getVcard','jid=this'); 
     180                        function _click(e) 
     181                        { 
     182                                var el = ( e.target ) ? e.target : e.srcElement; 
     183                                //alert(e.button); 
     184                                if ( (e.button == 0 && !document.all) || (e.button == 1 && document.all) ) 
     185                                        _openChat(el); 
    130186                                else 
    131187                                { 
    132                                         im_window.load(from, '', '', '', '', true, true, true); 
     188                                        var _options = [ 
     189                                                imGetLang("Nickname"), 
     190                                                imGetLang("Group"), 
     191                                                imGetLang("Remove"), 
     192                                                imGetLang("It requisition permission"), 
     193                                                imGetLang("See Info") 
     194                                        ]; 
     195 
     196                                        var _style_text = 'background: no-repeat url(' + path_im 
     197                                                                + 'templates/default/images/group_close.gif);' 
     198                                                                + 'padding:2px 4px 2px 16px;'; 
     199 
     200                                        var _xml = _xtools.xml('menu'); 
     201                                        var _option; 
     202                                        var _item; 
     203                                        var _action; 
     204                                        var _style; 
     205 
     206                                        for ( var i in _options ) 
     207                                        { 
     208                                                _option = _xml.createElement('option'); 
     209 
     210                                                _item = _xml.createElement('item'); 
     211                                                _item.appendChild(_xml.createTextNode(_options[i])); 
     212 
     213                                                _style = _xml.createElement('style'); 
     214                                                _style.appendChild(_xml.createTextNode(_style_text)); 
     215 
     216                                                _option.appendChild(_item); 
     217                                                _option.appendChild(_style); 
     218 
     219                                                _xml.documentElement.appendChild(_option); 
     220                                        } 
     221 
     222                                        var _sub_menu = top.document.getElementById('sub_' + el.getAttribute('jid')); 
     223                                                _sub_menu.innerHTML = _xtools.parse(_xml, 'options.xsl'); 
     224                                                _menu.action('onmouseover', 'onmouseout', _sub_menu); 
     225 
     226                                        _sub_menu = _sub_menu.firstChild; 
     227                                        _sub_menu.childNodes[0].style.display = 'none'; 
     228                                        _sub_menu.childNodes[1].style.display = 'none'; 
     229                                        _sub_menu.childNodes[3].style.display = 'none'; 
     230                                        _config( 
     231                                                _sub_menu.childNodes[2], 
     232                                                'onclick', 
     233                                                function(e) 
     234                                                { 
     235                                                        var el = ( e.target ) ? e.target : e.srcElement; 
     236                                                        var jid = el.parentNode.parentNode.id.substr(4); 
     237                                                        _conn.go('$this.Ujabber.removeContact','jid='+jid); 
     238                                                } 
     239                                        ); 
     240                                        _config( 
     241                                                _sub_menu.childNodes[4], 
     242                                                'onclick', 
     243                                                function() 
     244                                                { 
     245                                                        _info[el.getAttribute('jid')] = true; 
     246                                                        _vcard(el.getAttribute('jid')); 
     247                                                } 
     248                                        ); 
    133249                                } 
    134  
    135                                 if( iframe == null ) 
     250                        } 
     251                        function _hover(e) 
     252                        { 
     253                                var el = ( e.target ) ? e.target : e.srcElement; 
     254                                var color = "#fff"; 
     255                                if ( e.type.indexOf('mouseover') != -1 ) 
     256                                        color = "#b4cfe5"; 
     257                                el.style.backgroundColor = color; 
     258                        } 
     259                        var _contact = _contact_list.firstChild; 
     260                        while ( _contact ) 
     261                        { 
     262                                if ( _contact.getAttribute('jid') ) 
    136263                                { 
    137                                         win = im_window.elementC(from); 
    138                                          
    139                                         var iframe = document.createElement('iframe'); 
    140                                         iframe.id = 'iframe_' + from; 
    141                                         iframe.style.width = '240px'; 
    142                                         iframe.style.height = '65px'; 
    143                                         iframe.style.border = '0'; 
    144                                         iframe.style.margin = '0'; 
    145                                         iframe.style.padding = '0'; 
    146                                                                                  
    147                                         var _messages_ = win.firstChild.firstChild.nextSibling.nextSibling; 
    148                                         _messages_.appendChild(iframe); 
    149                                          
    150                                         iframe.contentWindow.document.write('<html><body id="' + from + '" style="margin:0px;padding:0px"></body></html>'); 
    151                                         iframe.contentWindow.document.close(); 
    152                                         iframe.contentWindow.document.designMode = "On"; 
    153  
    154                                         function getEnter(e) 
     264                                        //_config(_contact, 'onmousedown', _click); 
     265                                        _config(_contact, 'onmouseup', _click); 
     266                                        _config(_contact, 'onmouseover', _hover); 
     267                                        _config(_contact, 'onmouseout', _hover); 
     268                                } 
     269                                _contact = _contact.nextSibling; 
     270                        } 
     271                } 
     272        } 
     273 
     274        function _vcard(_pJid) 
     275        { 
     276                if ( _vcards[_pJid] ) 
     277                { 
     278                        if ( _info[_pJid] ) 
     279                                delete _info[_pJid]; 
     280 
     281                        var _win_vcard; 
     282                        if ( !(_win_vcard = _window.get('vcard_' + _pJid)) ) 
     283                        { 
     284                                var _win_pos = _next_position(); 
     285 
     286                                _win_vcard = _window.load('vcard_' + _pJid); 
     287                                _win_vcard.title('.:: Informações do Contato ::.'); 
     288                                _win_vcard.size(300); 
     289                                _win_vcard.position(_win_pos, _win_pos); 
     290 
     291                                _win_vcard.wc.style.padding = "3px"; 
     292                                _win_vcard.bx.style.display = "none"; 
     293 
     294                                var _params = { 
     295                                        'fullname' : imGetLang('Full Name'), 
     296                                        'nickname' : imGetLang('Nickname'), 
     297                                        'organization' : imGetLang('Organization'), 
     298                                        'sector' : imGetLang('Sector'), 
     299                                        'role' : imGetLang('Role'), 
     300                                        'birthday' : imGetLang('Birthday') 
     301                                }; 
     302 
     303                                _win_vcard.content( 
     304                                        _xtools.parse( 
     305                                                _vcards[_pJid], 
     306                                                'vcard_contacts.xsl', 
     307                                                _params 
     308                                        ) 
     309                                ); 
     310                        } 
     311                        else 
     312                                _win_vcard.focus(); 
     313                } 
     314                else 
     315                        _conn.go('$this.Ujabber.getVcard', 'jid='+_pJid); 
     316        } 
     317 
     318        function _readVCard(_pVCard) 
     319        { 
     320                _vcards[_pVCard.getAttribute('from')] = _pVCard; 
     321 
     322                switch ( _pVCard.getAttribute('id') ) 
     323                { 
     324                        case "vCard_user" : 
     325                                var _layer_nickname = top.document.getElementById('im_layer_nickname'); 
     326                                var _nickname = _pVCard.getElementsByTagName('NICKNAME'); 
     327 
     328                                if ( _nickname.length && _layer_nickname ) 
     329                                        _layer_nickname.innerHTML = _nickname[0].firstChild.nodeValue; 
     330                        break; 
     331                        case "vCard" : 
     332                                if ( _info[_pVCard.getAttribute('from')] ) 
     333                                        _vcard(_pVCard.getAttribute('from')); 
     334                        break; 
     335                } 
     336        } 
     337 
     338        function _readIq(pIq) 
     339        { 
     340                switch ( pIq.getAttribute('id') ) 
     341                { 
     342                        case 'contacts' : 
     343                                _readContacts(pIq); 
     344                        break; 
     345                        case 'vCard' : 
     346                        case 'vCard_user' : 
     347                                _readVCard(pIq); 
     348                        break; 
     349                        default : //alert('readIq : ' + pIq.getAttribute('id')); 
     350                } 
     351        } 
     352 
     353        function _readMessage(_pMessage) 
     354        { 
     355                var _from = _pMessage.getAttribute('from'); 
     356 
     357                if ( _from.indexOf('/') > -1 ) 
     358                        _from = _from.substr(0, _from.indexOf('/')); 
     359 
     360                var _win = _window.get('chat' + _from); 
     361 
     362                if ( _win && _pMessage.getElementsByTagName('composing').length > 0 ) 
     363                        _win.wc.childNodes[1].lastChild.style.display = 'block'; 
     364 
     365                if ( _pMessage.getElementsByTagName('body').length > 0 ) 
     366                { 
     367                        if ( !_win ) 
     368                                _win = _chat(_from); 
     369 
     370                        var _history = _win.wc.firstChild; 
     371 
     372                        var _nickname; 
     373                        if ( _vcards[_from] ) 
     374                        { 
     375                                _nickname = _vcards[_from].getElementsByTagName('NICKNAME'); 
     376                                if ( _nickname.length ) 
     377                                        _nickname = _nickname[0].firstChild.nodeValue; 
     378                                else 
     379                                        _nickname = _from; 
     380                        } 
     381                        else 
     382                                _nickname = _from; 
     383 
     384                        var _msg = _xtools.parse(_pMessage, 'message_new.xsl', {'nickname':_nickname}); 
     385 
     386                        if ( _history.scrollHeight == (_history.scrollTop + _history.clientHeight) ) 
     387                        { 
     388                                _history.innerHTML += _msg; 
     389                                _history.scrollTop = _history.scrollHeight; 
     390                        } 
     391                        else 
     392                                // this "else" is to prevent the creation of a flag and the need to use another conditional 
     393                                _history.innerHTML += _msg; 
     394 
     395                        _win.wc.childNodes[1].lastChild.style.display = 'none'; 
     396                } 
     397 
     398                if ( _win && _pMessage.getElementsByTagName('paused').length > 0 ) 
     399                        _win.wc.childNodes[1].lastChild.style.display = 'none'; 
     400        } 
     401 
     402        function _readPresence(_pPresence) 
     403        { 
     404                var _from = _pPresence.getAttribute('from'); 
     405                if ( _from.indexOf('/') > -1 ) 
     406                        _from = _from.substr(0, _from.indexOf('/')); 
     407 
     408                var _presence_type = _pPresence.getAttribute('type'); 
     409                var _img_status_contact = top.document.getElementById('contact_' + _from); 
     410                var _mensagem_status_contact = top.document.getElementById('status_' + _from); 
     411                if ( _mensagem_status_contact ) 
     412                { 
     413                        _mensagem_status_contact.innerHTML = ''; 
     414                        _mensagem_status_contact.style.display = 'none'; 
     415                } 
     416 
     417                if ( _presence_type ) 
     418                { 
     419                        switch( _presence_type ) 
     420                        { 
     421                                case 'available' : 
     422                                case 'unavailable' : 
     423                                        if ( _img_status_contact ) 
     424                                                _img_status_contact.style.backgroundImage = 'url(' + eval('im_' + _presence_type + '.src') + ')'; 
     425                                break; 
     426                                case 'subscribe' : 
     427                                        if ( top.document.getElementById('contact_' + _from) ) 
    155428                                        { 
    156                                                 if ( !(e.shiftKey) && (e.keyCode == 13) ) 
    157                                                 { 
    158                                                         if ( e.type.indexOf('keydown') != -1 ) 
    159                                                                 im.SendMessage(from); 
    160                                                         else 
    161                                                                 iframe.contentWindow.document.body.innerHTML = ''; 
    162                                                         return false; 
    163                                                 } 
    164                                         } 
    165  
    166                                         func.attachEvent(iframe.contentWindow, 'onkeydown', getEnter); 
    167                                         func.attachEvent(iframe.contentWindow, 'onkeyup', getEnter); 
    168  
    169                                 } 
    170  
    171                                 iframe.contentWindow.focus(); 
    172  
    173                                 if ( win ) 
    174                                 { 
    175                                         if(!(im.nickname_contacts[from])) 
    176                                                 im.request_vcard(from, false); 
    177  
    178                                         win = win.firstChild.firstChild; 
    179                                         var nick = (im.nickname_contacts[from]) ? im.nickname_contacts[from] : from; 
    180                                         win.innerHTML += "<b>" + nick + "</b>" + im.insertEmoticons(msg); 
    181                                     win.scrollTop = win.scrollHeight;                                    
    182                                  
    183                                         if(!(im.nickname_contacts[from])) 
    184                                                 im.ldap_photo(from + "__avatar"); 
    185                                 } 
    186                                 im.newMessageNotification(); 
    187                         } 
    188                 } 
    189  
    190                 function readPresence(pPresence) 
    191                 { 
    192                         //@TODO: presenca antes da lista ocasiona erros 
    193                         //verificar e retirar o controle de erros abaixo 
    194                         try 
    195                         { 
    196                                 var jidFrom = pPresence.getAttribute('from'); 
    197  
    198                                 var resource = jidFrom.indexOf('/'); 
    199                                 if ( resource > -1 ) 
    200                                         jidFrom = jidFrom.substr(0, resource); 
    201          
    202                                 if(pPresence.getAttribute('type')) 
    203                                 { 
    204                                         switch(pPresence.getAttribute('type')) 
    205                                         { 
    206                                                 case 'subscribe' : 
    207                                                                 if(func.byId(pPresence.getAttribute('from'))) 
    208                                                                 { 
    209                                                                         if(confirm('Autorizar o usuário ' + pPresence.getAttribute('from') + '?')) 
    210                                                                                 im.subscription(pPresence.getAttribute('from'),'subscribed'); 
    211                                                                         else 
    212                                                                                 im.subscription(pPresence.getAttribute('from'),'unsubscribe'); 
    213                                                                 } 
    214                                                                 else 
    215                                                                 { 
    216                                                                         if(!func.byId(pPresence.getAttribute('from'))) 
    217                                                                         { 
    218                                                                                 if(confirm('O usuário ' + pPresence.getAttribute('from') + ' quer adicioná-lo ?')) 
    219                                                                                 { 
    220                                                                                         im.addrequest(pPresence.getAttribute('from')); 
    221                                                                                         im.subscription(pPresence.getAttribute('from'),'subscribed'); 
    222                                                                                 } 
    223                                                                                 else 
    224                                                                                         im.subscription(pPresence.getAttribute('from'),'unsubscribe'); 
    225                                                                         }else 
    226                                                                                 im.subscription(pPresence.getAttribute('from'),pPresence.getAttribute('type')); 
    227                                                                 } 
    228                                                                 break; 
    229                                                 case 'subscribed' : 
    230                                                                 im.subscription(pPresence.getAttribute('from'),pPresence.getAttribute('type')); 
    231                                                                 break; 
    232                                                 case 'unsubscribed' :                                            
    233                                                                 //alert('O usuário ' + pPresence.getAttribute('from') + ' não quer mais papo !'); 
    234                                                                 break; 
    235                                                 case 'unsubscribe' :                             
    236                                                                 alert('O usuário ' + pPresence.getAttribute('from') + ' negou seu pedido !'); 
    237                                                                 break; 
    238                                                 case 'unavailable' : 
    239                                                                 var img = func.byId('img_' + jidFrom); 
    240                                                                 if( img ) 
    241                                                                 { 
    242                                                                         img.src = eval('im_' + pPresence.getAttribute('type') + '.src'); 
    243                                                                         func.confEl(func.byId(jidFrom),"style","margin-left:15px;cursor:pointer;display:none;");                                                         
    244                                                                 } 
    245                                                                 break; 
    246                                                 case 'available' : 
    247                                                                 var img = func.byId('img_' + jidFrom); 
    248                                                                 if( img ) 
    249                                                                 { 
    250                                                                         img.src = eval('im_' + pPresence.getAttribute('type') + '.src'); 
    251                                                                         func.confEl(func.byId(jidFrom),"style","margin-left:15px;cursor:pointer;display:block;");                                                                                                                
    252                                                                 } 
    253                                                                 break; 
    254                                         } 
    255                                 } 
    256                                 else 
    257                                 { 
    258                                         var node = pPresence.firstChild; 
    259                                         while( node ) 
    260                                         { 
    261                                                 if(node.hasChildNodes()) 
    262                                                 {                                                
    263                                                         switch(node.nodeName) 
    264                                                         { 
    265                                                                 case "show" : 
    266                                                                                 var img = func.byId('img_' + jidFrom); 
    267                                                                                 if( img ) 
    268                                                                                 { 
    269                                                                                         img.src = eval('im_' + node.firstChild.nodeValue + '.src'); 
    270                                                                                         func.confEl(func.byId(jidFrom),"style","margin-left:15px;cursor:pointer;display:block;");                                                        
    271                                                                                         func.byId('status_' + jidFrom).innerHTML = " "; 
    272                                                                                         func.confEl(func.byId('status_' + jidFrom), "style", "font-size:8pt; font-family:Verdana, Arial, Helvetica, sans-serif; font-style:italic; display:none;"); 
    273                                                                                 } 
    274                                                                                 break; 
    275                                                                 case "status" :  
    276                                                                                 var img = func.byId('status_' + jidFrom); 
    277                                                                                 if( img ) 
    278                                                                                 { 
    279                                                                                         func.byId('status_' + jidFrom).innerHTML = ( node.firstChild.nodeValue ) ? node.firstChild.nodeValue : "" ; 
    280                                                                                         func.confEl(func.byId('status_' + jidFrom), "style", "font-size:8pt; font-family:Verdana, Arial, Helvetica, sans-serif; font-style:italic; display:block;"); 
    281                                                                                 } 
    282                                                                                 break; 
    283                                                                 default : 
    284                                                                                 var img = func.byId('img_' + jidFrom); 
    285                                                                                 if( img ) 
    286                                                                                 { 
    287                                                                                         img.src = im_available.src;                                                                      
    288                                                                                         func.byId('status_' + jidFrom).innerHTML = " "; 
    289                                                                                         func.confEl(func.byId('status_' + jidFrom), "style", "font-size:8pt; font-family:Verdana, Arial, Helvetica, sans-serif; font-style:italic; display:none;"); 
    290                                                                                 } 
    291                                                                                 break;                                                                           
    292                                                         } 
    293                                                 } 
    294                                                 node = node.nextSibling;                                         
    295                                         } 
    296          
    297                                         if(!im.contacts_off_line) 
    298                                                 setTimeout("im.off_line()",3000); 
    299                                 } 
    300                         } 
    301                         catch(e) 
    302                         { 
    303                                 alert('read presence : ' + e + "\n\n" + e.description); 
    304                         } 
    305                 } 
    306                  
    307                 function readLastTimeUser(pLastTime) 
    308                 { 
    309                         var last_time = __this.xtools.parse(pLastTime, 'last_time.xsl'); 
    310                          
    311                         if( __this.send_presence ) 
    312                         {                        
    313                                 if( last_time != "0") 
    314                                 { 
    315                                         function handler(Xmldata) 
    316                                         { 
    317                                         } 
    318                                         __this.con.go('$this.Ujabber.setStatus', {'request':handler}); 
    319                                  
    320                                         var status = ""; 
    321                                         if( status = cookies_im.checkCookie('status')) 
    322                                         { 
    323                                                 status = status.substr(status.indexOf("=") + 1,status.length); 
    324                                                 im.status = status; 
     429                                                _conn.go('$this.Ujabber.subscription', 'jid=' + _from + '&type=subscribed' ); 
    325430                                        } 
    326431                                        else 
    327432                                        { 
    328                                                 im.status = 'type=available'; 
    329                                                 im.statusFlag = 'available'; 
    330                                                 func.byId('im_status_src').src = im_available.src; 
     433                                                if ( !_window.get('subscription' + _from) ) 
     434                                                { 
     435                                                        var _win_pos = _next_position(); 
     436                                                        var _win_subscription = _window.load('subscription' + _from); 
     437                                                                _win_subscription.title('.::Expresso Messenger::.'); 
     438                                                                _win_subscription.position(_win_pos, _win_pos); 
     439                                                                _win_subscription.size(200); 
     440                                                                _win_subscription.wc.style.padding = "3px"; 
     441                                                                _win_subscription.bc.style.display = 'none'; 
     442                                                                _win_subscription.bx.style.display = 'none'; 
     443                                                                _win_subscription.bz.style.display = 'none'; 
     444 
     445                                                        var _params = { 
     446                                                                'jid' : _from, 
     447                                                                'lang1' : 'deseja adiciona-lo como contato.', 
     448                                                                'lang2' : imGetLang('nickname'), 
     449                                                                'lang3' : imGetLang('group'), 
     450                                                                'lang4' : imGetLang('allow'), 
     451                                                                'lang5' : imGetLang('deny') 
     452                                                        }; 
     453 
     454                                                        _win_subscription.content( 
     455                                                                _xtools.parse(_xtools.xml('subscribe'), 'subscribe.xsl', _params) 
     456                                                        ); 
     457 
     458                                                        _win_subscription.wc.childNodes[2].style.margin = '5px'; 
     459                                                        _win_subscription.wc.childNodes[3].style.margin = '5px'; 
     460 
     461                                                        _config( 
     462                                                                _win_subscription.wc.childNodes[2], 
     463                                                                'onclick', 
     464                                                                function() 
     465                                                                { 
     466                                                                        _win_subscription.wc.childNodes[1].style.display = 'block'; 
     467                                                                        _win_subscription.size(450); 
     468                                                                        _config( 
     469                                                                                _win_subscription.wc.childNodes[2], 
     470                                                                                'onclick', 
     471                                                                                function() 
     472                                                                                { 
     473 
     474                                                                                        var _status = top.document.getElementById('im_status_add_' + _from); 
     475                                                                                        var _name = top.document.getElementById('im_name_' + _from); 
     476                                                                                        var _group = top.document.getElementById('im_group_' + _from); 
     477 
     478                                                                                        _name.value = _name.value.replace(/^( )*|( )*$/g, ''); 
     479                                                                                        _group.value = _group.value.replace(/^( )*|( )*$/g, ''); 
     480 
     481                                                                                        if ( !(_name.value) || !(_group.value) ) 
     482                                                                                        { 
     483                                                                                                _status.innerHTML = '<br/>O campo destacado em vermelho é obrigatório!<br/>'; 
     484 
     485                                                                                                if ( !(_name.value) ) 
     486                                                                                                { 
     487                                                                                                        _name.previousSibling.style.color = "#f00"; 
     488                                                                                                        _status.innerHTML += '<br/>** Informe um "NOME" para o contato.'; 
     489                                                                                                } 
     490 
     491                                                                                                if ( !(_group.value) ) 
     492                                                                                                { 
     493                                                                                                        _group.previousSibling.style.color = "#f00"; 
     494                                                                                                        _status.innerHTML += '<br/>** Informe um "GRUPO" para o contato.'; 
     495                                                                                                } 
     496                                                                                        } 
     497                                                                                        else 
     498                                                                                        { 
     499                                                                                                _status.innerHTML = '<br/>Adicionado contanto, aguarde.<br/>'; 
     500 
     501                                                                                                _conn.go( 
     502                                                                                                        '$this.Ujabber.allowContact', 
     503                                                                                                        function() 
     504                                                                                                        { 
     505                                                                                                                _status.innerHTML = '<br/>Contato autorizado com "SUCESSO"!<br/>'; 
     506                                                                                                                _win_subscription.button(_win_subscription.bc); 
     507                                                                                                        }, 
     508                                                                                                        'uid='+_from.substr(0,_from.indexOf('@'))+'&name='+_name.value+'&group='+_group.value 
     509                                                                                                ); 
     510 
     511                                                                                                _name.value = ''; 
     512                                                                                                _group.value = ''; 
     513                                                                                        } 
     514                                                                                } 
     515                                                                        ); 
     516                                                                } 
     517                                                        ); 
     518                                                } 
    331519                                        } 
    332          
    333                                         im.presence(im.status); 
     520                                break; 
     521                                case 'unsubscribe' : 
     522                                case 'unsubscribed' : 
     523                                        _conn.go('$this.Ujabber.removeContact','jid=' + _from); 
     524                                break; 
     525                                default : //alert('readPresence : ' + _presence_type); 
     526                        } 
     527                } 
     528                else 
     529                { 
     530                        var _node = _pPresence.firstChild; 
     531                        while( _node ) 
     532                        { 
     533                                if ( _node.hasChildNodes() ) 
     534                                { 
     535                                        switch ( _node.nodeName ) 
     536                                        { 
     537                                                case "show" : 
     538                                                        if ( _img_status_contact ) 
     539                                                                _img_status_contact.style.backgroundImage = 'url(' + eval('im_' + _node.firstChild.nodeValue + '.src') + ')'; 
     540                                                break; 
     541                                                case "status" : 
     542                                                        if ( _mensagem_status_contact ) 
     543                                                        { 
     544                                                                if ( _node.firstChild.nodeValue ) 
     545                                                                        _mensagem_status_contact.innerHTML = _node.firstChild.nodeValue; 
     546                                                                _mensagem_status_contact.style.display = 'block'; 
     547                                                        } 
     548                                                break; 
     549                                                default : 
     550                                                        if ( _img_status_contact ) 
     551                                                                _img_status_contact.style.backgroundImage = 'url(' + im_available.src + ')'; 
     552                                        } 
    334553                                } 
    335                         } 
    336                         __this.send_presence = true; 
    337                 } 
    338                  
    339                 function readVcard(pVcard) 
    340                 { 
    341                          
    342                         switch(pVcard.getAttribute('id')) 
    343                         { 
    344                                 case "vCard_user" : 
    345  
    346                                         var vcard = pVcard.firstChild; 
    347                                         var cc = vcard.firstChild; 
    348                                         while( cc ) 
    349                                         { 
    350                                                 if(cc.nodeName == "NICKNAME" || cc.nodeName == "nickname") 
    351                                                 { 
    352                                                         if(cc.firstChild.nodeValue) 
    353                                                                 func.byId('im_layer_nickname').innerHTML = cc.firstChild.nodeValue; 
    354                                                 } 
    355                                                 cc = cc.nextSibling; 
    356                                         } 
    357                                         if( im.vcard ) 
    358                                                 templates.vcard_user(pVcard); 
    359                                         break; 
    360  
    361                                 case "vCard" : 
    362  
    363                                         var vcard = __this.xtools.parse(pVcard,'nickname.xsl');  
    364                                         im.nickname_contacts[vcard.substr(0,vcard.indexOf(','))] = ( vcard.substr(vcard.indexOf(',')+1) ) ? vcard.substr(vcard.indexOf(',')+1) : vcard.substr(0,vcard.indexOf(',')) ; 
    365                                         if( im.vcard ) 
    366                                                 templates.vcard_contact(pVcard); 
    367                                         break; 
    368                         } 
    369                 } 
    370  
    371                 function sendMessage(pMessage, pFrom) 
    372                 { 
    373                         function handler_sendMessage (data) 
    374                         { 
    375                         } 
    376  
    377                         var sendMessage = pMessage.innerHTML; 
    378                         pMessage.innerHTML = pMessage.innerHTML.replace(/^( )*|( )*$/g, ''); 
    379  
    380                         var send = false; 
    381                         var node = pMessage.firstChild; 
    382                          
    383                         while ( node && !send ) 
    384                         { 
    385                                 if ( node.nodeName.toLowerCase() != 'br' ) 
    386                                         send = true; 
    387                                 node = node.nextSibling; 
    388                         } 
    389  
    390                         if ( send ) 
    391                                 __this.con.go('$this.Ujabber.sendMessage', {'request':handler_sendMessage},"to="+pMessage.getAttribute('id')+"&body="+escape(pMessage.innerHTML)); 
    392                         pMessage.innerHTML = ''; 
    393                          
    394                         var win = im_window.elementC(pFrom); 
    395                         if ( win ) 
    396                         { 
    397                                 win = win.firstChild.firstChild; 
    398                                 win.innerHTML += "<b>" + im.get_lang("says") +":</br></b>" + sendMessage + "</br></br>"; 
    399                             win.scrollTop = win.scrollHeight;                                    
    400                         } 
    401                 } 
    402         } 
    403 }; 
     554                                _node = _node.nextSibling; 
     555                        } 
     556                } 
     557        } 
     558 
     559        function _sendMessage(_pJid, _pMessage, _pHistory) 
     560        { 
     561                var m1 = _pMessage = _pMessage.body.innerHTML; 
     562                var m2 = _pMessage = _pMessage.replace(/(&nbsp;)+|( )+/ig, ' '); 
     563                var m3 = _pMessage = _pMessage.replace(/(<br[^>]*>)+/ig, '<br/>'); 
     564                var m4 = _pMessage = _pMessage.replace(/^( )+|( )+$|^(<br\/>)|(<br\/>)$/g, ''); 
     565 
     566                //_pMessage = _pMessage.replace(/( )+(<br[^>]*>)+/g, '<br/>'); 
     567                //_pMessage = _pMessage.replace(/(<br[^>]*>)*( )+(<br[^>]*>)+/g, ''); 
     568                //_pMessage = _pMessage.replace(/^(<br[^>]*>)*|(<br[^>]*>)*$/g, ''); 
     569 
     570                if ( _pMessage != '' ) 
     571                { 
     572                        _conn.go('$this.Ujabber.sendMessage', "to=" + _pJid + "&body=" + escape(_pMessage)); 
     573 
     574                        if ( _pHistory.scrollHeight == (_pHistory.scrollTop + _pHistory.clientHeight) ) 
     575                        { 
     576                                _pHistory.innerHTML += '<b>' + imGetLang('says') + ':</b><br/>' + _pMessage + '<br/><br/>'; 
     577                            _pHistory.scrollTop = _pHistory.scrollHeight; 
     578                        } 
     579                        else 
     580                        // this "else" is to prevent the creation of a flag and the need to use another conditional 
     581                                _pHistory.innerHTML += '<b>' + imGetLang('says') + ':</b><br/>' + _pMessage + '<br/><br/>'; 
     582                } 
     583        } 
     584 
     585        function _action(_pAction) 
     586        { 
     587                //alert ( typeof pAction + "\n\n" + pAction.nodeName ) 
     588                if ( typeof _pAction == 'object' && _pAction.nodeName ) 
     589                { 
     590                        switch ( _pAction.nodeName ) 
     591                        { 
     592                                case 'iq' : 
     593                                        _readIq(_pAction); 
     594                                break; 
     595                                case 'message' : 
     596                                        _readMessage(_pAction); 
     597                                break; 
     598                                case 'presence' : 
     599                                        _readPresence(_pAction); 
     600                                break; 
     601                                //default : alert('action : ' + _pAction.nodeName); 
     602                        } 
     603                } 
     604        } 
     605 
     606        function Jabber() 
     607        { 
     608                _conn = arguments[0]; 
     609                _xtools = arguments[1]; 
     610                _window = arguments[2]; 
     611                _ldap = arguments[3]; 
     612        } 
     613 
     614        Jabber.prototype.action = _action; 
     615        window.Jabber = Jabber; 
     616} 
     617)(); 
  • trunk/instant_messenger/js/xtools.js

    r260 r305  
    1 function XTools() 
     1(function() 
    22{ 
    3 } 
     3        var _FILES = []; 
    44 
    5 XTools.prototype = { 
    6         'convert' : function(pString) 
     5        function _convert(pString) 
    76        { 
    87                if ( typeof pString != 'string' ) 
    98                        return false; 
    109 
    11                 if (window.ActiveXObject) 
     10                if ( window.ActiveXObject ) 
    1211                { 
    13                         var xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
    14                         xmlDoc.async = "false"; 
    15                         xmlDoc.loadXML(pString); 
     12                        var _xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 
     13                        _xmlDoc.async = "false"; 
     14                        _xmlDoc.loadXML(pString); 
    1615                } 
    1716                else 
    1817                { 
    1918                        var parser = new DOMParser(); 
    20                         var xmlDoc = parser.parseFromString(pString, "text/xml"); 
     19                        var _xmlDoc = parser.parseFromString(pString, "text/xml"); 
    2120                } 
    2221 
    23                 return xmlDoc; 
    24         }, 
    25         'load' : function(pFile) 
     22                return _xmlDoc; 
     23        } 
     24 
     25        function _load(pFile) 
    2626        { 
    27                 var data = null; 
    28                 if ( document.implementation.createDocument ) 
    29                         data = document.implementation.createDocument("", "", null); 
     27                pFile = this._PATH + 'xsl/' + pFile; 
     28                if ( !(_FILES[pFile]) ) 
     29                { 
     30                        var _data = null; 
     31                        if ( document.implementation.createDocument ) 
     32                                _data = document.implementation.createDocument("", "", null); 
     33                        else 
     34                                _data = new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); 
     35 
     36                        _data.async = false; 
     37                        _data.load(pFile + '?' + Date.parse(new Date)); 
     38                        _FILES[pFile] = _data; 
     39                } 
     40                return _FILES[pFile]; 
     41        } 
     42 
     43        function _parse() 
     44        { 
     45                if ( arguments.length == 1 ) 
     46                { 
     47                        pXML = _xml('root'); 
     48                        pXSL = arguments[0]; 
     49                } 
    3050                else 
    31                         data = new ActiveXObject("Msxml2.FreeThreadedDOMDocument"); 
     51                { 
     52                        pXML = arguments[0]; 
     53                        pXSL = arguments[1]; 
     54                } 
     55                switch ( typeof pXML ) 
     56                { 
     57                        case 'object' : 
     58                        break; 
     59                        case 'string' : 
     60                                if ( pXML.indexOf('<') == 0 ) 
     61                                        pXML = _convert(pXML); 
     62                                else 
     63                                        pXML = _load.call(this, pXML); 
     64                        break; 
     65                        default : 
     66                                return {'error':'invalid xml'} 
     67                } 
     68                switch ( typeof pXSL ) 
     69                { 
     70                        case 'object' : 
     71                        break; 
     72                        case 'string' : 
     73                                pXSL = _load.call(this, pXSL); 
     74                        break; 
     75                        default : 
     76                                return {'error':'invalid xsl'} 
     77                } 
    3278 
    33                 data.async = false; 
    34                 data.load( path_im + 'xsl/' + pFile + '?' + Date.parse(new Date)); 
    35                 return data; 
    36         }, 
    37         'parse' : function(pXML, pXSL) 
    38         { 
    39                 try 
     79                var fragment = null; 
     80                if ( window.XSLTProcessor ) 
    4081                { 
    41                         switch ( typeof pXML ) 
     82                        var xslProc = new XSLTProcessor(); 
     83                        xslProc.importStylesheet(pXSL); 
     84 
     85                        if ( (arguments.length == 3) && (typeof arguments[2] == 'object') ) 
    4286                        { 
    43                                 case 'object' : 
    44                                 break; 
    45                                 case 'string' : 
    46                                         if ( pXML.indexOf('<') == 0 ) 
    47                                                 pXML = this.convert(pXML); 
    48                                         else 
    49                                                 pXML = this.load(pXML); 
    50                                 break; 
    51                                 default : 
    52                                         return {'error':'invalid xml'} 
    53                         } 
    54                         switch ( typeof pXSL ) 
    55                         { 
    56                                 case 'object' : 
    57                                 break; 
    58                                 case 'string' : 
    59                                         pXSL = this.load(pXSL); 
    60                                 break; 
    61                                 default : 
    62                                         return {'error':'invalid xsl'} 
     87                                var params = arguments[2]; 
     88                                for (var i in params ) 
     89                                         xslProc.setParameter(null, i, params[i]); 
    6390                        } 
    6491 
    65                         var fragment = null; 
    66                         if ( window.XSLTProcessor ) 
     92                        fragment = xslProc.transformToFragment(pXML, document); 
     93 
     94                        // para retornar valor igual ao ie. 
     95                        var aux = document.createElement("div"); 
     96                        aux.appendChild(fragment); 
     97                        fragment = aux.innerHTML; 
     98                } 
     99                else 
     100                { 
     101                        var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate"); 
     102                        xslTemplate.stylesheet = pXSL; 
     103 
     104                        var xslProc = xslTemplate.createProcessor(); 
     105                        xslProc.input = pXML; 
     106 
     107                        if ( (arguments.length == 3) && (typeof arguments[2] == 'object') ) 
    67108                        { 
    68                                 var xslProc = new XSLTProcessor(); 
    69                                 xslProc.importStylesheet(pXSL); 
    70                                 fragment = xslProc.transformToFragment(pXML, document); 
     109                                var params = arguments[2]; 
     110                                for (var i in params ) 
     111                                         xslProc.addParameter(i, params[i], ''); 
     112                        } 
    71113 
    72                                 // para retornar valor igual ao ie. 
    73                                 var aux = document.createElement("div"); 
    74                                 aux.appendChild(fragment); 
    75                                 fragment = aux.innerHTML; 
    76                         } 
    77                         else 
    78                         { 
    79                                 var xslTemplate = new ActiveXObject("MSXML2.XSLTemplate"); 
    80                                 xslTemplate.stylesheet = pXSL; 
     114                        xslProc.transform(); 
     115                        fragment = xslProc.output; 
     116                } 
     117                return fragment; 
     118        } 
    81119 
    82                                 var myXslProc = xslTemplate.createProcessor(); 
    83                                 myXslProc.input = pXML; 
     120        function _xml() 
     121        { 
     122                var a = false; 
     123                if ( document.implementation.createDocument ) 
     124                        a = document.implementation.createDocument("", "", null); 
     125                else if ( ActiveXObject ) 
     126                        a = new ActiveXObject("Msxml2.DOMDocument"); 
    84127 
    85                                 myXslProc.transform(); 
    86                                 fragment = myXslProc.output; 
    87                         } 
    88                         return fragment; 
    89                 } 
    90                 catch(e) 
    91                 { 
    92                         alert("transform\n\n" + e + "\n\n" + e.description); 
    93                 } 
    94         }, 
    95         'xml' : function() 
     128                if ( arguments.length == 1 && typeof arguments[0] == 'string' ) 
     129                        a.appendChild(a.createElement(arguments[0])); 
     130                //with ( a ) 
     131                //      appendChild(createProcessingInstruction("xml", "version='1.0'")); 
     132 
     133                return a; 
     134        } 
     135 
     136        function XTools() 
    96137        { 
    97                 try 
    98                 { 
    99                         var a = false; 
    100                         if ( document.implementation.createDocument ) 
    101                                 a = document.implementation.createDocument("", "", null); 
    102                         else if ( ActiveXObject ) 
    103                                 a = new ActiveXObject("Msxml2.DOMDocument"); 
     138                var _argv = arguments; 
     139                this._PATH = ( _argv.length > 0 ) ? 
     140                        _argv[0] : ''; 
     141                if ( this._PATH != '' && this._PATH.lastIndexOf('/') != (this._PATH.length - 1) ) 
     142                        this._PATH += '/'; 
     143        } 
    104144 
    105                         //with ( a ) 
    106                         //      appendChild(createProcessingInstruction("xml", "version='1.0'")); 
    107  
    108                         return a; 
    109                 } 
    110                 catch(e) 
    111                 { 
    112                         alert("create\n\n" + e + "\n\n" + e.description); 
    113                 } 
    114         } 
    115 }; 
     145        XTools.prototype.convert = _convert; 
     146        XTools.prototype.load = _load; 
     147        XTools.prototype.parse = _parse; 
     148        XTools.prototype.xml = _xml; 
     149        window.XTools = XTools; 
     150} 
     151)(); 
  • trunk/instant_messenger/templates/default/css/chat.css

    r287 r305  
    11/***** Chat  *****/ 
    22 
    3 .avatar 
     3.chat_buttons 
    44{ 
    5         width:  49px; 
    6         height: 65px; 
    7         margin: 2px; 
    8         border: 1px solid; 
    9         border-color: #cecece; 
     5        cursor: pointer; 
     6        float: left; 
     7        height: 20px; 
     8        margin: 2px 2px 0 0; 
     9        position: relative; 
     10        width:  25px; 
    1011} 
    1112 
     
    1314{ 
    1415        background: url(../images/bold.gif) no-repeat top center; 
    15         height: 20px;  
    16         width:  25px;  
    17         float: left; 
    18         position: relative; 
    19         margin-top: 2px; 
    20         margin-right: 2px; 
    21         cursor: pointer; 
     16        display: none; 
    2217} 
    2318 
     
    2520{ 
    2621        background: url(../images/italicize.gif) no-repeat top center; 
    27         height: 20px;  
    28         width:  25px;  
    29         float: left; 
    30         position: relative; 
    31         margin-top: 2px; 
    32         margin-right: 2px; 
    33         cursor: pointer; 
     22        display: none; 
    3423} 
    3524 
     
    3726{ 
    3827        background: url(../images/underline.gif) no-repeat top center; 
    39         height: 20px; 
    40         width:  25px; 
    41         float: left; 
    42         margin-top: 2px; 
    43         margin-right: 2px; 
    44         position: relative; 
    45         cursor: pointer; 
     28        display: none; 
    4629} 
    4730 
     
    4932{ 
    5033        background: url(../images/color.gif) no-repeat top center; 
    51         height: 20px; 
    52         width: 25px; 
    53         float: left; 
    54         position: relative; 
    55         margin-top: 2px; 
    56         margin-right: 2px; 
    57         cursor: pointer; 
     34        display: none; 
    5835} 
    5936 
     
    6138{ 
    6239        background: url(../images/emoticonlabel.gif) no-repeat top center; 
    63         height: 19px; 
    64         width: 21px; 
    65         float: left; 
    66         position: relative; 
    67         margin-top: 2px; 
    68         cursor: pointer; 
     40        display: none; 
    6941} 
    7042 
     
    7244{ 
    7345        background: url(../images/profileBuddy.gif) no-repeat top center; 
    74         height: 20px; 
    75         width: 25px; 
    76         float: left; 
    77         position: relative; 
    78         margin-top: 2px; 
    79         margin-left: 2px; 
    80         cursor: pointer; 
    8146} 
    8247 
    83 .button_sendMessage 
     48.composing 
     49{ 
     50        background: url(../images/typing.gif) no-repeat top center; 
     51        display: none; 
     52        float:right; 
     53        position: relative; 
     54} 
     55 
     56.sendMessage 
    8457{ 
    8558        background: url(../images/barn.gif) repeat top center; 
     59        border: 1px solid #cecece; 
     60        color: #fff !important; 
     61        cursor: pointer; 
     62        float:right; 
     63        font: 12px Verdana, arial, helvetica, serif; 
     64        font-weight: bold; 
    8665        height: 20px; 
     66        margin-top: 3px; 
     67        position: relative; 
     68        overflow: hidden; 
     69        text-align: center; 
    8770        width: 50px; 
    88         color: #fff !important; 
    89         font: 9pt Verdana, arial, helvetica, serif; 
    90         font-weight: bold; 
    91         cursor: pointer; 
    92 } 
    93  
    94 .div_sendMessage 
    95 { 
    96         float:right; 
    97         position: relative; 
    98         margin-top: 3px; 
    99         margin-left: 60px; 
    10071} 
    10172 
     
    10576        border: 1px solid; 
    10677        border-color: #b3b3b3 #cecece #cecece #b3b3b3; 
    107         width:  289px; 
    10878        height: 180px; 
    10979        cursor: text; 
     
    12090        border-color: #b3b3b3 #cecece #cecece #b3b3b3; 
    12191        cursor: text; 
    122         height: 65px;  
    123         padding-right:50px; 
    124         width:  auto; 
     92        height: 65px; 
     93        padding-right:50px !important; 
    12594} 
    12695 
    12796.toolbar_buttons 
    12897{ 
    129         width:289px;  
    130         height:29px;  
     98        height:29px; 
    13199} 
    132100 
  • trunk/instant_messenger/templates/default/css/common.css

    r275 r305  
    11/* IM:WINDOW - ADD USER */ 
    22 
    3 select.add_user 
     3div.add_organization_members 
    44{ 
    5    font: 8pt Verdana, Arial, Helvetica, sans-serif;    
    6    font-weight:   normal; 
    7    border-color:  #809aa9; 
    8    border-width:  1px 1px; 
    9    border-style:  solid; 
    10    margin:        2px 2px 2px 2px; 
    11    width:         400px; 
    12  
    13  
     5        margin-bottom: 10px; 
    146} 
    157 
    16 table.add_user 
     8div.add_organization_members span 
    179{ 
    18         margin-left:    5px; 
    19         margin-top:             5px; 
     10        border-bottom: 1px solid #809aa9; 
     11        float:left; 
     12        font-size: 8pt !important; 
     13        font-family: Arial, Verdana, helvetica, sans-serif !important; 
     14        font-weight: bold; 
     15        position:aboslute; 
     16        width: 200px; 
    2017} 
    2118 
    22 td.add_user 
     19div.add_organization_members div 
    2320{ 
     21        font-weight: normal; 
     22        margin: 2px; 
     23        padding: 3px; 
     24        height: 150px; 
     25        overflow: auto; 
     26} 
     27 
     28div.add_organization_members div span 
     29{ 
     30        border-bottom: 1px dashed #809aa9; 
     31        clear:both; 
     32        float:left; 
     33        font-weight: normal; 
     34        letter-spacing: 0.2em; 
     35        padding: 4px 0; 
     36        width: 98% 
     37} 
     38 
     39div.add_organization_members div#im_ldap_ou 
     40{ 
     41        float: left; 
     42        width: 200px; 
     43} 
     44 
     45div.add_member_info 
     46{ 
     47        margin: 10px 0; 
     48        display: none; 
     49} 
     50 
     51div.add_member_info span 
     52{ 
     53        float: left; 
    2454        font: 8pt Verdana, Arial, Helvetica, sans-serif; 
     55        font-weight: bold; 
     56        margin-right: 3px; 
     57        text-align: right; 
     58        width: 80px; 
     59} 
     60 
     61div.add_action 
     62{ 
     63        padding-bottom: 30px; 
     64        margin-left: 83px; 
     65        display: none; 
     66} 
     67 
     68div.add_action span 
     69{ 
     70        background: #b4cfe5; 
     71        border: 1px solid; 
     72        float: left; 
     73        font: 8pt Verdana, Arial, Helvetica, sans-serif; 
     74        font-weight: bold; 
     75        letter-spacing: 1px; 
     76        margin-right: 5px; 
     77        padding: 0 15px; 
     78        text-align: center; 
     79        line-height: 1.5em; 
     80} 
     81 
     82span.im_button 
     83{ 
     84        background: #b4cfe5; 
     85        border: 1px solid; 
     86        font: 8pt Verdana, Arial, Helvetica, sans-serif; 
     87        font-weight: bold; 
     88        letter-spacing: 1px; 
     89        padding: 0 15px; 
     90        text-align: center; 
     91        line-height: 1.5em; 
    2592} 
    2693 
     
    3299.layer 
    33100{ 
     101        background: url(../images/photo.png) no-repeat 2px 2px; 
    34102        border: 1px solid #b4cfe5; 
     103        height: 65px; 
    35104        margin: 2px; 
     105        padding: 2px 0px 2px 54px; 
    36106} 
    37107 
  • trunk/instant_messenger/templates/default/css/window.css

    r260 r305  
    2323#instant_messenger_content .titulo 
    2424{ 
     25        background: #b4cfe5; 
     26        cursor: pointer; 
    2527        font: 8pt Verdana, Arial, Helvetica, sans-serif; 
    26         background: #b4cfe5; 
     28        height: 20px; 
    2729        margin: 0px 0px; 
    2830        padding: 0px 0px 0px 5px; 
    29         cursor: pointer; 
    30         height: 20px; 
     31        overflow: hidden; 
    3132} 
    3233 
     
    3435{ 
    3536        cursor: pointer; 
    36         float: left; 
     37        float: right; 
    3738        margin-right: 2px; 
    3839        position: relative; 
    3940        width: 13px; 
    4041        height:13px; 
     42} 
     43 
     44#instant_messenger_content .buttons 
     45{ 
     46        position:absolute !important; 
     47        right:3px !important; 
     48        width:50px !important; 
    4149} 
    4250 
     
    7078        margin: 0px 5px; 
    7179        cursor: default; 
     80        overflow: auto; 
    7281} 
    7382 
  • trunk/instant_messenger/webjabber/webjabber.c

    r287 r305  
    621621        strcpy(type, type_pos); 
    622622 
    623         //printf(" str[%2d]: %s\n", strlen(str), str); 
    624         //printf("user[%2d]: %s\n", strlen(user), user); 
    625         //printf("pass[%2d]: %s\n", strlen(pass), pass); 
    626         //printf("type[%2d]: %s\n", strlen(type), type); 
    627         //printf("  fd[%2d]: client\n", *(accept->fd)); 
     623        printf(" str[%2d]: %s\n", strlen(str), str); 
     624        printf("user[%2d]: %s\n", strlen(user), user); 
     625        printf("pass[%2d]: %s\n", strlen(pass), pass); 
     626        printf("type[%2d]: %s\n", strlen(type), type); 
     627        printf("  fd[%2d]: client\n", *(accept->fd)); 
    628628 
    629629        //if ( (client = LookFor (user, pass)) != (struct client *)NULL ) 
     
    840840                if ( strlen(buf_2_jabber) > 0 ) 
    841841                { 
    842                         //printf("(client/jabber[#%d])[%d]:\n{\n%s.......\n}\n", jabber_fd, strlen(buf_2_jabber), buf_2_jabber); 
     842                        printf("(client/jabber[#%d])[%d]:\n{\n%s.......\n}\n", jabber_fd, strlen(buf_2_jabber), buf_2_jabber); 
    843843                        if ( strstr(buf_2_jabber, "<?xml") != NULL ) 
    844844                                do_auth = 1; 
     
    862862                if ( strlen(buf_2_client) > 0 ) 
    863863                { 
    864                         //printf("(jabber/client[#%d])[%d]:\n{\n%s.......\n}\n", client_fd, strlen(buf_2_client), buf_2_client); 
    865864                        if ( do_auth && strstr(buf_2_jabber, "<iq xmlns='jabber:client'") != NULL ) 
    866865                                do_auth = 0; 
     866                        printf("(jabber/client[#%d])[%d]:\n{\n%s.......\n}\n", client_fd, strlen(buf_2_client), buf_2_client); 
    867867                } 
    868868 
     
    871871        while ( (bytes_rcvd_client != 0) && (bytes_rcvd_jabber != 0) ); 
    872872 
    873         //puts("\n\n\nFIM.......................\n\n\n"); 
     873        puts("\n\n\nFIM.......................\n\n\n"); 
    874874 
    875875        free(buf_2_jabber); 
  • trunk/instant_messenger/xsl/add_user.xsl

    r275 r305  
    11<?xml version="1.0" encoding="ISO-8859-1"?> 
    22<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    3 <xsl:output method="html" omit-xml-declaration="yes"/> 
     3        <xsl:output method="html" omit-xml-declaration="yes"/> 
    44 
    5 <xsl:template match="adduser"> 
     5        <xsl:param name="lang1" /> 
     6        <xsl:param name="lang2" /> 
     7        <xsl:param name="lang3" /> 
     8        <xsl:param name="lang4" /> 
     9        <xsl:param name="lang5" /> 
     10        <xsl:param name="lang6" /> 
    611 
    7         <div style="margin-left:5px;margin-top:5px"> 
    8                 <span style="font-size:8pt !important; font-family: Arial, Verdana, helvetica, sans-serif !important; position:aboslute; float:left;"> 
    9                         <b><xsl:value-of select="top/lang1"/> .: </b> 
    10                 </span> 
    11                 <br/> 
    12                 <select id="im_ldap_ou" onclick="javascript:im.ldap_search_ou(this);" size="10"></select> 
    13                 <span id="__span_load_im" style="background-color:#cc4444;color:white;display:none;position:absolute;right:5px;top:26px">Carregando .....</span>         
    14                 <select id="im_ldap_user" size="10" class="add_user" onclick="im.ldap_adduser(this);"></select> 
    15         </div> 
     12        <xsl:template match="adduser"> 
    1613 
    17         <table border="0" cellpadding="1" cellspacing="2" class="add_user"> 
    18                 <tr> 
    19                         <td class="add_user"><b><xsl:value-of select="table/lang1"/>.:</b></td> 
    20                         <td><input id="im_jid" type="text" size="40" maxlength="40" readonly="true" class="add_user" /></td>             
    21                 </tr> 
    22                 <tr> 
    23                         <td class="add_user"><b><xsl:value-of select="table/lang2"/>.:</b></td> 
    24                         <td><input id="im_name" type="text" size="20" maxlength="20" class="add_user" onclick="javascript:im.focus_select(this,event);" onmousedown="javascript:im.focus_select(this,event);"/></td>             
    25                 </tr> 
    26                 <tr> 
    27                         <td class="add_user"><b><xsl:value-of select="table/lang3"/>.:</b></td> 
    28                         <td><input id="im_group" type="text" size="20" maxlength="20" class="add_user" onclick="javascript:im.focus_select(this,event);" onmousedown="javascript:im.focus_select(this,event);"/></td>            
    29                 </tr> 
    30                 <tr> 
    31                         <td><input id="im_uid" type="hidden" size="30" maxlength="30" /></td> 
    32                 </tr>                                                    
    33                 <tr> 
    34                         <td colspan="2"> 
    35                                 <input type="button" value="{table/lang4}" onclick="javascript:im.adduser();"/> 
    36                                 <input type="button" value="{table/lang5}" onclick="javascript:im_window.window_close('add_user_im');" /> 
    37                                 <span id="im_status_add" style="color:#f00;font-weight:bold;margin-left:10px;"></span>                   
    38                         </td> 
    39                 </tr> 
    40         </table> 
     14                <div class="add_organization_members"> 
     15                        <span style="margin: 5px;"><xsl:value-of select="$lang1"/> .: </span> 
     16                        <span style="margin: 5px; width:auto;"><xsl:value-of select="$lang2"/> .: </span> 
     17                        <br style="clear:both"/> 
     18                        <div id="im_ldap_ou"></div> 
     19                        <div id="im_ldap_user"></div> 
     20                </div> 
    4121 
    42 </xsl:template> 
     22                <div class="add_member_info"> 
     23                        <span><xsl:value-of select="$lang3"/> :</span> 
     24                        <input style="" id="im_name" type="text" size="50" maxlength="50" class="add_user" onclick="this.select();"/> 
     25                        <br/><br style="line-height:4px"/> 
     26                        <span><xsl:value-of select="$lang4"/> :</span> 
     27                        <input id="im_group" type="text" size="50" maxlength="50" class="add_user" onclick="this.select();"/> 
     28                </div> 
     29 
     30                <div class="add_action"> 
     31                        <span><xsl:value-of select="$lang5"/></span> 
     32                        <span><xsl:value-of select="$lang6"/></span> 
     33                </div> 
     34 
     35                <span id="im_status_add" style="color:#f00;font-weight:bold;"></span> 
     36                <span id="__span_load_im" style="background-color:#cc4444;color:white;display:none;position:absolute;right:5px;top:26px">Carregando .....</span> 
     37                <input id="im_jid" type="hidden" /> 
     38                <input id="im_uid" type="hidden" /> 
     39 
     40        </xsl:template> 
    4341 
    4442</xsl:stylesheet> 
  • trunk/instant_messenger/xsl/chat.xsl

    r287 r305  
    11<?xml version="1.0" encoding="ISO-8859-1"?> 
    22<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    3 <xsl:output method="html" omit-xml-declaration="yes"/> 
     3        <xsl:output method="html" omit-xml-declaration="yes"/> 
    44 
    5 <xsl:template match="/window"> 
    6         <div id="{name}__window_master" style="width:{width};" class="window" onmousedown="javascript:drag_drop.drag(event,this); javascript:im_window.window_focus(this);" dragdrop="true"> 
    7                 <b class="corner blackcorner"> 
    8                         <b class="corner1 blackcorner1"><b></b></b> 
    9                         <b class="corner2 blackcorner2"><b></b></b> 
    10                         <b class="corner3 blackcorner3"></b> 
    11                         <b class="corner4 blackcorner4"></b> 
    12                         <b class="corner5 blackcorner5"></b> 
    13                 </b> 
    14                 <div id="{name}__window_title" class="titulo" dragdrop="true"> 
    15                         <span id="{name}__window_title" style="float:left;" dragdrop="true"> 
    16                                 <xsl:value-of select="title" /> 
    17                         </span> 
    18                         <div id="{name}__window_title_buttons" style="float:right;"> 
    19                                 <div id="{name}__button_minimize" style="display: {pButMin};" class="button_minimize" onclick="javascript:im_window.window_minimize('{name}');"></div> 
    20                                 <div id="{name}__button_maximize" style="display: {pButMax};" class="button_maximize1" onclick="javascript:im_window.window_maximize('{name}');"></div> 
    21                                 <div id="{name}__button_close" style="display: {pButClose};" class="button_close" onclick="javascript:im_window.window_close('{name}');"></div> 
    22                         </div> 
     5        <xsl:template match="/"> 
     6                <div class="history"></div> 
     7                <div class="toolbar_buttons"> 
     8                        <div class="chat_buttons button_bold"></div> 
     9                        <div class="chat_buttons button_italic"></div> 
     10                        <div class="chat_buttons button_underline"></div> 
     11                        <div class="chat_buttons button_color"></div> 
     12                        <div class="chat_buttons button_emoticons"></div> 
     13                        <div class="chat_buttons button_profile"></div> 
     14                        <div class="chat_buttons button_popup"></div> 
     15                        <div class="sendMessage">SEND</div> 
     16                        <div class="chat_buttons composing"></div> 
    2317                </div> 
    24                 <div id="{name}__window_body" class="body"> 
    25                         <div id="{name}__window_body_content" class="content"> 
    26                                 <div style="margin:3px 3px;"> 
    27                                         <div class="history"></div> 
    28                                         <div class="toolbar_buttons"> 
    29                                                 <div id="{name}__button_bold" class="button_bold" onclick="javascript:im.conf_font('{name}','button_bold');"></div> 
    30                                                 <div id="{name}__button_italic" class="button_italic" onclick="javascript:im.conf_font('{name}','button_italic');"></div> 
    31                                                 <div id="{name}__button_underline" class="button_underline" onclick="javascript:im.conf_font('{name}','button_underline');"></div> 
    32                                                 <div id="{name}__button_color" class="button_color" onclick="javascript:im.conf_font('{name}','button_color');"></div> 
    33                                                 <div id="{name}__button_emoticons" class="button_emoticons" onclick="javascript:im.conf_font('{name}','button_emoticons');"></div> 
    34                                                 <div id="{name}__button_profile" class="button_profile" onclick="im.request_vcard('{name}','contact');"></div> 
    35                                                 <div id="{name}__button_sendMessage" class="div_sendMessage"><input type="button" class="button_sendMessage" value="Send" onclick="im.SendMessage('{name}');"/></div> 
    36                                                 <div id="{name}__button_dest"></div>                                             
    37                                         </div> 
    38                                         <div id="{name}__avatar" class="messages"></div> 
    39                                 </div> 
    40                         </div> 
    41                 </div> 
    42                 <div id="{name}__window_bottom" class="rodape" dragdrop="false"></div> 
    43         </div> 
    44 </xsl:template> 
     18                <div class="messages"></div> 
     19        </xsl:template> 
    4520 
    4621</xsl:stylesheet> 
  • trunk/instant_messenger/xsl/contacts.xsl

    r260 r305  
    11<?xml version="1.0" encoding="ISO-8859-1"?> 
    22<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    3 <xsl:output method="html" omit-xml-declaration="yes"/> 
     3        <xsl:output method="html" omit-xml-declaration="yes"/> 
    44 
    5 <xsl:template match="iq/query"> 
    6                 <xsl:apply-templates select="." mode="list" />   
    7 </xsl:template> 
     5        <xsl:param name="path" /> 
    86 
    9 <xsl:template match="*" mode="list"> 
    10    <div id="im_contact_list" style="margin:2px;width:auto;height:200px;overflow-y:auto;"> 
    11            <xsl:for-each select="item"> 
    12                         <xsl:sort select="group" case-order="upper-first" /> 
     7        <xsl:template match="iq/query"> 
     8                <xsl:apply-templates select="." mode="list" /> 
     9        </xsl:template> 
     10 
     11        <xsl:template match="*" mode="list"> 
     12                <div id="im_contact_list" style="margin:2px;"> 
     13                        <xsl:for-each select="item"> 
     14                                <xsl:sort select="group" case-order="upper-first" /> 
     15                                <xsl:choose> 
     16                                        <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> 
     19                                                <xsl:apply-templates select="." mode="contacts"/> 
     20                                        </xsl:when> 
     21                                        <xsl:otherwise> 
     22                                                <xsl:apply-templates select="." mode="contacts"/> 
     23                                        </xsl:otherwise> 
     24                                </xsl:choose> 
     25                        </xsl:for-each> 
     26                </div> 
     27        </xsl:template> 
     28 
     29        <xsl:template match="*" mode="contacts"> 
     30                <div style="background:url({$path}templates/default/images/unavailable.gif) no-repeat 15px;padding-left:30px;cursor:pointer;display:block;" id="contact_{@jid}" idgroup="{group}" idname="{@name}" jid="{@jid}"> 
    1331                        <xsl:choose> 
    14                                 <xsl:when test="not(group = preceding-sibling::item/group)"> 
    15                                         <img id="group_{group[current()]}" src="instant_messenger/templates/default/images/group_open.gif" onclick="javascript:im.group_close('{group[current()]}');"/> 
    16                                         <b><xsl:value-of select="group[current()]" /><br/></b> 
    17                                         <xsl:apply-templates select="." mode="contacts"/> 
     32                                <xsl:when test="@name"> 
     33                                        <xsl:value-of select="@name"/> 
    1834                                </xsl:when> 
    1935                                <xsl:otherwise> 
    20                                         <xsl:apply-templates select="." mode="contacts"/> 
     36                                        <xsl:value-of select="@jid"/> 
    2137                                </xsl:otherwise> 
    2238                        </xsl:choose> 
    23            </xsl:for-each> 
    24         </div>     
    25 </xsl:template> 
    26  
    27 <xsl:template match="*" mode="contacts"> 
    28  
    29         <xsl:choose> 
    30                 <xsl:when test="@name"> 
    31                         <div style="margin-left:15px;cursor:pointer;display:block;" id="{@jid}" idgroup="{group}" idname="{@name}" onmousedown="templates.options(event, '{@jid}');"> 
    32                                 <img id="img_{@jid}" src="instant_messenger/templates/default/images/unavailable.gif" style="margin:0px 2px" /> 
    33                                 <xsl:value-of select="@name"/> 
    34                                 <br/> 
    35                                 <span id="status_{@jid}" style="font-size:8pt; font-family:Verdana, Arial, Helvetica, sans-serif; font-style:italic; display:none" /> 
    36                         </div> 
    37                         <span id="sub_{@jid}"></span>                                                    
    38                 </xsl:when> 
    39                 <xsl:otherwise> 
    40                         <div style="margin-left:15px;cursor:pointer;display:block;" id="{@jid}" idgroup="{group}" idname="" onmousedown="templates.options(event, '{@jid}');"> 
    41                                 <img id="img_{@jid}" src="instant_messenger/templates/default/images/unavailable.gif" style="margin:0px 2px" /> 
    42                                 <xsl:value-of select="@jid"/> 
    43                                 <br/> 
    44                                 <span id="status_{@jid}" style="font-size:8pt; font-family:Verdana, Arial, Helvetica, sans-serif; font-style:italic; display:none;" /> 
    45                         </div> 
    46                         <span id="sub_{@jid}"></span>                    
    47                 </xsl:otherwise> 
    48         </xsl:choose> 
    49          
    50 </xsl:template> 
     39                        <br/> 
     40                        <span id="status_{@jid}" style="font-size:8pt; font-family:Verdana, Arial, Helvetica, sans-serif; font-style:italic; display:none" /> 
     41                </div> 
     42                <span id="sub_{@jid}" style="background:#b4cfe5; font:8pt; position: absolute; display:none"></span> 
     43        </xsl:template> 
    5144 
    5245</xsl:stylesheet> 
  • trunk/instant_messenger/xsl/disconnected.xsl

    r287 r305  
    55<xsl:template match="/disconnected"> 
    66        <div class="disconnected"> 
    7                 <div style="background:url('{path}templates/default/images/logo.png');width:32px;height:32px;margin:2px"></div> 
    8                 <font style="font-weight:bold;margin:5px"><center>Aviso</center> </font> 
    9                 <div style="margin:5px; font-size: 8pt; font-family: Arial, Verdana, helvetica, sans;"> 
    10                         Sua conexão com o Servidor parou. 
     7                <img src="{path}templates/default/images/logo.png" align="bottom" style="margin:2px"/> 
     8                <font style="font-weight:bold;margin:5px">Expresso Messenger</font> 
     9                <br/> 
     10                <br/> 
     11                <font style="font-weight:bold;margin:5px"> Aviso : </font> 
     12                <br/> 
     13                <br/> 
     14                <div style="margin:5px">  
     15                        Sua conexão com o  
    1116                        <br/> 
    12                         Tente novamente ou entre em   
     17                        Servidor parou. 
    1318                        <br/> 
    14                         contato com o Administrador. 
     19                        Tente novamente  
     20                        <br/> 
     21                        ou entre em contato 
     22                        <br/> 
     23                        com o Administrador. 
    1524                </div> 
    1625                <br/> 
    17                 <div onclick="disconnected = false; client();" style="background:url('{path}templates/default/images/server_connect.png') no-repeat;padding-left:16px;height:16px;margin:3px;cursor:pointer"> 
    18                         <font style="font-size:7pt;margin:2px">Reconectar ...</font> 
    19                 </div> 
     26                <br/> 
     27                <img src="{path}templates/default/images/available.gif" /> 
     28                <a href="javascript:InstantMessengerReconnect();"><font style="font-size:7pt;margin:2px">Reconectar ...</font></a> 
    2029        </div> 
    2130</xsl:template> 
  • trunk/instant_messenger/xsl/layer.xsl

    r287 r305  
    11<?xml version="1.0" encoding="ISO-8859-1"?> 
    22<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    3 <xsl:output method="html" omit-xml-declaration="yes"/> 
     3        <xsl:output method="html" omit-xml-declaration="yes"/> 
    44 
    5 <xsl:template match="/layer"> 
    6    <div class="layer">   
    7                 <table border="0" cellpadding="0" cellspacing="0" class="font_menu"> 
    8                         <tr> 
    9                                 <td> 
    10                                         <img id="im__avatar" src="{path}templates/default/images/photo.png" style="margin:2px;"/> 
    11                                 </td> 
    12                                 <td style="valign:top"> 
    13                                         <span style="font-weight:bold;"><xsl:value-of select="lang1" /> : </span>  
    14                                         <br></br> 
    15                                         <span id="im_layer_nickname"><xsl:value-of select="nickname" /></span> 
    16                                         <br></br> 
    17                                         <br></br> 
    18                                         <img src="{path}templates/default/images/addBuddy1.gif" style="cursor:pointer;" onclick="javascript:templates.add_user();" title="{lang2}" alt="{lang2}"/> 
    19                                         <img src="{path}templates/default/images/console_prefs1.png" style="cursor:pointer;" onclick="javascript:templates.preferences('span_preferences');" title="{lang3}" alt="{lang3}"/>                                     
    20                                         <span id="span_preferences"></span> 
    21                                         <br></br> 
    22                                 </td>    
    23                         </tr>            
    24                 </table> 
    25    </div>                
    26 </xsl:template> 
     5        <xsl:param name="lang1" /> 
     6        <xsl:param name="lang2" /> 
     7        <xsl:param name="lang3" /> 
     8        <xsl:param name="nickname" /> 
     9 
     10        <xsl:template match="/layer"> 
     11                <div class="layer"> 
     12                        <span style="font-weight:bold;"><xsl:value-of select="$lang1" /> : </span><br/> 
     13                        <span id="im_layer_nickname"><xsl:value-of select="$nickname" /></span><br/><br/> 
     14                        <img src="../instant_messenger/templates/default/images/addBuddy1.gif" style="cursor:pointer;" title="{$lang2}" alt="{$lang2}"/> 
     15                        <!-- 
     16                        <img src="../instant_messenger/templates/default/images/console_prefs1.png" style="cursor:pointer;" onclick="javascript:templates.preferences('span_preferences');" title="{$lang3}" alt="{$lang3}"/> 
     17                        --> 
     18                        <span id="span_preferences"></span><br/> 
     19                </div> 
     20        </xsl:template> 
    2721 
    2822</xsl:stylesheet> 
  • trunk/instant_messenger/xsl/list_ldap_contacts.xsl

    r260 r305  
    66        <xsl:for-each select="data"> 
    77                <xsl:sort select="cn" case-order="upper-first" /> 
    8                 <option value="{mail};{uid}"><xsl:value-of select="cn" /> ( <xsl:value-of select="mail" /> ) </option> 
     8                <span value="{mail};{uid}"><xsl:value-of select="cn" /><br/><xsl:value-of select="mail" /></span><br/> 
    99        </xsl:for-each> 
    1010</xsl:template> 
  • trunk/instant_messenger/xsl/list_ldap_org.xsl

    r275 r305  
    11<?xml version="1.0" encoding="ISO-8859-1"?> 
    22<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    3 <xsl:output method="html" omit-xml-declaration="yes"/> 
     3        <xsl:output method="html" omit-xml-declaration="yes"/> 
    44 
    5 <xsl:template match="organizations"> 
    6         <xsl:for-each select="ou"> 
    7                 <xsl:sort select="." case-order="upper-first" /> 
    8                 <option value="{.}" onmousedown="javascript:im.ldap_search_ou(this);"> 
    9                         <xsl:value-of select="." /> 
    10                 </option> 
    11         </xsl:for-each> 
    12 </xsl:template> 
     5        <xsl:template match="organizations"> 
     6                <xsl:for-each select="ou"> 
     7                        <xsl:sort select="." case-order="upper-first" /> 
     8                        <span><xsl:value-of select="." /></span><br/> 
     9                </xsl:for-each> 
     10        </xsl:template> 
    1311 
    1412</xsl:stylesheet> 
  • trunk/instant_messenger/xsl/message_new.xsl

    r260 r305  
    11<?xml version="1.0" encoding="ISO-8859-1"?> 
    22<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > 
    3 <xsl:output method="html" omit-xml-declaration="yes"/> 
     3        <xsl:output method="html" omit-xml-declaration="yes"/> 
    44 
    5 <xsl:template match="message"> 
    6         <b> :</b><br/>   
    7         <xsl:value-of select="body"/> 
    8         <br/> 
    9         <br/> 
    10 </xsl:template> 
     5        <xsl:param name="nickname" /> 
     6 
     7        <xsl:template match="message"> 
     8                <b><xsl:value-of select="$nickname"/>:</b><br/> 
     9                <xsl:value-of select="body"/> 
     10                <br/> 
     11                <br/> 
     12        </xsl:template> 
    1113 
    1214</xsl:stylesheet> 
  • trunk/instant_messenger/xsl/options.xsl

    r260 r305  
    11<?xml version="1.0" encoding="ISO-8859-1"?> 
    22<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    3 <xsl:output method="html" omit-xml-declaration="yes"/> 
     3        <xsl:output method="html" omit-xml-declaration="yes"/> 
    44 
    5 <xsl:template match="options"> 
     5        <xsl:param name="style" /> 
    66 
    7         <dl style="background:#b4cfe5;margin:5px;font:8pt;"> 
    8                 <dt><a href="javascript:void(0);" onclick="im.update_nickname('{jid}');"><img src="{path}templates/default/images/group_close.gif"/><xsl:value-of select="lang1"/></a></dt> 
    9                 <dt><a href="javascript:void(0);" onclick="im.update_group('{jid}');"><img src="{path}templates/default/images/group_close.gif"/><xsl:value-of select="lang2"/></a></dt> 
    10                 <dt><a href="javascript:void(0);" onclick="im.remove('{jid}');"><img src="{path}templates/default/images/group_close.gif"/><xsl:value-of select="lang3"/></a></dt> 
    11                 <dt><a href="javascript:void(0);" onclick="im.subscription('{jid}','subscribe');"><img src="{path}templates/default/images/group_close.gif"/><xsl:value-of select="lang4"/></a></dt> 
    12                 <dt><a href="javascript:void(0);" onclick="im.request_vcard('{jid}','contact');"><img src="{path}templates/default/images/group_close.gif"/><xsl:value-of select="lang5"/></a></dt> 
    13         </dl> 
     7        <xsl:template match="/"> 
    148 
    15 </xsl:template> 
     9                <dl style="margin:0;"> 
     10                        <xsl:apply-templates select="." mode="option" /> 
     11                </dl> 
     12 
     13                <!-- 
     14                <dl style="background:#b4cfe5;margin:5px;font:8pt;"> 
     15                        <dt><a href="javascript:void(0);" onclick="im.update_nickname('{jid}');"><img src="{path}templates/default/images/group_close.gif"/><xsl:value-of select="lang1"/></a></dt> 
     16                        <dt><a href="javascript:void(0);" onclick="im.update_group('{jid}');"><img src="{path}templates/default/images/group_close.gif"/><xsl:value-of select="lang2"/></a></dt> 
     17                        <dt><a href="javascript:void(0);" onclick="im.remove('{jid}');"><img src="{path}templates/default/images/group_close.gif"/><xsl:value-of select="lang3"/></a></dt> 
     18                        <dt><a href="javascript:void(0);" onclick="im.subscription('{jid}','subscribe');"><img src="{path}templates/default/images/group_close.gif"/><xsl:value-of select="lang4"/></a></dt> 
     19                        <dt><a href="javascript:void(0);" onclick="im.request_vcard('{jid}','contact');"><img src="{path}templates/default/images/group_close.gif"/><xsl:value-of select="lang5"/></a></dt> 
     20                </dl> 
     21                --> 
     22        </xsl:template> 
     23 
     24        <xsl:template match="option" mode="option"> 
     25                <dt style="{style}"><xsl:value-of select="item"/></dt> 
     26        </xsl:template> 
    1627 
    1728</xsl:stylesheet> 
  • trunk/instant_messenger/xsl/vcard_contacts.xsl

    r260 r305  
    11<?xml version="1.0" encoding="ISO-8859-1"?> 
    22<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    3 <xsl:output method="html" omit-xml-declaration="yes"/> 
     3        <xsl:output method="html" omit-xml-declaration="yes"/> 
    44 
    5 <xsl:template match="/vcard_contact"> 
    6                 <div class="vcard_contact"> 
    7                         <div style="margin:3px"> 
    8                                 <label style="font-weight:bold;"><xsl:value-of select="lang1" /> .: </label> 
    9                                 <xsl:choose> 
    10                                         <xsl:when test="div/@fn"> 
    11                                                 <xsl:value-of select="div/@fn" /> 
    12                                         </xsl:when> 
    13                                         <xsl:otherwise> 
    14                                                 <xsl:value-of select="div/@FN" /> 
    15                                         </xsl:otherwise> 
    16                                 </xsl:choose> 
    17                         </div> 
    18                         <div style="margin:3px"> 
    19                                 <label style="font-weight:bold;"><xsl:value-of select="lang2" /> .: </label> 
    20                                 <xsl:choose> 
    21                                         <xsl:when test="div/@nickname"> 
    22                                                 <xsl:value-of select="div/@nickname" /> 
    23                                         </xsl:when> 
    24                                         <xsl:otherwise> 
    25                                                 <xsl:value-of select="div/@NICKNAME" />                                          
    26                                         </xsl:otherwise>                                                 
    27                         </xsl:choose>                            
    28                         </div> 
    29                         <div style="margin:3px"> 
    30                                 <label style="font-weight:bold;"><xsl:value-of select="lang3" /> .: </label> 
    31                                 <xsl:choose>     
    32                                         <xsl:when test="div/@orgname"> 
    33                                                 <xsl:value-of select="div/@orgname" /> 
    34                                         </xsl:when> 
    35                                         <xsl:otherwise> 
    36                                                 <xsl:value-of select="div/@ORGNAME" /> 
    37                                         </xsl:otherwise> 
    38                                 </xsl:choose> 
    39                         </div> 
    40                         <div style="margin:3px"> 
    41                                 <label style="font-weight:bold;"><xsl:value-of select="lang4" /> .: </label> 
    42                                 <xsl:choose> 
    43                                         <xsl:when test="div/@org"> 
    44                                                 <xsl:value-of select="div/@org" /> 
    45                                         </xsl:when> 
    46                                         <xsl:otherwise> 
    47                                                 <xsl:value-of select="div/@ORG" /> 
    48                                         </xsl:otherwise> 
    49                                 </xsl:choose>                                    
    50                         </div> 
    51                         <div style="margin:3px"> 
    52                                 <label style="font-weight:bold;"><xsl:value-of select="lang5" /> .: </label> 
    53                                 <xsl:choose> 
    54                                         <xsl:when test="div/@role"> 
    55                                                 <xsl:value-of select="div/@role" /> 
    56                                         </xsl:when> 
    57                                         <xsl:otherwise> 
    58                                                 <xsl:value-of select="div/@ROLE" /> 
    59                                         </xsl:otherwise> 
    60                                 </xsl:choose> 
    61                         </div> 
    62                         <div style="margin:3px">         
    63                                 <label style="font-weight:bold;"><xsl:value-of select="lang6" /> .: </label> 
    64                                 <xsl:choose> 
    65                                         <xsl:when test="div/@bday"> 
    66                                                 <xsl:value-of select="div/@bday" /> 
    67                                         </xsl:when> 
    68                                         <xsl:otherwise> 
    69                                                 <xsl:value-of select="div/@BDAY" /> 
    70                                         </xsl:otherwise> 
    71                                 </xsl:choose> 
    72                         </div> 
    73                         <div style="margin:5px 0px"> 
    74                                 <input type="button" value="{lang7}" onclick="javascript:im_window.window_close('{id}');" /> 
    75                         </div> 
    76                 </div> 
    77                  
    78 </xsl:template> 
     5        <xsl:param name="fullname" /> 
     6        <xsl:param name="nickname" /> 
     7        <xsl:param name="role" /> 
     8        <xsl:param name="birthday" /> 
     9        <xsl:param name="organization" /> 
     10        <xsl:param name="sector" /> 
     11 
     12        <xsl:template match="iq/vCard"> 
     13                <b><xsl:value-of select="$fullname" /> : </b><xsl:value-of select="FN" /><br/> 
     14                <b><xsl:value-of select="$nickname" /> : </b><xsl:value-of select="NICKNAME" /><br/> 
     15                <b><xsl:value-of select="$birthday" /> : </b><xsl:value-of select="BDAY" /><br/> 
     16                <b><xsl:value-of select="$organization" /> : </b><xsl:value-of select="ORG/ORGNAME" /><br/> 
     17                <b><xsl:value-of select="$sector" /> : </b><xsl:value-of select="ORG/ORGUNIT" /><br/> 
     18                <b><xsl:value-of select="$role" /> : </b><xsl:value-of select="ROLE" /><br/> 
     19        </xsl:template> 
    7920 
    8021</xsl:stylesheet> 
  • trunk/instant_messenger/xsl/window.xsl

    r262 r305  
    11<?xml version="1.0" encoding="ISO-8859-1"?> 
    22<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
    3 <xsl:output method="html" omit-xml-declaration="yes"/> 
     3        <xsl:output method="html" omit-xml-declaration="yes"/> 
    44 
    5 <xsl:template match="/window"> 
    6         <div id="{name}__window_master" style="width:{width};" class="window" onmousedown="javascript:drag_drop.drag(event,this); javascript:im_window.window_focus(this);" dragdrop="true"> 
     5        <xsl:template match="/window"> 
    76                <b class="corner blackcorner"> 
    87                        <b class="corner1 blackcorner1"><b></b></b> 
     
    1211                        <b class="corner5 blackcorner5"></b> 
    1312                </b> 
    14                 <div class="titulo" dragdrop="true"> 
    15                         <span id="{name}__window_title" style="float:left;" dragdrop="true"> 
    16                                 <xsl:value-of select="title" /> 
    17                         </span> 
    18                         <div id="{name}__window_title_buttons" style="float:right;"> 
    19                                 <div id="{name}__button_minimize" style="display: {pButMin};" class="button_minimize" onclick="javascript:im_window.window_minimize('{name}');"></div> 
    20                                 <div id="{name}__button_maximize" style="display: {pButMax};" class="button_maximize1" onclick="javascript:im_window.window_maximize('{name}');"></div> 
    21                                 <div id="{name}__button_close" style="display: {pButClose};" class="button_close" onclick="javascript:im_window.window_close('{name}');"></div> 
     13                <div class="titulo"> 
     14                        <span id="{name}__window_title" style="float:left;"></span> 
     15                        <div id="{name}__window_title_buttons" class="buttons"> 
     16                                <div title="close" class="button_close"></div> 
     17                                <div title="maximize" class="button_maximize"></div> 
     18                                <div title="minimize" class="button_minimize"></div> 
    2219                        </div> 
    2320                </div> 
    2421                <div id="{name}__window_body" class="body"> 
    25                         <div id="{name}__window_body_content" class="content" style="overflow:auto;"> 
    26                                 <xsl:copy-of select="content" /> 
    27                         </div> 
     22                        <div id="{name}__window_body_content" class="content"></div> 
    2823                </div> 
    29                 <div id="{name}__window_bottom" class="rodape" dragdrop="false"></div> 
    30                 <div id="im_sub_menu"></div> 
    31         </div> 
    32 </xsl:template> 
     24                <div id="{name}__window_bottom" class="rodape"></div> 
     25        </xsl:template> 
    3326 
    3427</xsl:stylesheet> 
Note: See TracChangeset for help on using the changeset viewer.