1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: new file 100644, binary diff hidden |
|
NO CONTENT: new file 100644, binary diff hidden |
1 | NO CONTENT: file renamed from public/images/jstoolbar/bt_heading.png to public/images/jstoolbar/bt_img.png, binary diff hidden |
|
NO CONTENT: file renamed from public/images/jstoolbar/bt_heading.png to public/images/jstoolbar/bt_img.png, binary diff hidden |
@@ -228,6 +228,58 jsToolBar.prototype = { | |||||
228 | this.encloseSelection(stag,etag); |
|
228 | this.encloseSelection(stag,etag); | |
229 | }, |
|
229 | }, | |
230 |
|
230 | |||
|
231 | encloseLineSelection: function(prefix, suffix, fn) { | |||
|
232 | this.textarea.focus(); | |||
|
233 | ||||
|
234 | prefix = prefix || ''; | |||
|
235 | suffix = suffix || ''; | |||
|
236 | ||||
|
237 | var start, end, sel, scrollPos, subst, res; | |||
|
238 | ||||
|
239 | if (typeof(document["selection"]) != "undefined") { | |||
|
240 | sel = document.selection.createRange().text; | |||
|
241 | } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { | |||
|
242 | start = this.textarea.selectionStart; | |||
|
243 | end = this.textarea.selectionEnd; | |||
|
244 | scrollPos = this.textarea.scrollTop; | |||
|
245 | // go to the start of the line | |||
|
246 | start = this.textarea.value.substring(0, start).replace(/[^\r\n]*$/g,'').length; | |||
|
247 | // go to the end of the line | |||
|
248 | end = this.textarea.value.length - this.textarea.value.substring(end, this.textarea.value.length).replace(/^[^\r\n]*/, '').length; | |||
|
249 | sel = this.textarea.value.substring(start, end); | |||
|
250 | } | |||
|
251 | ||||
|
252 | if (sel.match(/ $/)) { // exclude ending space char, if any | |||
|
253 | sel = sel.substring(0, sel.length - 1); | |||
|
254 | suffix = suffix + " "; | |||
|
255 | } | |||
|
256 | ||||
|
257 | if (typeof(fn) == 'function') { | |||
|
258 | res = (sel) ? fn.call(this,sel) : fn(''); | |||
|
259 | } else { | |||
|
260 | res = (sel) ? sel : ''; | |||
|
261 | } | |||
|
262 | ||||
|
263 | subst = prefix + res + suffix; | |||
|
264 | ||||
|
265 | if (typeof(document["selection"]) != "undefined") { | |||
|
266 | document.selection.createRange().text = subst; | |||
|
267 | var range = this.textarea.createTextRange(); | |||
|
268 | range.collapse(false); | |||
|
269 | range.move('character', -suffix.length); | |||
|
270 | range.select(); | |||
|
271 | } else if (typeof(this.textarea["setSelectionRange"]) != "undefined") { | |||
|
272 | this.textarea.value = this.textarea.value.substring(0, start) + subst + | |||
|
273 | this.textarea.value.substring(end); | |||
|
274 | if (sel) { | |||
|
275 | this.textarea.setSelectionRange(start + subst.length, start + subst.length); | |||
|
276 | } else { | |||
|
277 | this.textarea.setSelectionRange(start + prefix.length, start + prefix.length); | |||
|
278 | } | |||
|
279 | this.textarea.scrollTop = scrollPos; | |||
|
280 | } | |||
|
281 | }, | |||
|
282 | ||||
231 | encloseSelection: function(prefix, suffix, fn) { |
|
283 | encloseSelection: function(prefix, suffix, fn) { | |
232 | this.textarea.focus(); |
|
284 | this.textarea.focus(); | |
233 |
|
285 | |||
@@ -370,28 +422,43 jsToolBar.prototype.elements.code = { | |||||
370 | // spacer |
|
422 | // spacer | |
371 | jsToolBar.prototype.elements.space1 = {type: 'space'} |
|
423 | jsToolBar.prototype.elements.space1 = {type: 'space'} | |
372 |
|
424 | |||
373 | // heading |
|
425 | // headings | |
374 |
jsToolBar.prototype.elements.h |
|
426 | jsToolBar.prototype.elements.h1 = { | |
375 | type: 'button', |
|
427 | type: 'button', | |
376 | title: 'Heading', |
|
428 | title: 'Heading 1', | |
377 | fn: { |
|
429 | fn: { | |
378 | wiki: function() { |
|
430 | wiki: function() { | |
379 |
|
|
431 | this.encloseLineSelection('h1. ', '',function(str) { | |
380 |
|
|
432 | str = str.replace(/^h\d+\.\s+/, '') | |
381 | return 'h2. '+str.replace(/\n/g,"\n* "); |
|
433 | return str; | |
382 |
|
|
434 | }); | |
|
435 | } | |||
|
436 | } | |||
|
437 | } | |||
|
438 | jsToolBar.prototype.elements.h2 = { | |||
|
439 | type: 'button', | |||
|
440 | title: 'Heading 2', | |||
|
441 | fn: { | |||
|
442 | wiki: function() { | |||
|
443 | this.encloseLineSelection('h2. ', '',function(str) { | |||
|
444 | str = str.replace(/^h\d+\.\s+/, '') | |||
|
445 | return str; | |||
|
446 | }); | |||
|
447 | } | |||
|
448 | } | |||
|
449 | } | |||
|
450 | jsToolBar.prototype.elements.h3 = { | |||
|
451 | type: 'button', | |||
|
452 | title: 'Heading 3', | |||
|
453 | fn: { | |||
|
454 | wiki: function() { | |||
|
455 | this.encloseLineSelection('h3. ', '',function(str) { | |||
|
456 | str = str.replace(/^h\d+\.\s+/, '') | |||
|
457 | return str; | |||
|
458 | }); | |||
383 | } |
|
459 | } | |
384 | } |
|
460 | } | |
385 | } |
|
461 | } | |
386 |
|
||||
387 | // br |
|
|||
388 | //jsToolBar.prototype.elements.br = { |
|
|||
389 | // type: 'button', |
|
|||
390 | // title: 'Line break', |
|
|||
391 | // fn: { |
|
|||
392 | // wiki: function() { this.encloseSelection("%%%\n",'') } |
|
|||
393 | // } |
|
|||
394 | //} |
|
|||
395 |
|
|
462 | ||
396 | // spacer |
|
463 | // spacer | |
397 | jsToolBar.prototype.elements.space2 = {type: 'space'} |
|
464 | jsToolBar.prototype.elements.space2 = {type: 'space'} | |
@@ -402,9 +469,9 jsToolBar.prototype.elements.ul = { | |||||
402 | title: 'Unordered list', |
|
469 | title: 'Unordered list', | |
403 | fn: { |
|
470 | fn: { | |
404 | wiki: function() { |
|
471 | wiki: function() { | |
405 | this.encloseSelection('','',function(str) { |
|
472 | this.encloseLineSelection('','',function(str) { | |
406 | str = str.replace(/\r/g,''); |
|
473 | str = str.replace(/\r/g,''); | |
407 |
return |
|
474 | return str.replace(/(\n|^)[#-]?\s*/g,"$1* "); | |
408 | }); |
|
475 | }); | |
409 | } |
|
476 | } | |
410 | } |
|
477 | } | |
@@ -416,53 +483,39 jsToolBar.prototype.elements.ol = { | |||||
416 | title: 'Ordered list', |
|
483 | title: 'Ordered list', | |
417 | fn: { |
|
484 | fn: { | |
418 | wiki: function() { |
|
485 | wiki: function() { | |
419 | this.encloseSelection('','',function(str) { |
|
486 | this.encloseLineSelection('','',function(str) { | |
420 | str = str.replace(/\r/g,''); |
|
487 | str = str.replace(/\r/g,''); | |
421 |
return |
|
488 | return str.replace(/(\n|^)[*-]?\s*/g,"$1# "); | |
422 | }); |
|
489 | }); | |
423 | } |
|
490 | } | |
424 | } |
|
491 | } | |
425 | } |
|
492 | } | |
426 |
|
493 | |||
|
494 | // pre | |||
|
495 | jsToolBar.prototype.elements.pre = { | |||
|
496 | type: 'button', | |||
|
497 | title: 'Preformatted text', | |||
|
498 | fn: { | |||
|
499 | wiki: function() { this.encloseLineSelection('<pre>\n', '\n</pre>') } | |||
|
500 | } | |||
|
501 | } | |||
|
502 | ||||
427 | // spacer |
|
503 | // spacer | |
428 | jsToolBar.prototype.elements.space3 = {type: 'space'} |
|
504 | jsToolBar.prototype.elements.space3 = {type: 'space'} | |
429 |
|
505 | |||
430 | // link |
|
506 | // wiki page | |
431 | /* |
|
|||
432 | jsToolBar.prototype.elements.link = { |
|
507 | jsToolBar.prototype.elements.link = { | |
433 | type: 'button', |
|
508 | type: 'button', | |
434 | title: 'Link', |
|
509 | title: 'Wiki Page Link', | |
435 |
fn: { |
|
510 | fn: { | |
436 | href_prompt: 'Please give page URL:', |
|
511 | wiki: function() { this.encloseSelection("[[", "]]") } | |
437 | hreflang_prompt: 'Language of this page:', |
|
|||
438 | default_hreflang: '', |
|
|||
439 | prompt: function(href,hreflang) { |
|
|||
440 | href = href || ''; |
|
|||
441 | hreflang = hreflang || this.elements.link.default_hreflang; |
|
|||
442 |
|
||||
443 | href = window.prompt(this.elements.link.href_prompt,href); |
|
|||
444 | if (!href) { return false; } |
|
|||
445 |
|
||||
446 | hreflang = "" |
|
|||
447 |
|
||||
448 | return { href: this.stripBaseURL(href), hreflang: hreflang }; |
|
|||
449 | } |
|
512 | } | |
450 | } |
|
513 | } | |
451 |
|
514 | // image | ||
452 |
jsToolBar.prototype.elements. |
|
515 | jsToolBar.prototype.elements.img = { | |
453 | var link = this.elements.link.prompt.call(this); |
|
|||
454 | if (link) { |
|
|||
455 | var stag = '"'; |
|
|||
456 | var etag = '":'+link.href; |
|
|||
457 | this.encloseSelection(stag,etag); |
|
|||
458 | } |
|
|||
459 | }; |
|
|||
460 | */ |
|
|||
461 | // link or wiki page |
|
|||
462 | jsToolBar.prototype.elements.link = { |
|
|||
463 | type: 'button', |
|
516 | type: 'button', | |
464 |
title: ' |
|
517 | title: 'Inline image', | |
465 | fn: { |
|
518 | fn: { | |
466 |
wiki: function() { this.encloseSelection(" |
|
519 | wiki: function() { this.encloseSelection("!", "!") } | |
467 | } |
|
520 | } | |
468 | } |
|
521 | } |
@@ -67,8 +67,14 | |||||
67 | .jstb_br { |
|
67 | .jstb_br { | |
68 | background-image: url(../images/jstoolbar/bt_br.png); |
|
68 | background-image: url(../images/jstoolbar/bt_br.png); | |
69 | } |
|
69 | } | |
70 |
.jstb_h |
|
70 | .jstb_h1 { | |
71 |
background-image: url(../images/jstoolbar/bt_h |
|
71 | background-image: url(../images/jstoolbar/bt_h1.png); | |
|
72 | } | |||
|
73 | .jstb_h2 { | |||
|
74 | background-image: url(../images/jstoolbar/bt_h2.png); | |||
|
75 | } | |||
|
76 | .jstb_h3 { | |||
|
77 | background-image: url(../images/jstoolbar/bt_h3.png); | |||
72 | } |
|
78 | } | |
73 | .jstb_ul { |
|
79 | .jstb_ul { | |
74 | background-image: url(../images/jstoolbar/bt_ul.png); |
|
80 | background-image: url(../images/jstoolbar/bt_ul.png); | |
@@ -76,6 +82,12 | |||||
76 | .jstb_ol { |
|
82 | .jstb_ol { | |
77 | background-image: url(../images/jstoolbar/bt_ol.png); |
|
83 | background-image: url(../images/jstoolbar/bt_ol.png); | |
78 | } |
|
84 | } | |
|
85 | .jstb_pre { | |||
|
86 | background-image: url(../images/jstoolbar/bt_pre.png); | |||
|
87 | } | |||
79 | .jstb_link { |
|
88 | .jstb_link { | |
80 | background-image: url(../images/jstoolbar/bt_link.png); |
|
89 | background-image: url(../images/jstoolbar/bt_link.png); | |
81 | } |
|
90 | } | |
|
91 | .jstb_img { | |||
|
92 | background-image: url(../images/jstoolbar/bt_img.png); | |||
|
93 | } |
General Comments 0
You need to be logged in to leave comments.
Login now