Вход Регистрация
Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/admin/js/acp.tabbed_basic_editor.js
Строк: 410
<?php
/************************************************/
/* IPB3 Javascript                                */
/* -------------------------------------------- */
/* (c) IPS, Inc 2009                            */
/* -------------------------------------------- */
/* Author: Matt Mecham                             */
/************************************************/

var _tt window.IPBACP;
_tt.prototype.tabbedEditor = {
    
callbacks: { 'open'   '',
                 
'switch' '',
                  
'close'  '' },
    
wrapId'',
    
templates: { 'textArea' : new Template"<div id='tbe_editor_wrap_#{id}' class='tmpl_pte'><textarea id='tbe_editor_textarea_#{id}' class='tmpl_te'>{content}</textarea></div>" ),
                 
'tab'      : new Template("<li id='tbe_tab_#{id}'><div id='tbe_tab_c_#{id}' class='tbe_tab_c'></div><div id='tbe_tab_f_#{id}' class='tbe_tab_f'></div><div id='tbe_tab_s_#{id}' class='tbe_tab_t'>#{title}</div></li>" ) },
    
openTabs$H(),
    
sPos: {},
    
_sT false,
    
_body null,
    
_poundefined,
    
_poId0,
    
    
init: function()
    {
        
Debug.write("Initializing acp.tabbedEditor.js");
        
document.observe("dom:loaded", function(){
            
        });
    },
    
    
/**
     * Manually called init function
     *
     * @access    public
     */
    
initialize: function()
    {
        
/* Create some divs for use later */
        
var tabs = new Element'div', { id'tbe_tabstrip' } ).hide().addClassName'tbe_tabstrip' );
        $( 
acp.tabbedEditor.wrapId ).inserttabs );
        
        var 
wrap = new Element'div', { id'tbe_wrap' } );
        $( 
acp.tabbedEditor.wrapId ).insertwrap );
        
        
/* Set body */
        
acp.tabbedEditor._body document.getElementsByTagName('body')[0];
    },
    
    
/**
     * Open Tab
     * Creates a tab, or opens a new one if required
     *
     * @access    public
     * @param    string        ID to assign to tab
     * @param    string        Tab title
     * @param    string        Tab contents
     */
    
openTab: function( idtitlecontentevent )
    {
        
/* Store scroll pos */
        
if ( ! Object.isUndefinedacp.tabbedEditor._body.scrollTop ) )
        {
            
acp.tabbedEditor._sT acp.tabbedEditor._body.scrollTop;
        }
        
        
Debug.write'OpenTab ' id );
        
        if ( 
Object.isUndefinedacp.tabbedEditor.openTabs.getid ) ) )
        {
            
acp.tabbedEditor._createTabidtitlecontent );
        }
        else
        {
            
acp.tabbedEditor._focusTabid );
        }
        
        
/* Restore scroll pos */
        
if ( acp.tabbedEditor._sT )
        {
            
acp.tabbedEditor._body.scrollTop acp.tabbedEditor._sT;
        }
    },
    
    
/**
     * Close tab
     *
     * @access    public
     * @param    string        Tab ID
     */
    
closeTab: function( id )
    {
        
/* INIT */
        
var _l false;
        var 
_t acp.tabbedEditor.openTabs.getid );
        
        
Debug.write"Closing tab: " id );
        
        if( ! 
Object.isUndefinedacp.tabbedEditor.callbacks['close'] ) )
        {
            
Debug.write'Calling callback' );
            if ( ! 
acp.tabbedEditor.callbacks['close']( _tthis ) )
            {
                return 
false;
            }
        }
        
        
/* Remove Tab */
        
acp.tabbedEditor.openTabs.unset( id );
        
        
/* Remove editor div / text area */
        
$( 'tbe_editor_textarea_' id ).remove();
        $( 
'tbe_editor_wrap_' id ).remove();
        
        
/* Fetch next item inline */
        
$Hacp.tabbedEditor.openTabs ).each( function(tab)
        {
            
/* Set last ID */
            
_l tab.value['id'];
        } );
    
        
