From f29c0797923c0bccbfddf9231f190a9de02262d6 Mon Sep 17 00:00:00 2001 From: Sean Harvey Date: Wed, 16 Dec 2009 05:37:41 +0000 Subject: [PATCH] MINOR fixed widget area MINOR added select box listing anchors in text (from r94198) git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/trunk@95592 467b73ca-7a2a-4603-9d3b-597d59a354a9 --- javascript/tiny_mce_improvements.js | 53 +++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/javascript/tiny_mce_improvements.js b/javascript/tiny_mce_improvements.js index 0b404ed4e..633a5b3eb 100755 --- a/javascript/tiny_mce_improvements.js +++ b/javascript/tiny_mce_improvements.js @@ -56,7 +56,60 @@ LinkForm.prototype = { } }, + getAnchors: function() { + var raw = tinyMCE.activeEditor.getContent().match(/name="([a-zA-Z0-9-_]+?)"/gim); + if (raw.length) { + var anchors = new Array(); + for(var i = 0; i < raw.length; i++) { + anchors.push(raw[i].substr(6).replace(/"$/, '')); + } + return anchors; + } else { return false; } + }, + + drawAnchorHelpers: function(anchors) { + + if (!$('Form_EditorToolbarLinkForm_AnchorSelector')) { + var fieldHolder = $('Form_EditorToolbarLinkForm_Anchor').parentNode; + var anchorSelector = document.createElement('select'); + anchorSelector.id = 'Form_EditorToolbarLinkForm_AnchorSelector'; + fieldHolder.appendChild(anchorSelector); + } else { + var anchorSelector = $('Form_EditorToolbarLinkForm_AnchorSelector'); + if (anchorSelector.hasChildNodes()) { + while (anchorSelector.childNodes.length >= 1) { + anchorSelector.removeChild(anchorSelector.firstChild); + } + } + } + + var opt = document.createElement('option'); + opt.value = ''; + opt.appendChild(document.createTextNode('Select an anchor')); + anchorSelector.appendChild(opt); + + anchorSelector.onchange = function(e) { + if (!e) e = window.event; + $('Form_EditorToolbarLinkForm_Anchor').value = e.target.options[e.target.selectedIndex].value; + } + + for (var i = 0; i < anchors.length; i++) { + var opt = document.createElement('option'); + opt.value = anchors[i]; + opt.appendChild(document.createTextNode(anchors[i])); + anchorSelector.appendChild(opt); + } + + + }, + toggle: function(ed) { + var anchors = this.getAnchors(); + // Change this to false to disable anchor hinting + if (anchors && true) { + // Draw anchors list + this.drawAnchorHelpers(anchors); + } this.ToolbarForm.toggle(ed); this.respondToNodeChange(ed); },