mirror of
https://github.com/silverstripe/silverstripe-cms
synced 2024-09-06 17:51:17 +02:00
119 lines
3.2 KiB
JavaScript
119 lines
3.2 KiB
JavaScript
|
|
||
|
Behaviour.register({
|
||
|
'#Form_EditForm' : {
|
||
|
initialise : function() {
|
||
|
this.openTab = null;
|
||
|
this.prepareForm();
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Processing called whenever a page is loaded in the right - including the initial one
|
||
|
*/
|
||
|
prepareForm : function() {
|
||
|
ajaxActionsAtTop('Form_EditForm', 'form_actions', 'right');
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Request a page from the server via Ajax
|
||
|
*/
|
||
|
getPageFromServer : function(id) {
|
||
|
if(id) {
|
||
|
this.receivingID = id;
|
||
|
|
||
|
// Treenode might not exist if that part of the tree is closed
|
||
|
var treeNode = $('sitetree').getTreeNodeByIdx(id);
|
||
|
|
||
|
if(treeNode) treeNode.addNodeClass('loading');
|
||
|
|
||
|
statusMessage("loading...");
|
||
|
|
||
|
var requestURL = 'admin/reports/showreport/' + id;
|
||
|
new Ajax.Request(requestURL, {
|
||
|
asynchronous : true,
|
||
|
method : 'post',
|
||
|
postBody : 'ajax=1',
|
||
|
onSuccess : this.successfullyReceivedPage.bind(this),
|
||
|
onFailure : function(response) {
|
||
|
errorMessage('error loading page',response);
|
||
|
}
|
||
|
});
|
||
|
} else {
|
||
|
throw("getPageFromServer: Bad page ID: " + id);
|
||
|
}
|
||
|
},
|
||
|
|
||
|
successfullyReceivedPage : function(response) {
|
||
|
this.loadNewPage(response.responseText);
|
||
|
|
||
|
// Treenode might not exist if that part of the tree is closed
|
||
|
var treeNode = $('sitetree').getTreeNodeByIdx(this.receivingID);
|
||
|
if(treeNode) {
|
||
|
$('sitetree').changeCurrentTo(treeNode);
|
||
|
treeNode.removeNodeClass('loading');
|
||
|
}
|
||
|
statusMessage('');
|
||
|
|
||
|
onload_init_tabstrip();
|
||
|
|
||
|
if( this.openTab ) {
|
||
|
openTab( this.openTab );
|
||
|
this.openTab = null;
|
||
|
}
|
||
|
},
|
||
|
|
||
|
didntReceivePage : function(response) {
|
||
|
errorMessage('error loading page', response);
|
||
|
$('sitetree').getTreeNodeByIdx(this.elements.ID.value).removeNodeClass('loading');
|
||
|
},
|
||
|
|
||
|
/**
|
||
|
* Load a new page into the right-hand form
|
||
|
*/
|
||
|
loadNewPage : function(formContent) {
|
||
|
rightHTML = formContent;
|
||
|
rightHTML = rightHTML.replace(/href *= *"#/g, 'href="' + window.location.href.replace(/#.*$/,'') + '#');
|
||
|
|
||
|
// Prepare iframes for removal, otherwise we get loading bugs
|
||
|
var i, allIframes = this.getElementsByTagName('iframe');
|
||
|
if(allIframes) for(i=0;i<allIframes.length;i++) {
|
||
|
allIframes[i].contentWindow.location.href = 'about:blank';
|
||
|
allIframes[i].parentNode.removeChild(allIframes[i]);
|
||
|
}
|
||
|
|
||
|
this.innerHTML = rightHTML;
|
||
|
|
||
|
allIframes = this.getElementsByTagName('iframe');
|
||
|
if(allIframes) for(i=0;i<allIframes.length;i++) {
|
||
|
try {
|
||
|
allIframes[i].contentWindow.location.href = allIframes[i].src;
|
||
|
} catch(er) {alert(er.message);}
|
||
|
}
|
||
|
|
||
|
_TAB_DIVS_ON_PAGE = [];
|
||
|
|
||
|
try {
|
||
|
var tabs = document.getElementsBySelector('#Form_EditForm ul.tabstrip');
|
||
|
} catch(er) {/* alert('a: '+ er.message + '\n' + er.line);*/ }
|
||
|
try {
|
||
|
for(var i=0;i<tabs.length;i++) if(tabs[i].tagName) initTabstrip(tabs[i]);
|
||
|
} catch(er) { /*alert('b: '+ er.message + '\n' + er.line); */}
|
||
|
|
||
|
if((typeof tinyMCE != 'undefined') && tinyMCE.instances) {
|
||
|
tinyMCE.instances = [];
|
||
|
tinyMCE.isLoaded = false;
|
||
|
tinyMCE.onLoad();
|
||
|
}
|
||
|
|
||
|
// if(this.prepareForm) this.prepareForm();
|
||
|
Behaviour.apply($('Form_EditForm'));
|
||
|
if(this.prepareForm)
|
||
|
this.prepareForm();
|
||
|
|
||
|
this.resetElements();
|
||
|
|
||
|
window.ontabschanged();
|
||
|
|
||
|
}
|
||
|
}
|
||
|
});
|