/* Make one lit? */
        
if ( _l  !== false )
        {
            
acp.tabbedEditor.openTab_l );
        }
        else
        {
            $( 
'tbe_tabstrip' ).hide();
            $( 
'tbe_tabs' ).hide();
        }
    },
    
    
/**
     * Get current file details
     *
     * @access    public
     */
    
getCurrentFile: function()
    {
        if ( $$(
'.tbe_item_lit')[0] )
        {
            var 
_t = $$('.tbe_item_lit')[0].id;
    
            if ( ! 
Object.isUndefined_t ) )
            { 
                return 
acp.tabbedEditor.openTabs.get_t.replace'tbe_tab_''' ) );
            }
            else
            {
                return 
undefined;
            }
        }
        else
        {
            return 
undefined;
        }
    },
    
    
/**
     * Get all files
     *
     * @access    public
     */
    
getAllFiles: function()
    {
        return 
acp.tabbedEditor.openTabs;
    },
    
    
/**
     * Set Content of an editor
     *
     * @access    public
     * @param    string        Tab ID
     * @param    string        Content to set
     */
    
setContent: function( idcontent )
    {
        if ( $( 
'tbe_editor_textarea_' id ) )
        {
            $( 
'tbe_editor_textarea_' id ).value content;
        }
    },
    
    
/**
     * Get Content of an editor
     *
     * @access    public
     * @param    string        Tab ID
     * @param    string        Content to set
     */
    
getContent: function( id )
    {
        
id = ( id ) ? id acp.tabbedEditor.getCurrentFile().id;
        
        if ( $( 
'tbe_editor_textarea_' id ) )
        {
            return 
acp.tabbedEditor._HtmlOutgoing( $( 'tbe_editor_textarea_' id ).value );
        }
    },
    
    
/**
     * Set the edited status of a file
     *
     * @access    public
     * @param    string        Tab ID
     * @param    string        [Content to update]
     * @param    boolean
     */
    
setFileEditedMode: function( idstatuscontent )
    {
        
status = ( status === true ) ? true false;
        
        var 
_t acp.tabbedEditor.openTabs.getid );
        var 
_c = ( Object.isUndefinedcontent ) ) ? _t.content content;
        
        
/* Got stuff to do? */
        
if ( $( 'tbe_tab_s_' id ) )
        {
            if ( 
status === true && _t.edited !== true )
            {
                
/* mark as edited for the first time */
                
$( 'tbe_tab_s_' id ).update(  _t.title ' *' );
            }
            else if ( 
status === false && _t.edited !== false )
            {
                
_t.title _t.title.replace( /s+*/, '' );
                
                
/* mark as NOT edited for the first time */
                
$( 'tbe_tab_s_' id ).update_t.title );
            }
        }
        
        
acp.tabbedEditor.openTabs.setid, { id_t.idtitle_t.titlecontent_ceditedstatus } );
        
        return 
true;
    },
    
    
/**
     * Open tab (From event)
     *
     * @access    private
     * @param    object        Mouse event
     * @param    string        Tab ID
     */
    
_openTab: function( eventid )
    {
        
Event.stopevent );
        
        
/* Open Tab */
        
acp.tabbedEditor.openTabid );
    },
    
    
/**
     * Open tab (From event)
     *
     * @access    private
     * @param    object        Mouse event
     * @param    string        Tab ID
     */
    
_closeTab: function( eventid )
    {
        
Event.stopevent );
        
        
/* Open Tab */
        
acp.tabbedEditor.closeTabid );
    },
    
    
/**
     * Pop up tab (From event)
     *
     * @access    private
     * @param    object        Mouse event
     * @param    string        Tab ID
     */
    
_popUp: function( eventid )
    {
        
Event.stopevent );
        
        
Debug.write("SHOWING POPUP");
        
        
/* Create pop-up elements */
        
var _id      '__p_' id;
        var 
_data    acp.tabbedEditor.openTabs.getid );
        var 
