/************************************************/ /* 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();