Файл: IPBMafia.ru_IPB_3.4.6_Final_Rus _Nulled/board/upload/admin/js/acp.hooks.js
Строк: 238
<?php
/************************************************/
/* IPB3 Javascript                                */
/* -------------------------------------------- */
/* acp.uagents.js - User agent mapping            */
/* (c) IPS, Inc 2008                            */
/* -------------------------------------------- */
/* Author: Rikki Tissier                         */
/************************************************/
var _hooks = window.IPBACP;
_hooks.prototype.hooks = {
    popups: {},
    fields: {},
    languageMax: null,
    
    init: function()
    {
        Debug.write("Initializing acp.hooks.js");
        document.observe("dom:loaded", function(){
    
        });
    },
    
    generateStrings: function( i )
    {
        Debug.write("Getting strings...");
        
        var selected_cat = $F('language_' + i );
        url = ipb.vars['base_url'] + "app=core&module=ajax&section=hooks&do=getStrings&group=" + selected_cat + '&secure_key=' + ipb.vars['md5_hash'] + "&id=" + acp.hooks.hookID + "&i=" + i;
        url = url.replace( /&/g, '&' );
        
        new Ajax.Request( url,
                          {
                            method: 'GET',
                            evalJSON: true,
                            onSuccess: function(t)
                            {
                                if( Object.isUndefined( t.responseJSON ) || t.responseJSON == null )
                                {
                                    
                                    $('container_' + i).update( t.responseText ).show();
                                    $('container_desc_' + i).show();
                                }
                                else
                                {
                                    if( t.responseJSON['error'] )
                                    {
                                        $('container_' + i).update( t.responseJSON['error'] ).show();
                                    }
                                    else if( t.responseJSON['success'] )
                                    {
                                        $('container_' + i).update( t.responseJSON['html'] ).show();
                                        $('container_desc_' + i).show();
                                    }
                                    else
                                    {
                                        $('container_' + i).update( t.responseText ).show();
                                        $('container_desc_' + i).show();
                                    }
                                }
                            }
                        });
                                    
    },
    
    generateTemplates: function( i )
    {
        var selected_cat = $F('skin_' + i );
        url = ipb.vars['base_url'] + "app=core&module=ajax&section=hooks&do=getTemplates&group=" + selected_cat + '&secure_key=' + ipb.vars['md5_hash'] + "&id=" + acp.hooks.hookID + "&i=" + i;
        url = url.replace( /&/g, '&' );
        
        new Ajax.Request( url,
                          {
                            method: 'GET',
                            evalJSON: true,
                            onSuccess: function(t)
                            {
                                if( Object.isUndefined( t.responseJSON ) || t.responseJSON == null )
                                {
                                    
                                    $('s_container_' + i).update( t.responseText ).show();
                                    $('s_container_desc_' + i).show();
                                }
                                else
                                {
                                    if( t.responseJSON['error'] )
                                    {
                                        $('s_container_' + i).update( t.responseJSON['error'] ).show();
                                    }
                                    else if( t.responseJSON['success'] )
                                    {
                                        $('s_container_' + i).update( t.responseJSON['html'] ).show();
                                        $('s_container_desc_' + i).show();
                                    }
                                    else
                                    {
                                        $('s_container_' + i).update( t.responseText ).show();
                                        $('s_container_desc_' + i).show();
                                    }
                                }
                            }
                        });
    },
    
    generateFields: function( i )
    {
        
        var selected_type = $F('type_' + i );
        if( $('d_container_' + i) != null )
        {
            $('d_container_' + i).update('');
        }
        
        var template = '';
        
        switch( selected_type )
        {
            case 'create':
                template = ipb.templates['db_create'].evaluate( { id: i } );
                acp.hooks.fields['MF__database']['fields'].push( "name_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "fields_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "tabletype_" + i );
            break;
            case 'alter':
                template = ipb.templates['db_alter'].evaluate( { id: i } );
                acp.hooks.fields['MF__database']['fields'].push( "altertype_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "table_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "field_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "newfield_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "fieldtype_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "default_" + i );
            break;
            case 'update':
                template = ipb.templates['db_update'].evaluate( { id: i } );
                acp.hooks.fields['MF__database']['fields'].push( "table_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "field_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "newvalue_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "oldvalue_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "where_" + i );
            break;
            case 'insert':
                template = ipb.templates['db_insert'].evaluate( { id: i } );
                acp.hooks.fields['MF__database']['fields'].push( "table_" + i );
                acp.hooks.fields['MF__database']['fields'].push( "updates" + i );
                acp.hooks.fields['MF__database']['fields'].push( "fordelete" + i );
            break;
            default:
                return;
            break;
        }
                 
        $('d_container_' + i).insert( template ).show();
        $('d_container_desc_' + i).show();
    },
    
    addAnotherLanguage: function( e )
    {
        Event.stop(e);
        
        var id = parseInt( acp.hooks.languageMax ) + 1;
        
        var url = ipb.vars['base_url'] + "app=core&module=ajax&section=hooks&do=getLangFiles&secure_key=" + ipb.vars['md5_hash'] + "&id=" + acp.hooks.hookID + "&i=" + id;
        url = url.replace( /&/g, '&' );
        
        new Ajax.Request( url,
                        {
                            method: 'GET',
                            evalJSON: true,
                            onSuccess: function(t)
                            {
                                if( Object.isUndefined( t.responseJSON ) || t.responseJSON == null )
                                {
                                    var template = ipb.templates['lang_row'].evaluate({ 'containerid': id, 'control': t.responseText});
                                    $('language_wrap').insert( template );
                                    
                                    acp.hooks.fields['MF__language']['fields'].push("language_" + id);
                                    acp.hooks.fields['MF__language']['fields'].push("strings_" + id);
                                    acp.hooks.languageMax = id;
                                }
                                else
                                {
                                    if( t.responseJSON['error'] )
                                    {
                                        alert( t.responseJSON['error'] );
                                    }
                                    else if( t.responseJSON['success'] )
                                    {
                                        $('container_' + id).update( t.responseJSON['html'] ).show();
                                    }
                                    else
                                    {
                                        alert( t.responseText );
                                    }
                                }
                                
                            }
                        });
                        
        Debug.write( acp.hooks.languageMax + 1 );
        
    },
    
    addAnotherTemplate: function( e )
    {
        Event.stop(e);
        
        var id = parseInt( acp.hooks.skinMax ) + 1;
        
        var url = ipb.vars['base_url'] + "app=core&module=ajax&section=hooks&do=getSkinFiles&secure_key=" + ipb.vars['md5_hash'] + "&id=" + acp.hooks.hookID + "&i=" + id;
        url = url.replace( /&/g, '&' );
        
        new Ajax.Request( url,
                        {
                            method: 'GET',
                            evalJSON: true,
                            onSuccess: function(t)
                            {
                                if( Object.isUndefined( t.responseJSON ) || t.responseJSON == null )
                                {
                                    var template = ipb.templates['skin_row'].evaluate({ 'containerid': id, 'control': t.responseText});
                                    $('skin_wrap').insert( template );
                                    
                                    acp.hooks.fields['MF__templates']['fields'].push("templates_" + id);
                                    acp.hooks.fields['MF__templates']['fields'].push("skin_" + id);
                                    acp.hooks.skinMax = id;
                                }
                                else
                                {
                                    if( t.responseJSON['error'] )
                                    {
                                        alert( t.responseJSON['error'] );
                                    }
                                    else if( t.responseJSON['success'] )
                                    {
                                        $('s_container_' + id).update( t.responseJSON['html'] ).show();
                                    }
                                    else
                                    {
                                        alert( t.responseText );
                                    }
                                }
                                
                            }
                        });
                        
        Debug.write( acp.hooks.skinMax + 1 );
        
    },
    
    addAnotherDB: function( e )
    {
        Event.stop(e);
        
        var id = parseInt( acp.hooks.dbMax ) + 1;
        var wrapper = ipb.templates['db_row'].evaluate( { 'id': id } );
        
        $('database_wrap').insert( wrapper );
        
        acp.hooks.dbMax = id;
        acp.hooks.fields['MF__database']['fields'].push( "type_" + id );
    },
    
    exportHook: function( e, id, lang, url )
    {
        Event.stop(e);
        
        url = ipb.vars['base_url'] + url + '&secure_key=' + ipb.vars['md5_hash'];
        url = url.replace( /&/g, '&' );
        
        var afterInit = function( popup ){
                            $( id + '_save' ).observe('click', acp.hooks.saveField.bindAsEventListener( this, id ) );
                            //Debug.write("This is the callback");
                        }.bind(this);
                        
        var afterHide = function( popup ){
                            $( popup.getObj() ).remove();
                            acp.hooks.popups[ id ] = null;
                        }.bind(this);
        
        acp.hooks.popups[ id ] = new ipb.Popup('m_' + id, { type: 'pane', modal: true, hideAtStart: false, w: '600px', ajaxURL: url }, { 'afterInit': afterInit, 'afterHide': afterHide } );
        
        Debug.write("Hook " + id);
    },
    
    saveField: function( e, id )
    {
        Event.stop(e);
        var url = acp.hooks.fields[ id ]['url'];
        
        if( !url ){ alert("Невозможно сохранить; отсутствует url"); return; }
        
        url = ipb.vars['base_url'] + url + '&secure_key=' + ipb.vars['md5_hash'];
        url = url.replace( /&/g, '&' );
        
        //-----------------
        var fields = acp.hooks.fields[ id ]['fields'];
        var _params = {};
        
        if ( fields.length )
        {
            for( var i = 0 ; i <= fields.length ; i++ )
            {
                if( $( fields[i] ) )
                {
                    try 
                    {
                        if ( $( fields[i] ).type == 'select-multiple' )
                        {
                            _params[ fields[i] + '[]' ] = $F( fields[i] );
                        }
                        else
                        {
                            _params[ fields[i] ] = $F( fields[i] );
                        }
                    }
                    catch( e )
                    {
                        try
                        {
                            _params[ fields[i] ] = $F( fields[i] + '_yes' );
                        }
                        catch( e ){}
                    }
                }
            }
        }
        
            // Send request
            new Ajax.Request(     url, {
                                method: 'post',
                                parameters: _params,
                                evalJSON: 'force',
                                onSuccess: function(t)
                                {
                                    if( Object.isUndefined( t.responseJSON ) )
                                    {
                                        alert("An error occurred: " + t.responseJSON);
                                        return;
                                    }
                                    if( !t.responseJSON['success'] )
                                    {
                                        alert("An error occurred: " + t.responseJSON['error'] );
                                        return;
                                    }
                                    else
                                    {
                                        if( acp.hooks.fields[ id ]['callback'] )
                                        {
                                            acp.hooks.fields[ id ]['callback']( t, t.responseJSON );
                                        }
                                        acp.hooks.popups[ id ].hide();
                                    }
                                    Debug.write("Success");
                                },
                                onException: function(t){ alert("An error occurred: " + t.responseText); },
                                onFailure: function(t){ alert("An error occurred: " + t.responseText ); }
                            } );
    }
};
acp.hooks.init();
?>