_t       acp.tabbedEditor.templates['textArea'].evaluate( { 'id'_id } );
        
        
// Have to replace <> otherwise script tags are executed and removed
        // @link http://community.invisionpower.com/tracker/issue-32621-template-editor-maximise-button-deletes-script-tags
        
var content  acp.tabbedEditor.getContentid ).replace( /</g'&lt;' ).replace( />/g'&gt;' ); 
        var 
title    _data.title;

        var 
_initial '<div class="acp-box"><h3>' title '</h3>' _t.replace'{content}'content ) + "</div>";
        var 
_dims    document.viewport.getDimensions();
        
        var 
_popUp = new ipb.Popup'_p_' id, { type'pane',
                                                  
w: ( _dims.width 50 ) + 'px',
                                                  
h: ( _dims.height 50 ) + 'px',
                                                  
initial_initial }, { afterShowacp.tabbedEditor._popUpShowafterHideacp.tabbedEditor._popUpClose } );
        
        
_popUp.show();
    },
    
    
/**
     */
    
_popUpShow: function( event )
    {
        var 
_dims    document.viewport.getDimensions();
        var 
_id      '_' event.id;
        
        $(
'tbe_editor_wrap_' _id).setStyle( { height: ( _dims.height 60 ) + 'px' } );
        $(
'tbe_editor_wrap_' _id).up('.popupWrapper').setStyle( { top'20px' } );
        $(
'tbe_editor_wrap_' _id).up('.popupInner').setStyle( { overflow'hidden' } );
        
        $(
'tbe_editor_textarea_' _id).setStyle( { height: ( _dims.height 90 ) + 'px' } );
        
        
/* Add listener */
        
$( 'tbe_editor_textarea_' _id ).observe('keydown'acp.tabbedEditor._keyDownCheck.bindAsEventListenereventevent.id.replace( /^_p_/, '' ) ) );
        $( 
'tbe_editor_textarea_' _id ).observe('change'acp.tabbedEditor._keyDownCheck.bindAsEventListenereventevent.id.replace( /^_p_/, '' ) ) );
    },
    
    
/**
     */
    
_popUpClose: function( event )
    {
        var 
_id  event.id;
        var 
_rid _id.replace( /^_p_/, '' );
        
        
/* Update contents */
        
acp.tabbedEditor.setContent_rid, $('tbe_editor_textarea_' '_' _id).value );
        
        
/* remove pop-up */
        
$( _id '_popup' ).remove();
    },
    
    
/**
     * Create a new tab
     *
     * @access    private
     * @param    string        ID to assign to tab
     * @param    string        Tab title
     * @param    string        Tab contents
     */
    
_createTab: function( idtitlecontent )
    {
        
/* INIT */
        
var _t acp.tabbedEditor.templates['textArea'].evaluate( { 'id'id } );

        
/* Push tab */
        
acp.tabbedEditor.openTabs.setid, { ididtitletitlecontentcontenteditedfalse } );
        
        
/* Create wrapper */
        
try
        {
            
//Debug.write("htmlincoming: " + acp.tabbedEditor._HtmlIncoming( content ) );
            
$( 'tbe_wrap' ).innerHTML += _t.replace'{content}'acp.tabbedEditor._HtmlIncomingcontent ) );
        }
        catch( 
)
        {
            
/* insert sometimes complains with regular HTML which is why we don't use .insert() */
            
Debug.error);
        }
        
        
/* Add listener */
        
$( 'tbe_editor_textarea_' id ).observe('keydown'acp.tabbedEditor._keyDownCheck.bindAsEventListenerthisid ) );
        $( 
'tbe_editor_textarea_' id ).observe('change'acp.tabbedEditor._keyDownCheck.bindAsEventListenerthisid ) );
        
        
/* Set listener */
        
acp.tabbedEditor._setObserverid );
        
        
Debug.write"Created tab: " id " - " title );
        
        
/* Focus */
        
acp.tabbedEditor._focusTabid );
    },
    
    
/**
     * Brings a tab into focus
     *
     * @access    private
     * @param    string        Tab ID
     */
    
