silverstripe-reports/javascript/CommentTableField.js

135 lines
3.6 KiB
JavaScript
Raw Normal View History

CommentTableField = Class.create();
CommentTableField.prototype = {
initialize: function() {
var rules = {};
rules['#'+this.id+' table.data a.spamlink'] = {
onclick: this.removeRowAfterAjax.bind(this)
};
rules['#'+this.id+' table.data a.approvelink'] = {
onclick: this.removeRowAfterAjax.bind(this)
};
rules['#'+this.id+' table.data a.hamlink'] = {
onclick: this.removeRowAfterAjax.bind(this)
};
rules['#Form_EditForm div.CommentFilter input'] = {
onkeypress : this.prepareSearch.bind(this)
};
rules['#Form_EditForm'] = {
changeDetection_fieldsToIgnore : {
'ctf[start]' : true,
'ctf[ID]' : true,
'CommentFilterButton' : true,
'CommentFieldName' : true,
'Name' : true,
'Comment' : true,
'Comments[]' : true,
'Page' : true,
'CommentSearch' : true
}
}
Behaviour.register(rules);
},
removeRowAfterAjax: function(e) {
var img = Event.element(e);
var link = Event.findElement(e,"a");
var row = Event.findElement(e,"tr");
img.setAttribute("src",'cms/images/network-save.gif'); // TODO doesn't work in Firefox1.5+
new Ajax.Request(
link.getAttribute("href"),
{
method: 'post',
postBody: 'forceajax=1',
onComplete: function(){
Effect.Fade(row);
}.bind(this),
onFailure: ajaxErrorHandler
}
);
Event.stop(e);
},
// prevent submission of wrong form-button (CommentFilterButton)
prepareSearch: function(e) {
// IE6 doesnt send an event-object with onkeypress
var event = (e) ? e : window.event;
var keyCode = (event.keyCode) ? event.keyCode : event.which;
if(keyCode == Event.KEY_RETURN) {
var el = Event.element(event);
$('CommentFilterButton').onclick(event);
Event.stop(event);
return false;
}
}
}
CommentTableField.applyTo('div.CommentTableField');
CommentFilterButton = Class.create();
CommentFilterButton.applyTo('#Form_EditForm #CommentFilterButton');
CommentFilterButton.prototype = {
initialize: function() {
this.inputFields = new Array();
var childNodes = this.parentNode.getElementsByTagName('input');
for( var index = 0; index < childNodes.length; index++ ) {
if( childNodes[index].tagName ) {
childNodes[index].resetChanged = function() { return false; }
childNodes[index].isChanged = function() { return false; }
this.inputFields.push( childNodes[index] );
}
}
childNodes = this.parentNode.getElementsByTagName('select');
for( var index = 0; index < childNodes.length; index++ ) {
if( childNodes[index].tagName ) {
childNodes[index].resetChanged = function() { return false; }
childNodes[index].field_changed = function() { return false; }
this.inputFields.push( childNodes[index] );
}
}
},
isChanged: function() {
return false;
},
onclick: function(e) {
//if(!$('ctf-ID') || !$('CommentFieldName')) {
// return false;
//}
var updateURL = "";
updateURL += Event.findElement(e,"form").action;
// we can't set "fieldName" as a HiddenField because there might be multiple ComplexTableFields in a single EditForm-container
updateURL += "&fieldName="+$('CommentFieldName').value;
updateURL += "&action_callfieldmethod&&methodName=ajax_refresh&";
for( var index = 0; index < this.inputFields.length; index++ ) {
if( this.inputFields[index].tagName ) {
updateURL += this.inputFields[index].name + '=' + encodeURIComponent( this.inputFields[index].value ) + '&';
}
}
updateURL += 'ajax=1';
new Ajax.Request( updateURL, {
onSuccess: Ajax.Evaluator,
onFailure: function( response ) {
errorMessage('Could not filter results: ' + response.responseText );
}.bind(this)
});
return false;
}
}