diff --git a/wp-admin/wp-quicktags.js b/wp-admin/wp-quicktags.js index c682b8b3b..4f566e9d3 100644 --- a/wp-admin/wp-quicktags.js +++ b/wp-admin/wp-quicktags.js @@ -2,21 +2,161 @@ // by Alex King // http://www.alexking.org/ -function edButton() { - this.id = ''; // used to name the toolbar button - this.display = ''; // label on button - this.tagStart = ''; // open tag - this.tagEnd = ''; // close tag - this.open = 0; // set to -1 if tag does not need to be closed - this.access = ''; // access key -} - +var edButtons = new Array(); +var edLinks = new Array(); var edOpenTags = new Array(); +function edButton(id, display, tagStart, tagEnd, access, open) { + this.id = id; // used to name the toolbar button + this.display = display; // label on button + this.tagStart = tagStart; // open tag + this.tagEnd = tagEnd; // close tag + this.access = access; // access key + this.open = open; // set to -1 if tag does not need to be closed +} + +/* +** TODO: Make it so ins and del have proper datetime attributes, formatted as so: ** +1999-02-22T16:03:30-08:00 + +** Here's my start ** +var now = new Date(); +var datetime = now.getFullYear() + '-' + + +*/ + +edButtons[edButtons.length] = new edButton('ed_strong' + ,'B' + ,'' + ,'' + ,'b' + ); + +edButtons[edButtons.length] = new edButton('ed_em' + ,'i' + ,'' + ,'' + ,'i' + ); + +edButtons[edButtons.length] = new edButton('ed_del' + ,'del' + ,'' + ,'' + ,'d' + ); + +edButtons[edButtons.length] = new edButton('ed_ins' + ,'ins' + ,'' + ,'' + ,'d' + ); + +edButtons[edButtons.length] = new edButton('ed_link' + ,'link' + ,'' + ,'' + ,'a' + ); // special case + +edButtons[edButtons.length] = new edButton('ed_img' + ,'img' + ,'' + ,'' + ,'m' + ,-1 + ); // special case + +edButtons[edButtons.length] = new edButton('ed_ul' + ,'ul' + ,'' + ,'u' + ); + +edButtons[edButtons.length] = new edButton('ed_ol' + ,'ol' + ,'
    ' + ,'