_focusTab: function( id )
    {
        
/* Hide all divs */
        
$Hacp.tabbedEditor.openTabs ).each( function(tab)
        {
            
acp.tabbedEditor._hideTabtab.value['id'] );
        } );
        
        
/* Show the correct one */
        
acp.tabbedEditor._showTabid );
        
        
/* Redraw tab strip */
        
acp.tabbedEditor._redrawTabstripid );
        
        
/* Call back */
        
if( ! Object.isUndefinedacp.tabbedEditor.callbacks['switch'] ) )
        {
            
acp.tabbedEditor.callbacks['switch']( acp.tabbedEditor.openTabs.getid ), this );
        }
    },
    
    
/**
     * Hide a tab
     *
     * @param    string        Tab ID
     */
    
_hideTab: function( id )
    {
        var 
_t acp.tabbedEditor.openTabs.getid );
        
        
Debug.write"Hiding tab " id );
        
        
/* Make sure it's not hidden for focus grab */
        
$( 'tbe_editor_wrap_' id ).show();
        $( 
'tbe_editor_textarea_' id ).show();
        $( 
'tbe_editor_textarea_' id ).value _t.content;
        $( 
'tbe_editor_textarea_' id ).focus();
        
        
/* Store scrollTop */
        
if ( $( 'tbe_editor_textarea_' id ).scrollTop )
        {
            
acp.tabbedEditor.sPosid ] = $( 'tbe_editor_textarea_' id ).scrollTop;
        }
        
        $( 
'tbe_editor_wrap_' id ).hide();
    },
    
    
/**
     * Hide a tab
     *
     * @param    string        Tab ID
     */
    
_showTab: function( id )
    {
        
Debug.write"Showing tab " id );
        $( 
'tbe_editor_wrap_' id ).show();
        
        $( 
'tbe_editor_textarea_' id ).focus();
        
        
/* Add listener */
        
$( 'tbe_editor_textarea_' id ).observe('keydown'acp.tabbedEditor._keyDownCheck.bindAsEventListenerthisid ) );
        $( 
'tbe_editor_textarea_' id ).observe('change'acp.tabbedEditor._keyDownCheck.bindAsEventListenerthisid ) );
        
        
/* Got a scroll pos? */
        
if ( !Object.isUndefinedacp.tabbedEditor.sPosid ] ) )
        {
            $( 
'tbe_editor_textarea_' id ).scrollTop acp.tabbedEditor.sPosid ];
        }
        else
        {
            
setTimeout( function(){
                $( 
'tbe_editor_textarea_' id ).scrollTop 0;
            }, 
50 );
        }
        
        
/* Set listener */
        
acp.tabbedEditor._setObserverid );
    },
    
    
/**
     * Redraws the tab strip
     *
     * @access    private
     * @param    string        ID to bring focus on
     */
    
_redrawTabstrip: function( focusId )
    {
        
/* Init */
        
var _c 0;
        
        
/* Remove old strip */
        
if( $( 'tbe_tabs' ) )
        {
            $( 
'tbe_tabs' ).remove();
        }
        
        
/* Add tab strip */
        
$( 'tbe_tabstrip' ).insert( new Element'ul', { id'tbe_tabs' } ).hide().addClassName'tbe_tabs' ) );
        
        
/* Build 'em */
        
$Hacp.tabbedEditor.openTabs ).each( function(tab)
        {
            
/* Increment */
            
_c++;
            
            
/* Edited? */
            
if ( tab.value['edited'] === true && ( ! tab.value['title'].match/*$/ ) ) )
            {
                tab.value['title'] += ' *';
            }
            
            $( 'tbe_tabs' ).insert( acp.tabbedEditor.templates['tab'].evaluate( { 'id': tab.value['id'], 'title' : tab.value['title'] } ));
            
            /* Focus */
            
$( 'tbe_tab_' tab.value['id'] ).observe('click'acp.tabbedEditor._openTab.bindAsEventListenerthistab.value['id'] ));
            
            
            
/* Go FS and Close */
            
$( 'tbe_tab_f_' tab.value['id'] ).observe('click'acp.tabbedEditor._popUp.bindAsEventListenerthistab.value['id'] ));
            $( 
'tbe_tab_c_' tab.value['id'] ).observe('click'acp.tabbedEditor._closeTab.bindAsEventListenerthistab.value['id'] ));
        } );
    
        
