Вход Регистрация
Файл: admin/js/acp.tabs.js
Строк: 117
<?php
//------------------------------------------------------------------------------
// IPS JS: Tab handler
// (c) 2008 Invision Power Services, Inc.
// http://www.invisionpower.com
// Dan Cryer - 8th September 08
//------------------------------------------------------------------------------


var Ipb3AcpTabStrip = Class.create();

Ipb3AcpTabStrip.prototype = {
    
    
tabstrips: $H(),
    
first_on_load: '',
    
    
initialize: function()
    {
        
Debug.write('IPB3 ACP Tabs: Initialize');
    },
    
    
register: function(tabstripId) 
    {
        
Debug.write('IPB3 ACP Tabs: Register ' + tabstripId);
        
        try {
            if( 
Object.isUndefined( _go_go_gadget_editor_hack ) ){
                
fix_hack = true;
            } else {
                
fix_hack = false;
            }
        } catch(
err) { fix_hack = false; }
        
        
Debug.write( "Fix hack is " + fix_hack );
        
        var 
first      = true;
        var 
firsttab   = null;
        
this.tabstrips[tabstripId] = $(tabstripId);
        
this.tabstrips[tabstripId].tabs  = new Array();
        
        var 
tabitems = $$('#main_content #' + tabstripId + ' li');
                                                            
        for(var 
i = 0; i < tabitems.length; i++)                                            
        {
            var 
tabId = tabitems[i].id.replace( /^(.*)-(S+)$/, "$2" );
            
            
Debug.write('IPB3 ACP Tabs: Adding ' + tabId + ' to tabstrip ' + this.tabstrips[tabstripId].id);
            
            
this.tabstrips[tabstripId].tabs[i] = tabitems[i];
            
this.tabstrips[tabstripId].tabs[i].tabStrip = this.tabstrips[tabstripId];    
            
this.tabstrips[tabstripId].tabs[i].tabPane = $('tabpane-' + tabId);
            
            
this.tabstrips[tabstripId].tabs[i].style.cursor = 'normal';
            
Event.observe(this.tabstrips[tabstripId].tabs[i], 'click', this.toggle.bindAsEventListener( this ));
            
            if ( 
this.first_on_load )
            {
                if ( 
this.first_on_load == tabId )
                {
                    
firsttab = this.tabstrips[tabstripId].tabs[i];
                }
            }
            else
            {
                if( 
first )
                {
                    
first = false;
                    
firsttab = this.tabstrips[tabstripId].tabs[i];
                }
            }
            
            
this.tabstrips[tabstripId].tabs[i].initSizeVals = { 'width' : this.tabstrips[tabstripId].tabs[i].tabPane.getWidth(), 'height' : this.tabstrips[tabstripId].tabs[i].tabPane.getHeight() };
        }
        
        
Debug.write('IPB3 ACP Tabs: Registered ' + this.tabstrips[tabstripId].tabs.length + ' tabs');
            
        
this.doToggle(firsttab);
    },
    
    
toggle: function(e)
    {
        var 
clickedTab = $(Event.findElement(e,'li'));
        
this.doToggle(clickedTab);
    },
    
    
doToggle: function(clickedTab)
    {
        
/* Reset stuff */
        
if( Prototype.Browser.Gecko && fix_hack )
        {
            
//Debug.dir( clickedTab );
            /* Grab pane wrapper */
            //_paneWrap = $( $$('ul#tab_member')[0].down().id.replace( 'tabtab-', 'tabpane-' ) ).up();
            
_paneWrap = $( clickedTab.tabPane ).up();
            
            
/* Reset pane height */
            
_paneWrap.style.height = 'auto';
            
            
/* Reset save button */
            
_paneWrap.down('div.acp-actionbar').relativize();
            
_paneWrap.down('div.acp-actionbar').setStyle( { top: '0px', left: '0px', width: 'auto', height: 'auto' } );
        }
        
        try
        {
            for(var 
i = 0; i < clickedTab.tabStrip.tabs.length; i++)
            {
                var 
tabitm = clickedTab.tabStrip.tabs[i];
                
                if ( 
typeof( tabitm ) != 'undefined' && typeof( tabitm ) != 'function' )
                {
                    if(
clickedTab.id == tabitm.id)
                    {
                        
tabitm.className = 'active';
                        
                        if( 
tabitm.tabPane != null )
                        {
                            if( 
tabitm.tabPane.hasClassName('has_editor') && Prototype.Browser.Gecko && fix_hack )
                            {
                                
/* Goodness, what a kludge */
                                
tabitm.tabPane.style.visibility = 'visible'; // Hack to make sure our editor works proper like
                                
tabitm.tabPane.style.height = tabitm.initSizeVals['height'] + 'px';
                                
tabitm.tabPane.style.width  = tabitm.initSizeVals['width'] + 'px';
                                
tabitm.tabPane.style.clip   = "auto";
                                
                                
/* Update size of parent to prevent background not reaching to the bottom*/
                                
tabitm.tabPane.down('div.editor').style.height = tabitm.initSizeVals['height'] + 'px';
                                
tabitm.tabPane.up('div.acp-box').style.height  = tabitm.initSizeVals['height'] + 50 + 'px';
                                
                                
/* Now try and get the save button to place correctly */
                                
buttonEl = tabitm.tabPane.up().down('div.acp-actionbar');
                                
                                
buttonEl.absolutize();
                                
                                
/* It is offset slightly, so tweak to make it look 'normal' */
                                
buttonEl.style.width  = parseInt( buttonEl.style.width ) - 20 + 'px';
                                
buttonEl.style.height = parseInt( buttonEl.style.height ) - 20 + 'px';
                                
buttonEl.style.top    = parseInt( $('tab_member').positionedOffset()[1] ) + tabitm.initSizeVals['height'] + 75 + 'px';
                            }
                            else
                            {
                                
tabitm.tabPane.style.display = 'block';
                            }
                        }
                    }
                    else
                    {
                        
tabitm.className = '';
                        
                        if( 
tabitm.tabPane != null )
                        {
                            if( 
tabitm.tabPane.hasClassName('has_editor') && Prototype.Browser.Gecko && fix_hack )
                            {
                                
tabitm.tabPane.style.visibility = 'hidden';
                                
tabitm.tabPane.style.height     = '0px';
                                
tabitm.tabPane.style.width      = '0px';
                                
tabitm.tabPane.style.position   = 'absolute';
                                
tabitm.tabPane.style.clip       = "rect(0px,0px,0px,0px)";
                            }
                            else
                            {
                                
tabitm.tabPane.style.display = 'none';
                            }
                        }
                    }
                }
            }
        }
        catch( 
e ){}
    }
};

var 
ipbAcpTabStrips = new Ipb3AcpTabStrip;
?>
Онлайн: 2
Реклама