silverstripe-cms/javascript/ThumbnailStripField.js
Sean Harvey 33467b2011 ENHANCEMENT Added error messages to flash uploader panel, to be consistent with the image uploader one
BUGFIX Fixed flash uploader not searching for the correct files, due to changes in r65820


git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/branches/2.3@65827 467b73ca-7a2a-4603-9d3b-597d59a354a9
2011-02-02 17:47:35 +13:00

80 lines
2.6 KiB
JavaScript
Executable File

ThumbnailStripField = Class.create();
// We do this instead of div.thumbnailstrip for efficiency. It means that ThumbnailStripField can only be used in the
// CMS toolbar
ThumbnailStripField.applyTo('#Image');
ThumbnailStripField.applyTo('#Flash');
ThumbnailStripField.prototype = {
/**
* @var updateMethod string Specifies the Ajax-call for getting files
* (currently either "getimages" or "getflash"). This can be specified
* in the PHP-constructor of ThumbnailStripField and is passed to the client
* as a fake css-class.
*/
updateMethod: 'getimages',
initialize: function() {
try {
this.updateMethod = this.className.match(/updatemethod=([^ ]+)/)[1];
} catch(err) {}
if(this.className.match(/parent=([^ ]+)/)) {
// HACK: This is hard-coded to only work with TreeDropdownFields
var parentField = $(RegExp.$1).parentNode;
if(parentField) {
parentField.observeMethod('Change', this.ajaxGetFiles.bind(this));
}
console.debug(parentField);
var searchField = $$('#' + this.updateMethod + 'Search input')[0];
var timeout = undefined;
if(searchField) {
Event.observe(searchField, 'keypress', function(event) {
if(timeout != undefined) clearTimeout(timeout);
timeout = setTimeout(function() {
var searchText = searchField.value;
$('Flash').ajaxGetFiles(null, searchText);
$('Image').ajaxGetFiles(null, searchText);
}, 500);
});
}
}
},
ajaxGetFiles: function(folderID, searchText, callback) {
if(!callback) callback = this.reapplyBehaviour.bind(this);
var securityID = ($('SecurityID') ? '&SecurityID=' + $('SecurityID').value : '');
this.innerHTML = '<h2>Loading...</h2>';
var ajaxURL = this.helperURLBase() + '&methodName=' + this.updateMethod + '&folderID=' + folderID + '&searchText=' + searchText + securityID + '&cacheKillerDate=' + parseInt((new Date()).getTime()) + '&cacheKillerRand=' + parseInt(10000 * Math.random());
new Ajax.Updater(this, ajaxURL, {
method : 'get',
onComplete : callback,
onFailure : function(response) { errorMessage("Error getting files", response); }
});
},
reapplyBehaviour: function() {
Behaviour.apply(this);
},
helperURLBase: function() {
var fieldName = this.id;
var ownerForm = this.ownerForm();
var securityID = ($('SecurityID') ? '&SecurityID=' + $('SecurityID').value : '');
return ownerForm.action + '?action_callfieldmethod=1&fieldName=' + fieldName + '&ajax=1' + securityID;
},
ownerForm: function() {
var f =this.parentNode;
while(f && f.tagName.toLowerCase() != 'form') f = f.parentNode;
return f;
}
}