From 887da2374be4ff847782d5e757b9055f40b35f77 Mon Sep 17 00:00:00 2001 From: Tom Rix Date: Wed, 2 Dec 2009 00:23:37 +0000 Subject: [PATCH] MINOR fixed widget area MINOR added select box listing anchors in text git-svn-id: svn://svn.silverstripe.com/silverstripe/open/modules/sapphire/branches/2.4@94198 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 7706835d2..e5b004302 100755 --- a/javascript/tiny_mce_improvements.js +++ b/javascript/tiny_mce_improvements.js @@ -58,7 +58,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); },