' + ,'o' + ); + +edButtons[edButtons.length] = new edButton('ed_li' + ,'li' + ,'
  • ' + ,'
  • ' + ,'l' + ); + +edButtons[edButtons.length] = new edButton('ed_block' + ,'b-quote' + ,'
    ' + ,'
    ' + ,'q' + ); + +edButtons[edButtons.length] = new edButton('ed_pre' + ,'pre' + ,'
    '
    +                                          ,'
    ' + ); + +edButtons[edButtons.length] = new edButton('ed_more' + ,'more' + ,'' + ,'' + ,'t' + ,-1 + ); + +edButtons[edButtons.length] = new edButton('ed_next' + ,'n-page' + ,'' + ,'' + ,'p' + ,-1 + ); + +function edLink() { + this.display = ''; + this.URL = ''; + this.newWin = 0; +} + +edLinks[edLinks.length] = new edLink('WordPress' + ,'http://wordpress.org/' + ); + +edLinks[edLinks.length] = new edLink('alexking.org' + ,'http://www.alexking.org/' + ); + +function edShowButton(button, i) { + if (button.id == 'ed_img') { + document.write(''); + } + else if (button.id == 'ed_link') { + document.write(''); + } + else { + document.write(''); + } +} + +function edShowLinks() { + var tempStr = ''; + document.write(tempStr); +} + function edAddTag(button) { - if (eval('ed' + button + '.tagEnd') != '') { + if (edButtons[button].tagEnd != '') { edOpenTags[edOpenTags.length] = button; - document.getElementById(eval('ed' + button + '.id')).value = '/' + document.getElementById(eval('ed' + button + '.id')).value; + document.getElementById(edButtons[button].id).value = '/' + document.getElementById(edButtons[button].id).value; } } @@ -25,7 +165,7 @@ function edRemoveTag(button) { for (i = 0; i < edOpenTags.length; i++) { if (edOpenTags[i] == button) { edOpenTags.splice(i, 1); - document.getElementById(eval('ed' + button + '.id')).value = document.getElementById(eval('ed' + button + '.id')).value.replace('/', ''); + document.getElementById(edButtons[button].id).value = document.getElementById(edButtons[button].id).value.replace('/', ''); } } } @@ -52,157 +192,21 @@ function edCloseAllTags() { } } -/* -** TODO: Make it so ins and del have proper datetime attributes, formatted as so: ** -1999-02-22T16:03:30-08:00 - -** Here's my start ** -var now = new Date(); -var datetime = now.getFullYear() + '-' + - -*/ - -var ed0 = new edButton(); -ed0.id = 'ed_strong'; -ed0.display = 'B'; -ed0.tagStart = ''; -ed0.tagEnd = ''; -ed0.access = 'b'; - -var ed1 = new edButton(); -ed1.id = 'ed_em'; -ed1.display = 'i'; -ed1.tagStart = ''; -ed1.tagEnd = ''; -ed1.access = 'i'; - -var ed2 = new edButton(); -ed2.id = 'ed_del'; -ed2.display = 'del'; -ed2.tagStart = ''; -ed2.tagEnd = ''; -ed2.access = 'd'; - -var ed3 = new edButton(); -ed3.id = 'ed_ins'; -ed3.display = 'ins'; -ed3.tagStart = ''; -ed3.tagEnd = ''; -ed3.access = 'n'; - -var ed4 = new edButton(); -ed4.id = 'ed_link'; -ed4.display = 'link'; -ed4.tagStart = ''; // special case -ed4.tagEnd = ''; -ed4.access = 'a'; - -var ed5 = new edButton(); -ed5.id = 'ed_img'; -ed5.display = 'img'; -ed5.tagStart = ''; // special case -ed5.tagEnd = ''; -ed5.open = -1; -ed5.access = 'm'; - -var ed6 = new edButton(); -ed6.id = 'ed_ul'; -ed6.display = 'ul'; -ed6.tagStart = ''; -ed6.access = 'u'; - -var ed7 = new edButton(); -ed7.id = 'ed_ol'; -ed7.display = 'ol'; -ed7.tagStart = '
      \n'; -ed7.tagEnd = '
    '; -ed7.access = 'o'; - -var ed8 = new edButton(); -ed8.id = 'ed_li'; -ed8.display = 'li'; -ed8.tagStart = '\t
  • '; -ed8.tagEnd = '
  • \n'; -ed8.access = 'l'; - -var ed9 = new edButton(); -ed9.id = 'ed_block'; -ed9.display = 'b-quote'; -ed9.tagStart = '
    '; -ed9.tagEnd = '
    '; -ed9.access = 'q'; - -var ed10 = new edButton(); -ed10.id = 'ed_pre'; -ed10.display = 'pre'; -ed10.tagStart = '
    ';
    -ed10.tagEnd = '
    '; -ed10.access = ''; - -var ed11 = new edButton(); -ed11.id = 'ed_more'; -ed11.display = 'more'; -ed11.tagStart = ''; -ed11.tagEnd = ''; -ed11.access = 't'; - -var ed12 = new edButton(); -ed12.id = 'ed_next'; -ed12.display = 'n-page'; -ed12.tagStart = ''; -ed12.tagEnd = ''; -ed12.access = 'p'; - -var edButtonCount = 13; - -function edShowButton(button, i) { - if (button.id == 'ed_img') { - document.write(''); - } - else if (button.id == 'ed_link') { - document.write(''); - } - else { - document.write(''); - } -} - -function edLink() { - this.display = ''; - this.URL = ''; - this.newWin = 0; -} - -var edLink0 = new edLink; -edLink0.display = 'WordPress'; -edLink0.URL = 'http://wordpress.org/'; - -var edLink1 = new edLink; -edLink1.display = 'alexking.org'; -edLink1.URL = 'http://www.alexking.org/'; - -var edLinkCount = 2; - -function edShowLinks() { - var tempStr = ''; - document.write(tempStr); -} - function edQuickLink(i, thisSelect) { if (i > -1) { var newWin = ''; - if (eval('edLink' + i + '.newWin') == 1) { + if (edLinks[i].newWin == 1) { newWin = ' target="_blank"'; } - var tempStr = '' + eval('edLink' + i + '.display') + ''; + var tempStr = '' + + edLinks[i].display + + ''; + thisSelect.selectedIndex = 0; edInsertContent(edCanvas, tempStr); } - thisSelect.selectedIndex = 0; + else { + thisSelect.selectedIndex = 0; + } } function edSpell(myField) { @@ -225,14 +229,14 @@ function edSpell(myField) { word = prompt('Enter a word to look up:', ''); } if (word != '') { - window.open('http://dictionary.reference.com/search?q=' + word); + window.open('http://dictionary.reference.com/search?q=' + escape(word)); } } function edToolbar() { document.write('
    '); - for (i = 0; i < edButtonCount; i++) { - edShowButton(eval('ed' + i), i); + for (i = 0; i < edButtons.length; i++) { + edShowButton(edButtons[i], i); } document.write(''); document.write(''); @@ -248,15 +252,15 @@ function edInsertTag(myField, i) { myField.focus(); sel = document.selection.createRange(); if (sel.text.length > 0) { - sel.text = eval('ed' + i + '.tagStart') + sel.text + eval('ed' + i + '.tagEnd'); + sel.text = edButtons[i].tagStart + sel.text + edButtons[i].tagEnd; } else { - if (!edCheckOpenTags(i) || eval('ed' + i + '.tagEnd') == '') { - sel.text = eval('ed' + i + '.tagStart'); + if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') { + sel.text = edButtons[i].tagStart; edAddTag(i); } else { - sel.text = eval('ed' + i + '.tagEnd'); + sel.text = edButtons[i].tagEnd; edRemoveTag(i); } } @@ -269,26 +273,28 @@ function edInsertTag(myField, i) { var cursorPos; if (startPos != endPos) { myField.value = myField.value.substring(0, startPos) - + eval('ed' + i + '.tagStart') + + edButtons[i].tagStart + myField.value.substring(startPos, endPos) - + eval('ed' + i + '.tagEnd') + + edButtons[i].tagEnd + myField.value.substring(endPos, myField.value.length); - cursorPos = endPos + eval('ed' + i + '.tagStart').length + eval('ed' + i + '.tagEnd').length; + cursorPos = endPos + + edButtons[i].tagStart.length + + edButtons[i].length; } else { - if (!edCheckOpenTags(i) || eval('ed' + i + '.tagEnd') == '') { + if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') { myField.value = myField.value.substring(0, startPos) - + eval('ed' + i + '.tagStart') + + edButtons[i].tagStart + myField.value.substring(endPos, myField.value.length); edAddTag(i); - cursorPos = startPos + eval('ed' + i + '.tagStart').length; + cursorPos = startPos + edButtons[i].tagStart.length; } else { myField.value = myField.value.substring(0, startPos) - + eval('ed' + i + '.tagEnd') + + edButtons[i].tagEnd + myField.value.substring(endPos, myField.value.length); edRemoveTag(i); - cursorPos = startPos + eval('ed' + i + '.tagEnd').length; + cursorPos = startPos + edButtons[i].tagEnd.length; } } myField.focus(); @@ -296,12 +302,12 @@ function edInsertTag(myField, i) { myField.selectionEnd = cursorPos; } else { - if (!edCheckOpenTags(i) || eval('ed' + i + '.tagEnd') == '') { - myField.value += eval('ed' + i + '.tagStart'); + if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') { + myField.value += edButtons[i].tagStart; edAddTag(i); } else { - myField.value += eval('ed' + i + '.tagEnd'); + myField.value += edButtons[i].tagEnd; edRemoveTag(i); } myField.focus(); @@ -332,14 +338,25 @@ function edInsertContent(myField, myValue) { } } -function edInsertLink(myField, i) { +function edInsertLink(myField, i, defaultValue) { + if (!defaultValue) { + defaultValue = 'http://'; + } if (!edCheckOpenTags(i)) { - eval('ed' + i + '.tagStart = \'\''); + edButtons[i].tagStart = ''; } edInsertTag(myField, i); } function edInsertImage(myField) { - var myValue = '' + prompt('Enter a description of the image', '') + ''; + var myValue = '' 
+	            + prompt('Enter a description of the image', '') 
+	            + ''; edInsertContent(myField, myValue); }