source: trunk/phpgwapi/js/tools/xlink.js @ 2578

Revision 2578, 2.4 KB checked in by rodsouza, 14 years ago (diff)

Ticket #1009 - Verificando a inclusão de javascript para que seja feita apenas uma vez.

Line 
1( function( )
2{
3        var _connector = new XConnector;
4        var _container = null;
5        var _divAppboxHeader = null;
6        var _loading = new Image( );
7        _loading.src = URL_SERVER + '/phpgwapi/images/loading.gif';
8
9        function handler( pLink )
10        {
11                var action = pLink.href;
12                if ( action == '' )
13                        return false;
14
15                var a = ( action.indexOf( 'javascript:' ) === 0 );
16                a = ( a || ( action.indexOf( '#' ) === 0 ) );
17                a = ( a || ( action.indexOf( window.location + '#' ) === 0 ) );
18                a = ( a || ! ( action.indexOf( 'workflow' ) < 0 ) );
19
20                if ( ! a )
21                        pLink.onclick = function( )
22                        {
23                                _divAppboxHeader.innerHTML = '';
24
25                                _container.innerHTML = '';
26                                _container.appendChild( _loading );
27
28                                if ( pLink.hasAttribute( 'cacheit' ) && pLink.getAttribute( 'cacheit' ) === 'true' )
29                                        _connector.cache( );
30
31                                var request = _connector.go( {
32                                        'access' : action,
33                                        'handler' : function( data )
34                                        {
35                                                var el = document.createElement( 'div' );
36                                                el.innerHTML = data;
37
38                                                var _links = el.getElementsByTagName( 'a' );
39                                                for ( var i = 0; i < _links.length; i++ )
40                                                        handler( _links.item( i ) );
41
42                                                var _head = document.getElementsByTagName( 'head' ).item( 0 );
43                                                var _loaded = _head.getElementsByTagName( 'script' );
44                                                var _scripts = el.getElementsByTagName( 'script' );
45                                                fix : for ( var i = 0; i < _scripts.length; i++ )
46                                                {
47                                                        var _script = _scripts.item( i );
48                                                        if ( _script.getAttribute( 'src' ) == null )
49                                                                continue;
50                                                        else
51                                                        {
52                                                                for ( var j = 0; j < _loaded.length; j++ )
53                                                                        if ( _script.getAttribute( 'src' ) === _loaded.item( j ).getAttribute( 'src' )  )
54                                                                        {
55                                                                                el.removeChild( _script );
56                                                                                continue fix;
57                                                                        }
58
59                                                                _head.appendChild( _script );
60                                                                i--;
61                                                        }
62                                                }
63
64                                                _container.innerHTML = '';
65                                                while ( el.hasChildNodes( ) )
66                                                        _container.appendChild( el.firstChild );
67                                        }
68                                } );
69                                return false;
70                        };
71        }
72
73        XEvents.add( window, 'onload', function( )
74        {
75                var _center = document.createElement( 'center' );
76                _center.appendChild( _loading );
77
78                _divAppboxHeader = document.getElementById( 'divAppboxHeader' );
79                _divAppboxHeader.innerHTML = '';
80
81                _container = document.getElementById( 'divAppbox' );
82                _loading = _center;
83
84                document.getElementsByTagName( 'body' ).item( 0 ).style.overflowY = 'scroll';
85
86                var _links = document.getElementsByTagName( 'a' );
87                for ( var i = 0; i < _links.length; i++ )
88                        handler( _links.item( i ) );
89        } );
90} )( );
Note: See TracBrowser for help on using the repository browser.