diff --git a/admin/code/LeftAndMain.php b/admin/code/LeftAndMain.php index e1e27983c..8dcfbdb7f 100644 --- a/admin/code/LeftAndMain.php +++ b/admin/code/LeftAndMain.php @@ -268,7 +268,9 @@ class LeftAndMain extends Controller implements PermissionProvider { FRAMEWORK_DIR . '/javascript/GridField.js', ) ); - + + if (Director::isDev()) Requirements::javascript(FRAMEWORK_ADMIN_DIR . '/javascript/leaktools.js'); + HTMLEditorField::include_js(); Requirements::combine_files( diff --git a/admin/javascript/leaktools.js b/admin/javascript/leaktools.js new file mode 100644 index 000000000..06bd8d7de --- /dev/null +++ b/admin/javascript/leaktools.js @@ -0,0 +1,49 @@ +(function($){ + + var getHTML = function(el) { + var clone = el.cloneNode(true); + + var div = $('
'); + div.append(clone); + + return div.html(); + } + + $.leaktools = { + + logDuplicateElements: function(){ + var els = $('*'); + var dirty = false; + + els.each(function(i, a){ + els.not(a).each(function(j, b){ + if (getHTML(a) == getHTML(b)) { + dirty = true; + console.log(a, b); + } + }) + }) + + if (!dirty) console.log('No duplicates found'); + }, + + logUncleanedElements: function(clean){ + $.each($.cache, function(){ + var source = this.handle && this.handle.elem; + if (!source) return; + + var parent = source; + while (parent && parent.nodeType == 1) parent = parent.parentNode; + + if (!parent) { + console.log('Unattached', source); + console.log(this.events); + if (clean) $(source).unbind().remove(); + } + else if (parent !== document) console.log('Attached, but to', parent, 'not our document', source); + }) + } + }; + + +})(jQuery); \ No newline at end of file