[ Index ] |
|
Code source de WordPress 2.1.2 |
1 // new edit toolbar used with permission 2 // by Alex King 3 // http://www.alexking.org/ 4 5 var edButtons = new Array(); 6 var edLinks = new Array(); 7 var edOpenTags = new Array(); 8 9 function edButton(id, display, tagStart, tagEnd, access, open) { 10 this.id = id; // used to name the toolbar button 11 this.display = display; // label on button 12 this.tagStart = tagStart; // open tag 13 this.tagEnd = tagEnd; // close tag 14 this.access = access; // access key 15 this.open = open; // set to -1 if tag does not need to be closed 16 } 17 18 function zeroise(number, threshold) { 19 // FIXME: or we could use an implementation of printf in js here 20 var str = number.toString(); 21 if (number < 0) { str = str.substr(1, str.length) } 22 while (str.length < threshold) { str = "0" + str } 23 if (number < 0) { str = '-' + str } 24 return str; 25 } 26 27 var now = new Date(); 28 var datetime = now.getUTCFullYear() + '-' + 29 zeroise(now.getUTCMonth() + 1, 2) + '-' + 30 zeroise(now.getUTCDate(), 2) + 'T' + 31 zeroise(now.getUTCHours(), 2) + ':' + 32 zeroise(now.getUTCMinutes(), 2) + ':' + 33 zeroise(now.getUTCSeconds() ,2) + 34 '+00:00'; 35 36 edButtons[edButtons.length] = 37 new edButton('ed_strong' 38 ,'b' 39 ,'<strong>' 40 ,'</strong>' 41 ,'b' 42 ); 43 44 edButtons[edButtons.length] = 45 new edButton('ed_em' 46 ,'i' 47 ,'<em>' 48 ,'</em>' 49 ,'i' 50 ); 51 52 edButtons[edButtons.length] = 53 new edButton('ed_link' 54 ,'link' 55 ,'' 56 ,'</a>' 57 ,'a' 58 ); // special case 59 60 edButtons[edButtons.length] = 61 new edButton('ed_block' 62 ,'b-quote' 63 ,'\n\n<blockquote>' 64 ,'</blockquote>\n\n' 65 ,'q' 66 ); 67 68 69 edButtons[edButtons.length] = 70 new edButton('ed_del' 71 ,'del' 72 ,'<del datetime="' + datetime + '">' 73 ,'</del>' 74 ,'d' 75 ); 76 77 edButtons[edButtons.length] = 78 new edButton('ed_ins' 79 ,'ins' 80 ,'<ins datetime="' + datetime + '">' 81 ,'</ins>' 82 ,'s' 83 ); 84 85 edButtons[edButtons.length] = 86 new edButton('ed_img' 87 ,'img' 88 ,'' 89 ,'' 90 ,'m' 91 ,-1 92 ); // special case 93 94 edButtons[edButtons.length] = 95 new edButton('ed_ul' 96 ,'ul' 97 ,'<ul>\n' 98 ,'</ul>\n\n' 99 ,'u' 100 ); 101 102 edButtons[edButtons.length] = 103 new edButton('ed_ol' 104 ,'ol' 105 ,'<ol>\n' 106 ,'</ol>\n\n' 107 ,'o' 108 ); 109 110 edButtons[edButtons.length] = 111 new edButton('ed_li' 112 ,'li' 113 ,'\t<li>' 114 ,'</li>\n' 115 ,'l' 116 ); 117 118 edButtons[edButtons.length] = 119 new edButton('ed_code' 120 ,'code' 121 ,'<code>' 122 ,'</code>' 123 ,'c' 124 ); 125 126 edButtons[edButtons.length] = 127 new edButton('ed_more' 128 ,'more' 129 ,'<!--more-->' 130 ,'' 131 ,'t' 132 ,-1 133 ); 134 /* 135 edButtons[edButtons.length] = 136 new edButton('ed_next' 137 ,'page' 138 ,'<!--nextpage-->' 139 ,'' 140 ,'p' 141 ,-1 142 ); 143 */ 144 function edLink() { 145 this.display = ''; 146 this.URL = ''; 147 this.newWin = 0; 148 } 149 150 edLinks[edLinks.length] = new edLink('WordPress' 151 ,'http://wordpress.org/' 152 ); 153 154 edLinks[edLinks.length] = new edLink('alexking.org' 155 ,'http://www.alexking.org/' 156 ); 157 158 function edShowButton(button, i) { 159 if (button.id == 'ed_img') { 160 document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertImage(edCanvas);" value="' + button.display + '" />'); 161 } 162 else if (button.id == 'ed_link') { 163 document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertLink(edCanvas, ' + i + ');" value="' + button.display + '" />'); 164 } 165 else { 166 document.write('<input type="button" id="' + button.id + '" accesskey="' + button.access + '" class="ed_button" onclick="edInsertTag(edCanvas, ' + i + ');" value="' + button.display + '" />'); 167 } 168 } 169 170 function edShowLinks() { 171 var tempStr = '<select onchange="edQuickLink(this.options[this.selectedIndex].value, this);"><option value="-1" selected>(Quick Links)</option>'; 172 for (i = 0; i < edLinks.length; i++) { 173 tempStr += '<option value="' + i + '">' + edLinks[i].display + '</option>'; 174 } 175 tempStr += '</select>'; 176 document.write(tempStr); 177 } 178 179 function edAddTag(button) { 180 if (edButtons[button].tagEnd != '') { 181 edOpenTags[edOpenTags.length] = button; 182 document.getElementById(edButtons[button].id).value = '/' + document.getElementById(edButtons[button].id).value; 183 } 184 } 185 186 function edRemoveTag(button) { 187 for (i = 0; i < edOpenTags.length; i++) { 188 if (edOpenTags[i] == button) { 189 edOpenTags.splice(i, 1); 190 document.getElementById(edButtons[button].id).value = document.getElementById(edButtons[button].id).value.replace('/', ''); 191 } 192 } 193 } 194 195 function edCheckOpenTags(button) { 196 var tag = 0; 197 for (i = 0; i < edOpenTags.length; i++) { 198 if (edOpenTags[i] == button) { 199 tag++; 200 } 201 } 202 if (tag > 0) { 203 return true; // tag found 204 } 205 else { 206 return false; // tag not found 207 } 208 } 209 210 function edCloseAllTags() { 211 var count = edOpenTags.length; 212 for (o = 0; o < count; o++) { 213 edInsertTag(edCanvas, edOpenTags[edOpenTags.length - 1]); 214 } 215 } 216 217 function edQuickLink(i, thisSelect) { 218 if (i > -1) { 219 var newWin = ''; 220 if (edLinks[i].newWin == 1) { 221 newWin = ' target="_blank"'; 222 } 223 var tempStr = '<a href="' + edLinks[i].URL + '"' + newWin + '>' 224 + edLinks[i].display 225 + '</a>'; 226 thisSelect.selectedIndex = 0; 227 edInsertContent(edCanvas, tempStr); 228 } 229 else { 230 thisSelect.selectedIndex = 0; 231 } 232 } 233 234 function edSpell(myField) { 235 var word = ''; 236 if (document.selection) { 237 myField.focus(); 238 var sel = document.selection.createRange(); 239 if (sel.text.length > 0) { 240 word = sel.text; 241 } 242 } 243 else if (myField.selectionStart || myField.selectionStart == '0') { 244 var startPos = myField.selectionStart; 245 var endPos = myField.selectionEnd; 246 if (startPos != endPos) { 247 word = myField.value.substring(startPos, endPos); 248 } 249 } 250 if (word == '') { 251 word = prompt('Enter a word to look up:', ''); 252 } 253 if (word !== null && /^\w[\w ]*$/.test(word)) { 254 window.open('http://www.answers.com/' + escape(word)); 255 } 256 } 257 258 function edToolbar() { 259 document.write('<div id="ed_toolbar">'); 260 for (i = 0; i < edButtons.length; i++) { 261 edShowButton(edButtons[i], i); 262 } 263 document.write('<input type="button" id="ed_spell" class="ed_button" onclick="edSpell(edCanvas);" title="Dictionary lookup" value="lookup" />'); 264 document.write('<input type="button" id="ed_close" class="ed_button" onclick="edCloseAllTags();" title="Close all open tags" value="Close Tags" />'); 265 // edShowLinks(); // disabled by default 266 document.write('</div>'); 267 } 268 269 // insertion code 270 271 function edInsertTag(myField, i) { 272 //IE support 273 if (document.selection) { 274 myField.focus(); 275 sel = document.selection.createRange(); 276 if (sel.text.length > 0) { 277 sel.text = edButtons[i].tagStart + sel.text + edButtons[i].tagEnd; 278 } 279 else { 280 if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') { 281 sel.text = edButtons[i].tagStart; 282 edAddTag(i); 283 } 284 else { 285 sel.text = edButtons[i].tagEnd; 286 edRemoveTag(i); 287 } 288 } 289 myField.focus(); 290 } 291 //MOZILLA/NETSCAPE support 292 else if (myField.selectionStart || myField.selectionStart == '0') { 293 var startPos = myField.selectionStart; 294 var endPos = myField.selectionEnd; 295 var cursorPos = endPos; 296 var scrollTop = myField.scrollTop; 297 298 if (startPos != endPos) { 299 myField.value = myField.value.substring(0, startPos) 300 + edButtons[i].tagStart 301 + myField.value.substring(startPos, endPos) 302 + edButtons[i].tagEnd 303 + myField.value.substring(endPos, myField.value.length); 304 cursorPos += edButtons[i].tagStart.length + edButtons[i].tagEnd.length; 305 } 306 else { 307 if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') { 308 myField.value = myField.value.substring(0, startPos) 309 + edButtons[i].tagStart 310 + myField.value.substring(endPos, myField.value.length); 311 edAddTag(i); 312 cursorPos = startPos + edButtons[i].tagStart.length; 313 } 314 else { 315 myField.value = myField.value.substring(0, startPos) 316 + edButtons[i].tagEnd 317 + myField.value.substring(endPos, myField.value.length); 318 edRemoveTag(i); 319 cursorPos = startPos + edButtons[i].tagEnd.length; 320 } 321 } 322 myField.focus(); 323 myField.selectionStart = cursorPos; 324 myField.selectionEnd = cursorPos; 325 myField.scrollTop = scrollTop; 326 } 327 else { 328 if (!edCheckOpenTags(i) || edButtons[i].tagEnd == '') { 329 myField.value += edButtons[i].tagStart; 330 edAddTag(i); 331 } 332 else { 333 myField.value += edButtons[i].tagEnd; 334 edRemoveTag(i); 335 } 336 myField.focus(); 337 } 338 } 339 340 function edInsertContent(myField, myValue) { 341 //IE support 342 if (document.selection) { 343 myField.focus(); 344 sel = document.selection.createRange(); 345 sel.text = myValue; 346 myField.focus(); 347 } 348 //MOZILLA/NETSCAPE support 349 else if (myField.selectionStart || myField.selectionStart == '0') { 350 var startPos = myField.selectionStart; 351 var endPos = myField.selectionEnd; 352 myField.value = myField.value.substring(0, startPos) 353 + myValue 354 + myField.value.substring(endPos, myField.value.length); 355 myField.focus(); 356 myField.selectionStart = startPos + myValue.length; 357 myField.selectionEnd = startPos + myValue.length; 358 } else { 359 myField.value += myValue; 360 myField.focus(); 361 } 362 } 363 364 function edInsertLink(myField, i, defaultValue) { 365 if (!defaultValue) { 366 defaultValue = 'http://'; 367 } 368 if (!edCheckOpenTags(i)) { 369 var URL = prompt('Enter the URL' ,defaultValue); 370 if (URL) { 371 edButtons[i].tagStart = '<a href="' + URL + '">'; 372 edInsertTag(myField, i); 373 } 374 } 375 else { 376 edInsertTag(myField, i); 377 } 378 } 379 380 function edInsertImage(myField) { 381 var myValue = prompt('Enter the URL of the image', 'http://'); 382 if (myValue) { 383 myValue = '<img src="' 384 + myValue 385 + '" alt="' + prompt('Enter a description of the image', '') 386 + '" />'; 387 edInsertContent(myField, myValue); 388 } 389 }
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Fri Mar 30 19:41:27 2007 | par Balluche grâce à PHPXref 0.7 |