diff --git a/admin/javascript/LeftAndMain.EditForm.js b/admin/javascript/LeftAndMain.EditForm.js index 77cb0708a47..87d6490cde8 100644 --- a/admin/javascript/LeftAndMain.EditForm.js +++ b/admin/javascript/LeftAndMain.EditForm.js @@ -88,6 +88,11 @@ if(this.hasClass('validationerror')) { // TODO validation shouldnt need a special case statusMessage(ss.i18n._t('ModelAdmin.VALIDATIONERROR', 'Validation Error'), 'bad'); + + // Ensure the first validation error is visible + var firstTabWithErrors = this.find('.message.validation:first').closest('.tab'); + $('.cms-container').clearCurrentTabState(); // clear state to avoid override later on + firstTabWithErrors.closest('.tabset').tabs('select', firstTabWithErrors.attr('id')); } // Move navigator to preview if one is available. diff --git a/admin/javascript/LeftAndMain.js b/admin/javascript/LeftAndMain.js index 9c45735cc44..c558474afca 100644 --- a/admin/javascript/LeftAndMain.js +++ b/admin/javascript/LeftAndMain.js @@ -473,6 +473,30 @@ jQuery.noConflict(); } }, + /** + * Remove any previously saved state. + * + * Parameters: + * (String) url Optional (sanitized) URL to clear a specific state. + */ + clearTabState: function(url) { + if(typeof(window.sessionStorage)=="undefined") return; + + var s = window.sessionStorage; + if(url) { + s.removeItem('tabs-' + url); + } else { + for(var i=0;i