mirror of
https://github.com/silverstripe/silverstripe-reports
synced 2024-10-22 11:05:53 +02:00
280 lines
7.2 KiB
JavaScript
280 lines
7.2 KiB
JavaScript
|
/**
|
||
|
* Configuration for the left hand tree
|
||
|
*/
|
||
|
if(typeof SiteTreeHandlers == 'undefined') SiteTreeHandlers = {};
|
||
|
SiteTreeHandlers.parentChanged_url = 'admin/assets/ajaxupdateparent';
|
||
|
SiteTreeHandlers.orderChanged_url = 'admin/assets/ajaxupdatesort';
|
||
|
SiteTreeHandlers.loadPage_url = 'admin/assets/getitem';
|
||
|
SiteTreeHandlers.loadTree_url = 'admin/assets/getsubtree';
|
||
|
SiteTreeHandlers.showRecord_url = 'admin/assets/show/';
|
||
|
var _HANDLER_FORMS = {
|
||
|
addpage : 'addpage_options',
|
||
|
deletepage : 'deletepage_options',
|
||
|
sortitems : 'sortitems_options'
|
||
|
};
|
||
|
|
||
|
/**
|
||
|
* Top-right actions
|
||
|
*/
|
||
|
|
||
|
function action_upload_right(e) {
|
||
|
if(frames['AssetAdmin_upload'].document && frames['AssetAdmin_upload'].document.getElementById('Form_UploadForm')) {
|
||
|
// make sure at least one file is selected for upload
|
||
|
var values = "";
|
||
|
var inputs = $A(frames['AssetAdmin_upload'].document.getElementsByTagName("input"));
|
||
|
inputs.each(function(input) {
|
||
|
if(input.type == "file") values += input.value;
|
||
|
}.bind(this));
|
||
|
|
||
|
if(values.length == 0) {
|
||
|
alert("Please select at least one file for uploading");
|
||
|
openTab("Root_Upload");
|
||
|
} else {
|
||
|
frames['AssetAdmin_upload'].document.getElementById('Form_UploadForm').submit();
|
||
|
}
|
||
|
}
|
||
|
Event.stop(e);
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
function action_deletemarked_right() {
|
||
|
$('action_deletemarked_options').onComplete = function() {}
|
||
|
|
||
|
if(confirm("Do you really want to delete the marked files?")) {
|
||
|
$('action_deletemarked_options').send();
|
||
|
}
|
||
|
}
|
||
|
function action_movemarked_right() {
|
||
|
$('action_movemarked_options').toggle();
|
||
|
}
|
||
|
|
||
|
MarkingPropertiesForm = Class.extend('ActionPropertiesForm');
|
||
|
MarkingPropertiesForm.applyTo('#action_movemarked_options', "Please select some files to move!");
|
||
|
MarkingPropertiesForm.applyTo('#action_deletemarked_options', "Please select some files to delete!");
|
||
|
|
||
|
MarkingPropertiesForm.prototype = {
|
||
|
initialize: function(noneCheckedError) {
|
||
|
this.noneCheckedError = noneCheckedError;
|
||
|
},
|
||
|
|
||
|
send: function() {
|
||
|
var i, list = "", checkboxes = $('Form_EditForm').elements['Files[]'];
|
||
|
if(!checkboxes) checkboxes = [];
|
||
|
if(!checkboxes.length) checkboxes = [ checkboxes ];
|
||
|
for(i=0;i<checkboxes.length;i++) {
|
||
|
if(checkboxes[i].checked) list += (list?',':'') + checkboxes[i].value;
|
||
|
}
|
||
|
|
||
|
if(this.elements.DestFolderID && !this.elements.DestFolderID.value) {
|
||
|
alert("Please select a folder to move files to!");
|
||
|
return false;
|
||
|
|
||
|
} else if(list == "") {
|
||
|
alert(this.noneCheckedError);
|
||
|
return false;
|
||
|
|
||
|
} else {
|
||
|
this.elements.FileIDs.value = list;
|
||
|
return this.ActionPropertiesForm.send();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Add File Action
|
||
|
*/
|
||
|
addfolder = Class.create();
|
||
|
addfolder.applyTo('#addpage');
|
||
|
addfolder.prototype = {
|
||
|
initialize: function () {
|
||
|
Observable.applyTo($(this.id + '_options'));
|
||
|
this.getElementsByTagName('a')[0].onclick = returnFalse;
|
||
|
$(this.id + '_options').onsubmit = this.form_submit;
|
||
|
|
||
|
},
|
||
|
|
||
|
onclick : function() {
|
||
|
statusMessage('Creating new folder...');
|
||
|
this.form_submit();
|
||
|
/*
|
||
|
if(treeactions.toggleSelection(this)) {
|
||
|
var selectedNode = $('sitetree').firstSelected();
|
||
|
|
||
|
if(selectedNode) {
|
||
|
while(selectedNode.parentTreeNode && !selectedNode.hints.defaultChild) {
|
||
|
$('sitetree').changeCurrentTo(selectedNode.parentTreeNode);
|
||
|
selectedNode = selectedNode.parentTreeNode;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
*/
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
form_submit : function() {
|
||
|
var st = $('sitetree');
|
||
|
|
||
|
$('addpage_options').elements.ParentID.value = st.getIdxOf(st.firstSelected());
|
||
|
Ajax.SubmitForm('addpage_options', null, {
|
||
|
onSuccess : Ajax.Evaluator,
|
||
|
onFailure : this.showAddPageError
|
||
|
});
|
||
|
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
showAddPageError: function(response) {
|
||
|
errorMessage('Error adding folder', response);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
|
||
|
/**
|
||
|
* Delete folder action
|
||
|
*/
|
||
|
deletefolder = {
|
||
|
button_onclick : function() {
|
||
|
if(treeactions.toggleSelection(this)) {
|
||
|
deletefolder.o1 = $('sitetree').observeMethod('SelectionChanged', deletefolder.treeSelectionChanged);
|
||
|
deletefolder.o2 = $('deletepage_options').observeMethod('Close', deletefolder.popupClosed);
|
||
|
|
||
|
addClass($('sitetree'),'multiselect');
|
||
|
|
||
|
deletefolder.selectedNodes = { };
|
||
|
|
||
|
var sel = $('sitetree').firstSelected()
|
||
|
if(sel) {
|
||
|
var selIdx = $('sitetree').getIdxOf(sel);
|
||
|
deletefolder.selectedNodes[selIdx] = true;
|
||
|
sel.removeNodeClass('current');
|
||
|
sel.addNodeClass('selected');
|
||
|
}
|
||
|
}
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
treeSelectionChanged : function(selectedNode) {
|
||
|
var idx = $('sitetree').getIdxOf(selectedNode);
|
||
|
|
||
|
if(selectedNode.selected) {
|
||
|
selectedNode.removeNodeClass('selected');
|
||
|
selectedNode.selected = false;
|
||
|
deletefolder.selectedNodes[idx] = false;
|
||
|
|
||
|
} else {
|
||
|
selectedNode.addNodeClass('selected');
|
||
|
selectedNode.selected = true;
|
||
|
deletefolder.selectedNodes[idx] = true;
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
popupClosed : function() {
|
||
|
removeClass($('sitetree'),'multiselect');
|
||
|
$('sitetree').stopObserving(deletefolder.o1);
|
||
|
$('deletepage_options').stopObserving(deletefolder.o2);
|
||
|
|
||
|
for(var idx in deletefolder.selectedNodes) {
|
||
|
if(deletefolder.selectedNodes[idx]) {
|
||
|
node = $('sitetree').getTreeNodeByIdx(idx);
|
||
|
if(node) {
|
||
|
node.removeNodeClass('selected');
|
||
|
node.selected = false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
form_submit : function() {
|
||
|
var csvIDs = "";
|
||
|
for(var idx in deletefolder.selectedNodes) {
|
||
|
var selectedNode = $('sitetree').getTreeNodeByIdx(idx);
|
||
|
var link = selectedNode.getElementsByTagName('a')[0];
|
||
|
|
||
|
if(deletefolder.selectedNodes[idx] && ( !Element.hasClassName( link, 'contents' ) || confirm( "'" + link.firstChild.nodeValue + "' contains files. Would you like to delete the files and folder?" ) ) )
|
||
|
csvIDs += (csvIDs ? "," : "") + idx;
|
||
|
}
|
||
|
|
||
|
if(csvIDs) {
|
||
|
$('deletepage_options').elements.csvIDs.value = csvIDs;
|
||
|
|
||
|
statusMessage('deleting pages');
|
||
|
|
||
|
Ajax.SubmitForm('deletepage_options', null, {
|
||
|
onSuccess : deletefolder.submit_success,
|
||
|
onFailure : function(response) {
|
||
|
errorMessage('Error deleting pages', response);
|
||
|
}
|
||
|
});
|
||
|
|
||
|
$('deletepage').getElementsByTagName('a')[0].onclick();
|
||
|
|
||
|
} else {
|
||
|
alert("Please select at least 1 page.");
|
||
|
}
|
||
|
|
||
|
return false;
|
||
|
},
|
||
|
|
||
|
submit_success: function(response) {
|
||
|
Ajax.Evaluator(response);
|
||
|
treeactions.closeSelection($('deletepage'));
|
||
|
}
|
||
|
}
|
||
|
|
||
|
Behaviour.register({
|
||
|
'#Form_EditForm_Files': {
|
||
|
removeFile : function(fileID) {
|
||
|
var record;
|
||
|
if(record = $('record-' + fileID)) {
|
||
|
record.parentNode.removeChild(record);
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
|
||
|
'#Form_EditForm_Files a.deletelink' : {
|
||
|
onclick : function(event) {
|
||
|
ajaxLink(this.href);
|
||
|
Event.stop(event);
|
||
|
return false;
|
||
|
}
|
||
|
},
|
||
|
|
||
|
|
||
|
'#Form_EditForm' : {
|
||
|
changeDetection_fieldsToIgnore : {
|
||
|
'Files[]' : true
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* We don't want hitting the enter key in the name field
|
||
|
* to submit the form.
|
||
|
*/
|
||
|
Behaviour.register({
|
||
|
'#Form_EditForm_Name' : {
|
||
|
onkeypress : function(event) {
|
||
|
event = (event) ? event : window.event;
|
||
|
var kc = event.keyCode ? event.keyCode : event.charCode;
|
||
|
if(kc == 13) {
|
||
|
return false;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
|
||
|
/**
|
||
|
* Initialisation function to set everything up
|
||
|
*/
|
||
|
appendLoader(function () {
|
||
|
// Set up delete page
|
||
|
Observable.applyTo($('deletepage_options'));
|
||
|
if($('deletepage')) {
|
||
|
$('deletepage').onclick = deletefolder.button_onclick;
|
||
|
$('deletepage').getElementsByTagName('a')[0].onclick = function() { return false; };
|
||
|
$('deletepage_options').onsubmit = deletefolder.form_submit;
|
||
|
}
|
||
|
});
|