| 21 |
21 |
*/
|
| 22 |
22 |
|
| 23 |
23 |
/* Modified by JP LANG for textile formatting */
|
|
24 |
let lastJstPreviewed = null;
|
| 24 |
25 |
|
| 25 |
26 |
function jsToolBar(textarea) {
|
| 26 |
27 |
if (!document.createElement) { return; }
|
| ... | ... | |
| 53 |
54 |
|
| 54 |
55 |
var This = this;
|
| 55 |
56 |
|
|
57 |
this.textarea.onkeydown = function(event) { This.keyboardShortcuts.call(This, event); };
|
|
58 |
|
| 56 |
59 |
this.editTab = new jsTab('Edit', true);
|
| 57 |
60 |
this.editTab.onclick = function(event) { This.hidePreview.call(This, event); return false; };
|
| 58 |
61 |
|
| ... | ... | |
| 401 |
404 |
},
|
| 402 |
405 |
showPreview: function(event) {
|
| 403 |
406 |
if (event.target.classList.contains('selected')) { return; }
|
|
407 |
lastJstPreviewed = this.toolbarBlock;
|
| 404 |
408 |
this.preview.setAttribute('style', 'min-height: ' + this.textarea.clientHeight + 'px;')
|
| 405 |
409 |
this.toolbar.classList.add('hidden');
|
| 406 |
410 |
this.textarea.classList.add('hidden');
|
| 407 |
411 |
this.preview.classList.remove('hidden');
|
| 408 |
412 |
this.tabsBlock.getElementsByClassName('tab-edit')[0].classList.remove('selected');
|
| 409 |
413 |
event.target.classList.add('selected');
|
| 410 |
|
|
| 411 |
414 |
},
|
| 412 |
415 |
hidePreview: function(event) {
|
| 413 |
416 |
if (event.target.classList.contains('selected')) { return; }
|
| 414 |
417 |
this.toolbar.classList.remove('hidden');
|
| 415 |
418 |
this.textarea.classList.remove('hidden');
|
|
419 |
this.textarea.focus();
|
| 416 |
420 |
this.preview.classList.add('hidden');
|
| 417 |
421 |
this.tabsBlock.getElementsByClassName('tab-preview')[0].classList.remove('selected');
|
| 418 |
422 |
event.target.classList.add('selected');
|
| 419 |
423 |
},
|
|
424 |
keyboardShortcuts: function(e) {
|
|
425 |
if (isToogleEditPreviewShortcut(e)) {
|
|
426 |
// Switch to preview only if tab edit is selected when the event triggered.
|
|
427 |
if (this.tabsBlock.querySelector('.tab-edit.selected')) {
|
|
428 |
e.stopPropagation();
|
|
429 |
e.preventDefault();
|
|
430 |
this.tabsBlock.getElementsByClassName('tab-preview')[0].click();
|
|
431 |
}
|
|
432 |
}
|
|
433 |
},
|
| 420 |
434 |
stripBaseURL: function(url) {
|
| 421 |
435 |
if (this.base_url != '') {
|
| 422 |
436 |
var pos = url.indexOf(this.base_url);
|
| ... | ... | |
| 507 |
521 |
});
|
| 508 |
522 |
return false;
|
| 509 |
523 |
};
|
|
524 |
|
|
525 |
$(document).keydown(function(e) {
|
|
526 |
if (isToogleEditPreviewShortcut(e)) {
|
|
527 |
if (lastJstPreviewed !== null) {
|
|
528 |
e.preventDefault();
|
|
529 |
e.stopPropagation();
|
|
530 |
lastJstPreviewed.querySelector('.tab-edit').click();
|
|
531 |
lastJstPreviewed = null;
|
|
532 |
}
|
|
533 |
}
|
|
534 |
});
|
|
535 |
|
|
536 |
function isToogleEditPreviewShortcut(e) {
|
|
537 |
if ((e.metaKey || e.ctrlKey) && e.shiftKey && e.key.toLowerCase() === 'p') {
|
|
538 |
return true;
|
|
539 |
} else {
|
|
540 |
return false;
|
|
541 |
}
|
|
542 |
}
|