/* Make one lit? */
        
if ( focusId && $( 'tbe_tab_' focusId ) )
        {
            $( 
'tbe_tab_' focusId ).addClassName'tbe_item_lit' );
            $( 
'tbe_tabstrip' ).show();
            $( 
'tbe_tabs' ).show();
        }
        else
        {
            $( 
'tbe_tabstrip' ).hide();
            $( 
'tbe_tabs' ).hide();
        }
    },
    
    
/** 
     * Make HTML safe
     *
     * @access    private
     * @param    string        Incoming HTML
     * @return    string        Outgoing HTML
     */
    
_HtmlIncoming: function( )
    {
        if ( 
== null )
        {
            return;
        }
        
        
t.replace( /&/g"&#38;" );
        
t.replace( /</g"&#60;" );
        
t.replace( />/g"&#62;" );
        
t.replace( /"/g, "&#34;" );
        
t.replace( /'/g, "&#039;");
    
        return t;
    },
    
    /** 
     * Return normal HTML
     *
     * @access    private
     * @param    string        Incoming HTML
     * @return    string        Outgoing HTML
     */
    _HtmlOutgoing: function( t )
    {
        if ( t == null )
        {
            return;
        }
        
        t = t.replace( "&#38;"   , "&", "g" );
        t = t.replace( "&#60;"   , "<", "g" );
        t = t.replace( "&#62;"   , ">", "g" );
        t = t.replace( "&#34;"   , '"', "
g" );
        t = t.replace( "
&#039;"  , "'", "g" );
        
        
return t;
    },
    
    
/**
     * Set observer
     * @access    private
     * @param    Object        ID to observe
     */
    
_setObserver: function( id )
    {
        if ( ! 
Object.isUndefinedacp.tabbedEditor._po ) )
        {
            
Debug.write"Clearing time out for " acp.tabbedEditor._poId );
            
clearTimeoutacp.tabbedEditor._po );
        }
        
        
Debug.write"Setting time out for " id );
        
        
acp.tabbedEditor.poId id;
        
acp.tabbedEditor._po  setTimeoutacp.tabbedEditor._timeOut400 );
        
        
/*if ( !Object.isUndefined( acp.tabbedEditor.sPos[ id ] ) )
        {
            $( 'tbe_editor_textarea_' + id ).scrollTop = acp.tabbedEditor.sPos[ id ];
        } else {
                setTimeout( function(){
                    $( 'tbe_editor_textarea_' + id ).scrollTop = 0;
                }, 50 );
        }*/
    
},
    
    
/**
     * Time out function
     * @access    private
     * @param    Object        Event
     */
    
_timeOut: function( )
    {
        if ( 
acp.tabbedEditor.poId )
        {
            var 
id acp.tabbedEditor.poId;
            var 
_t acp.tabbedEditor.openTabs.getid );
            
            if ( ! 
Object.isUndefined_t ) )
            {
                
acp.tabbedEditor.openTabs.setid, { id_t.idtitle_t.titlecontent$F'tbe_editor_textarea_' id ), edited_t.edited } );
            
                
acp.tabbedEditor._po  setTimeoutacp.tabbedEditor._timeOut400 );
            }
        }
    },
    
    
/**
     * Check to see if this document is edited and if not, set it to edited
     *
     * @access    private
     * @param    object        Event
     * @param    string        Tab ID
     */
    
_keyDownCheck: function( eid )
    {
        
/* Ignore simple ctrl, shift and alt keydowns */
        
if( e.keyCode == 16 || e.keyCode == 17 || e.keyCode == 18 )
        {
            return 
false;
        }

        
acp.tabbedEditor.setFileEditedModeidtrue );
            
        return 
true;
    }
};

acp.tabbedEditor.init();
?>
Онлайн: 1
Реклама