diff --git a/javascript/CMSMain.js b/javascript/CMSMain.js index 66d0f6a4..03c58d52 100644 --- a/javascript/CMSMain.js +++ b/javascript/CMSMain.js @@ -208,8 +208,9 @@ // integrate with sitetree selection changes // TODO Only trigger when report is visible - jQuery('#sitetree').bind('selectionchanged', function(e, data) { - self.find(':input[name=ID]').val(data.node.getIdx()); + jQuery('#sitetree_ul').bind('select_node.jstree', function(e, data) { + var node = data.rslt.obj; + self.find(':input[name=ID]').val(node ? $(node).data('id') : null); self.trigger('submit'); }); @@ -329,8 +330,9 @@ }); // integrate with sitetree selection changes - jQuery('#sitetree').bind('selectionchanged', function(e, data) { - self.find(':input[name=ID]').val(data.node.getIdx()); + jQuery('#sitetree_ul').bind('select_node.jstree', function(e, data) { + var node = data.rslt.obj; + self.find(':input[name=ID]').val(node ? $(node).data('id') : null); if(self.is(':visible')) self.trigger('submit'); }); diff --git a/javascript/LeftAndMain.AddForm.js b/javascript/LeftAndMain.AddForm.js index b359ba0a..fb8024a9 100644 --- a/javascript/LeftAndMain.AddForm.js +++ b/javascript/LeftAndMain.AddForm.js @@ -40,11 +40,11 @@ Observable.applyTo(this[0]); - var tree = jQuery('#sitetree')[0]; + var tree = $('#sitetree_ul'); this.setTree(tree); // Event bindings - jQuery(tree).bind('selectionchanged', function(e, data) {self.refresh(data.node);}); + $(tree).bind('select_node.jstree', function(e, data) {self.refresh(data.rslt.obj);}); typeDropdown.bind('change', function(e) {self.refresh();}); // TODO Bind on tree initialization to set dropdown for selected node @@ -66,16 +66,15 @@ * (Event) e */ onsubmit: function(e) { - var newPages = this.getNewPages(); - var tree = this.getTree(); - var parentID = (tree.firstSelected()) ? tree.getIdxOf(tree.firstSelected()) : 0; + var newPages = this.getNewPages(), tree = this.getTree(), node = $(tree).jstree('get_selected'); + var parentID = (node.length) ? node.data('id') : 0; // TODO: Remove 'new-' code http://open.silverstripe.com/ticket/875 - if(parentID && parentID.substr(0,3) == 'new') { - alert(ss.i18n._t('CMSMAIN.WARNINGSAVEPAGESBEFOREADDING')); - } - - if(tree.firstSelected() && jQuery(tree.firstSelected()).hasClass("nochildren")) { + // if(parentID && parentID.substr(0,3) == 'new') { + // alert(ss.i18n._t('CMSMAIN.WARNINGSAVEPAGESBEFOREADDING')); + // } + + if(node && node.hasClass("nochildren")) { alert(ss.i18n._t('CMSMAIN.CANTADDCHILDREN') ); } @@ -83,17 +82,19 @@ if(!newPages[parentID] ) newPages[parentID] = 1; // default to first button - var button = jQuery(this).find(':submit:first'); + var button = this.find(':submit:first'); button.addClass('loading'); // collect data and submit the form - var data = jQuery(this).serializeArray(); + var data = this.serializeArray(); data.push({name:'Suffix',value:newPages[parentID]++}); data.push({name:button.attr('name'),value:button.val()}); + // TODO Should be set by hiddenfield already jQuery('#Form_EditForm').entwine('ss').loadForm( - jQuery(this).attr('action'), + this.attr('action'), function() { + // Tree updates are triggered by Form_EditForm load events button.removeClass('loading'); }, {type: 'POST', data: data} @@ -112,10 +113,10 @@ */ refresh: function(selectedNode) { // Note: Uses siteTreeHints global - var tree = this.getTree(), + var tree = this.getTree(), + selectedNode = selectedNode || $(tree).jstree('get_selected') origOptions = this.getOrigOptions(), dropdown = this.find('select[name=PageType]'); - if(!selectedNode) selectedNode = tree.firstSelected(); // Clear all existing