Version 3.0.5
This commit is contained in:
1 parent
19b38c7c74
commit
1d4720f3e2
3755 files changed
+508378
-664541
No files matched your search
@@ -0,0 +1,355 @@
|
||||
/************************************************/
|
||||
/* IPB3 Javascript */
|
||||
/* -------------------------------------------- */
|
||||
/* acp.replacements.js - Replacements functions */
|
||||
/* (c) IPS, Inc 2008 */
|
||||
/* -------------------------------------------- */
|
||||
/* Author: Rikki Tissier */
|
||||
/************************************************/
|
||||
|
||||
var _temp = window.IPBACP;
|
||||
|
||||
_temp.prototype.replacements = {
|
||||
allReplacements: {},
|
||||
currentSetData: {},
|
||||
iconUrl:'',
|
||||
icons: {},
|
||||
add_popup: null,
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Setup
|
||||
*/
|
||||
initialize: function()
|
||||
{
|
||||
document.observe("dom:loaded", function(){
|
||||
|
||||
});
|
||||
},
|
||||
|
||||
addReplacement: function( e )
|
||||
{
|
||||
Event.stop(e);
|
||||
|
||||
if( acp.replacements.add_popup != null )
|
||||
{
|
||||
acp.replacements.add_popup.show();
|
||||
return;
|
||||
}
|
||||
|
||||
var afterInit = function( popup ){
|
||||
$( 'popup_submit' ).observe('click', acp.replacements.doAddReplacement );
|
||||
};
|
||||
|
||||
// Make popup
|
||||
acp.replacements.add_popup = new ipb.Popup('add_replacement_popup', { type: 'pane', modal: false, hideAtStart: false, w: '600px', initial: ipb.templates['add_replacement'] }, { afterInit: afterInit } );
|
||||
|
||||
},
|
||||
|
||||
doAddReplacement: function(e)
|
||||
{
|
||||
var key = $F('popup_key');
|
||||
var content = $F('popup_content');
|
||||
var url = ipb.vars['base_url'] + "app=core&module=ajax&section=replacements&do=saveReplacement&setID=" +
|
||||
acp.replacements.currentSetData['set_id'] + '&secure_key=' + ipb.vars['md5_hash'];
|
||||
|
||||
/* Set up params */
|
||||
var params = { 'replacement_content' : content.encodeParam(),
|
||||
'replacement_set_id' : acp.replacements.currentSetData['set_id'],
|
||||
'_replacement_key' : key.encodeParam(),
|
||||
'type' : 'add'
|
||||
};
|
||||
|
||||
// Send
|
||||
new Ajax.Request( url.replace(/&/g, '&'),
|
||||
{
|
||||
method: 'post',
|
||||
evalJSON: 'force',
|
||||
parameters: params,
|
||||
onSuccess: function(t)
|
||||
{
|
||||
if( Object.isUndefined( t.responseJSON ) )
|
||||
{
|
||||
alert("Произошла ошибка при добавлении макроса");
|
||||
return;
|
||||
}
|
||||
|
||||
if( t.responseJSON['error'] )
|
||||
{
|
||||
alert("При добавлении макроса произошла ошибка: " + t.responseJSON['error']);
|
||||
return;
|
||||
}
|
||||
|
||||
document.location.reload(true);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Registers a replacement
|
||||
*
|
||||
* @param {string} id ID of replacement
|
||||
*/
|
||||
register: function( id )
|
||||
{
|
||||
// find the edit button
|
||||
if( !$('r_' + id + '_edit') ){
|
||||
Debug.info("Couldn't find edit button for " + id);
|
||||
return;
|
||||
}
|
||||
|
||||
$('r_' + id + '_edit').observe('click', acp.replacements.showEdit.bindAsEventListener( this, id ) );
|
||||
|
||||
if( $('r_' + id + '_revert') ){
|
||||
$('r_' + id + '_revert').observe('click', acp.replacements.revertReplacement.bindAsEventListener( this, id ) );
|
||||
}
|
||||
|
||||
if( $('r_' + id + '_delete') ){
|
||||
$('r_' + id + '_delete').observe('click', acp.replacements.deleteReplacement.bindAsEventListener( this, id ) );
|
||||
}
|
||||
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Deletes a replacement
|
||||
*
|
||||
* @param {event} e The event
|
||||
* @param {string} id The replacement key
|
||||
* @SKINNOTE Merge this with revertReplacement
|
||||
*/
|
||||
deleteReplacement: function( e, id )
|
||||
{
|
||||
if( !$('r_' + id + '_delete') ){
|
||||
return;
|
||||
}
|
||||
|
||||
if( !confirm("Вы уверены в том что хотите удалить этот макрос ?") )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var replace = acp.replacements.allReplacements.replacements[ id ];
|
||||
var realid = replace['replacement_id'];
|
||||
|
||||
var url = ipb.vars['base_url'] + "app=core&module=ajax&section=replacements&do=revertReplacement&setID=" + acp.replacements.currentSetData['set_id'] + '&replacement_id=' + realid + '&secure_key=' + ipb.vars['md5_hash'];
|
||||
|
||||
new Ajax.Request( url.replace( /&/g, '&'),
|
||||
{
|
||||
method: 'get',
|
||||
evalJSON: 'force',
|
||||
onSuccess: function(t)
|
||||
{
|
||||
if( Object.isUndefined( t.responseJSON ) )
|
||||
{
|
||||
alert("Ошибка удаления макроса");
|
||||
return;
|
||||
}
|
||||
|
||||
if( t.responseJSON['error'] )
|
||||
{
|
||||
alert("При удалении макроса произошла ошибка: " + t.responseJSON['error']);
|
||||
return;
|
||||
}
|
||||
|
||||
document.location.reload(true);
|
||||
}
|
||||
});
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Reverts a replacement
|
||||
*
|
||||
* @param {event} e The event
|
||||
* @param {string} id Replacement key
|
||||
*/
|
||||
revertReplacement: function( e, id )
|
||||
{
|
||||
if( !$('r_' + id + '_revert') ){
|
||||
return;
|
||||
}
|
||||
|
||||
if( !confirm("Вы уверены в том что хотите отменить этот макрос ?") )
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
var replace = acp.replacements.allReplacements.replacements[ id ];
|
||||
var realid = replace['replacement_id'];
|
||||
|
||||
var url = ipb.vars['base_url'] + "app=core&module=ajax&section=replacements&do=revertReplacement&setID=" + acp.replacements.currentSetData['set_id'] + '&replacement_id=' + realid + '&secure_key=' + ipb.vars['md5_hash'];
|
||||
|
||||
new Ajax.Request( url.replace( /&/g, '&'),
|
||||
{
|
||||
method: 'get',
|
||||
evalJSON: 'force',
|
||||
onSuccess: function(t)
|
||||
{
|
||||
if( Object.isUndefined( t.responseJSON ) )
|
||||
{
|
||||
alert("Ошибка отмены макроса");
|
||||
return;
|
||||
}
|
||||
|
||||
if( t.responseJSON['error'] )
|
||||
{
|
||||
alert("В ходе отмены макроса произошла ошибка: " + t.responseJSON['error']);
|
||||
return;
|
||||
}
|
||||
|
||||
// Swap the image url so we can build proper content
|
||||
var newContent = t.responseJSON['replacements'][ id ].replacement_content;
|
||||
newContent = newContent.gsub(/\{style_image_url\}/, acp.replacements.realImgDir);
|
||||
|
||||
// Update our array
|
||||
t.responseJSON['replacements'][ id ]['real_content'] = newContent;
|
||||
acp.replacements.allReplacements.replacements[ id ] = t.responseJSON['replacements'][ id ];
|
||||
|
||||
// Update cell with new content
|
||||
$('r_' + id + '_content').update( newContent );
|
||||
|
||||
// Hide revert button
|
||||
$('r_' + id + '_revert').hide();
|
||||
|
||||
// Update img
|
||||
var status = 'default';
|
||||
|
||||
if ( acp.replacements.currentSetData['_parentTree'].indexOf( t.responseJSON['replacements'][ id ]['replacement_set_id'] ) != -1 )
|
||||
{
|
||||
var status = 'inherit';
|
||||
}
|
||||
|
||||
$('r_status_' + id ).src = acp.replacements.templateUrl + status + '.png';
|
||||
},
|
||||
onException: function( f,e ){ alert( "Исключение: " + e ) },
|
||||
onFailure: function( t ){ alert( "Ошибка: " + t.responseText ) },
|
||||
onComplete: function(t){ }
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Shows the edit box for this replacement
|
||||
*
|
||||
* @param {event} e The event
|
||||
* @param {string} id ID of replacement
|
||||
*/
|
||||
showEdit: function( e, id )
|
||||
{
|
||||
if( !$('r_' + id + '_content') ){
|
||||
return false;
|
||||
}
|
||||
|
||||
// Update the array with the current content
|
||||
acp.replacements.allReplacements.replacements[ id ]['real_content'] = $('r_' + id + '_content').innerHTML;
|
||||
Debug.dir( acp.replacements.allReplacements );
|
||||
var newContent = ipb.templates['edit_box'].evaluate( { id: id, content: acp.replacements.allReplacements.replacements[ id ]['SAFE_replacement_content'] } );
|
||||
$('r_' + id + '_content').update( newContent );
|
||||
|
||||
// Add events
|
||||
$('r_' + id + '_save').observe('click', acp.replacements.saveReplacement.bindAsEventListener( this, id ) );
|
||||
$('r_' + id + '_cancel').observe('click', acp.replacements.cancelReplacement.bindAsEventListener( this, id ) );
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Saves changes to a replacement
|
||||
*
|
||||
* @param {event} e The event
|
||||
* @param {string} id Replacement to save
|
||||
*/
|
||||
saveReplacement: function( e, id )
|
||||
{
|
||||
if( !$('r_' + id + '_content') || !$('r_' + id + '_textbox') ){
|
||||
return;
|
||||
}
|
||||
|
||||
var replace = acp.replacements.allReplacements.replacements[ id ];
|
||||
var realid = replace['replacement_id'];
|
||||
|
||||
// If its the same as it was, just cancel
|
||||
if( $F('r_' + id + '_textbox' ) == replace['replacement_content'] )
|
||||
{
|
||||
acp.replacements.cancelReplacement( e, id );
|
||||
return;
|
||||
}
|
||||
|
||||
var url = ipb.vars['base_url'] + "app=core&module=ajax&section=replacements&do=saveReplacement&setID=" +
|
||||
acp.replacements.currentSetData['set_id'] + '&replacement_id=' + realid + '&secure_key=' + ipb.vars['md5_hash'];
|
||||
|
||||
/* Set up params */
|
||||
var params = { 'replacement_content' : $F('r_' + id + '_textbox' ).encodeParam(),
|
||||
'replacement_set_id' : acp.replacements.currentSetData['set_id'],
|
||||
'_replacement_key' : id.encodeParam(),
|
||||
'type' : 'edit'
|
||||
};
|
||||
|
||||
new Ajax.Request( url.replace( /&/g, '&'),
|
||||
{
|
||||
method: 'post',
|
||||
parameters: params,
|
||||
evalJSON: 'force',
|
||||
onSuccess: function(t)
|
||||
{
|
||||
if( Object.isUndefined( t.responseJSON ) )
|
||||
{
|
||||
alert("Ошибка сохранения макроса");
|
||||
return;
|
||||
}
|
||||
else if( t.responseJSON['error'] )
|
||||
{
|
||||
alert("При сохранении макроса произошла ошибка: " + t.responseJSON['error']);
|
||||
return;
|
||||
}
|
||||
|
||||
// Swap the image url so we can build proper content
|
||||
var newContent = t.responseJSON['replacements'][ id ].replacement_content;
|
||||
newContent = newContent.gsub(/\{style_image_url\}/, acp.replacements.realImgDir);
|
||||
|
||||
// Update our array
|
||||
t.responseJSON['replacements'][ id ]['real_content'] = newContent;
|
||||
acp.replacements.allReplacements.replacements[ id ] = t.responseJSON['replacements'][ id ];
|
||||
|
||||
// Update cell with new content
|
||||
$('r_' + id + '_content').update( newContent );
|
||||
|
||||
// Update img
|
||||
$('r_status_' + id ).src = acp.replacements.templateUrl + 'modified.png';
|
||||
|
||||
// Add in revert button
|
||||
$('r_revert_wrap_' + id ).update( ipb.templates['revert_button'].evaluate( { id: id } ) );
|
||||
|
||||
if( $('r_' + id + '_revert') ){
|
||||
$('r_' + id + '_revert').observe('click', acp.replacements.revertReplacement.bindAsEventListener( this, id ) );
|
||||
}
|
||||
|
||||
if( $('r_' + id + '_delete') ){
|
||||
$('r_' + id + '_delete').observe('click', acp.replacements.deleteReplacement.bindAsEventListener( this, id ) );
|
||||
}
|
||||
},
|
||||
onException: function( f,e ){ alert( "Exception: " + e ) },
|
||||
onFailure: function( t ){ alert( "Failure: " + t.responseText ) },
|
||||
onComplete: function(t){ }
|
||||
});
|
||||
|
||||
},
|
||||
|
||||
/* ------------------------------ */
|
||||
/**
|
||||
* Cancels editing of replacement
|
||||
*
|
||||
* @param {event} e The event
|
||||
* @param {string} id Replacement to cancel
|
||||
*/
|
||||
cancelReplacement: function( e, id )
|
||||
{
|
||||
if( !$('r_' + id + '_content') ){
|
||||
return false;
|
||||
}
|
||||
|
||||
$('r_' + id + '_content').update( acp.replacements.allReplacements.replacements[ id ]['real_content'] );
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user