From c8c8811f64031b320bbc55ff036e678ac8f9cf4b Mon Sep 17 00:00:00 2001 From: Tom Rix Date: Thu, 28 Jan 2010 20:10:58 +0000 Subject: [PATCH] ENHANCEMENT adapt the page dropdown based off the allowedChildren values git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/cms/branches/2.4@97745 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- javascript/CMSMain_left.js | 47 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/javascript/CMSMain_left.js b/javascript/CMSMain_left.js index b00fe33c..b8deb67e 100755 --- a/javascript/CMSMain_left.js +++ b/javascript/CMSMain_left.js @@ -13,10 +13,25 @@ var addpageclass; addpageclass = Class.create(); addpageclass.applyTo('#addpage'); addpageclass.prototype = { + originalValues: new Array(), initialize: function () { Observable.applyTo($(_HANDLER_FORMS[this.id])); this.getElementsByTagName('button')[0].onclick = returnFalse; $(_HANDLER_FORMS[this.id]).onsubmit = this.form_submit; + + // Save the original page types in to this object + if ($(_HANDLER_FORMS.addpage).elements.PageType) { + var options = $(_HANDLER_FORMS.addpage).elements.PageType.options; + for(var i = 0; i < options.length; i++) { + this.originalValues.push({ + 'value': options[i].value, + 'label': options[i].innerHTML, + }); + } + + var selectedNode = $('sitetree').firstSelected(); + if(selectedNode) this.showApplicableChildrenPageTypes(selectedNode.hints); + } }, onclick : function() { @@ -40,7 +55,39 @@ addpageclass.prototype = { return false; }, + // Reset the page types dropdown to its original state + resetPageTypeOptions: function() { + var select = $(_HANDLER_FORMS.addpage).elements.PageType; + while (select.childNodes.length >= 1) { select.removeChild(select.firstChild); } + for(var i = 0; i < this.originalValues.length; i++) { + var option = document.createElement('option'); + option.value = this.originalValues[i].value; + option.innerHTML = this.originalValues[i].label; + select.appendChild(option); + } + }, + + // Hide the