|
9 | 9 | /**
|
10 | 10 | * Determine editor settings
|
11 | 11 | */
|
| 12 | + var maxCommentLength = (gdn.definition('maxCommentLength')); |
12 | 13 | var canUpload = (gdn.definition('canUpload', false)) ? 1 : 0;
|
13 | 14 | var maxUploadSize = gdn.definition('maxUploadSize');
|
14 | 15 | var allowedImageExtensions = gdn.definition('allowedImageExtensions');
|
|
525 | 526 | fileTooLarge: 'Uploading #image_name# was failed. The file is too big (#image_size#).\n' +
|
526 | 527 | 'Maximum file size is #image_max_size#.',
|
527 | 528 | importError: 'Uploading #image_name# was failed. Something went wrong when uploading the file.',
|
528 |
| - } |
| 529 | + }, |
| 530 | + status: [{ |
| 531 | + className: 'message', |
| 532 | + defaultValue: function(el) { |
| 533 | + el.innerHTML = ''; |
| 534 | + }, |
| 535 | + onUpdate: function(el) { |
| 536 | + }, |
| 537 | + } |
| 538 | + , 'upload-image', { |
| 539 | + className: 'countOfRemainingChars', |
| 540 | + defaultValue: function(el, cm) { |
| 541 | + var countOfRemainingChars = maxCommentLength; |
| 542 | + var text = cm.getValue(); |
| 543 | + if(text != null && text.length > 0) { |
| 544 | + countOfRemainingChars = maxCommentLength - text.length; |
| 545 | + if(countOfRemainingChars < 0) { |
| 546 | + countOfRemainingChars = 0; |
| 547 | + } |
| 548 | + } |
| 549 | + el.innerHTML = countOfRemainingChars +" character remaining"; |
| 550 | + }, |
| 551 | + onUpdate: function(el, cm) { |
| 552 | + var countOfRemainingChars = maxCommentLength; |
| 553 | + var text = cm.getValue(); |
| 554 | + if(text != null && text.length > 0) { |
| 555 | + countOfRemainingChars = maxCommentLength - text.length; |
| 556 | + if(countOfRemainingChars < 0) { |
| 557 | + countOfRemainingChars = 0; |
| 558 | + } |
| 559 | + } |
| 560 | + el.innerHTML = countOfRemainingChars +" character remaining"; |
| 561 | + }, |
| 562 | + }], |
529 | 563 | });
|
530 | 564 |
|
531 | 565 | // forceSync = true, need to clear form after async requests
|
|
534 | 568 | });
|
535 | 569 |
|
536 | 570 | editor.codemirror.on('change', function (cm, event) {
|
| 571 | + var frm = $(cm.getInputField()).closest('form').first(); |
| 572 | + var editorContainer = $(frm).find('.EasyMDEContainer'); |
| 573 | + var messageContainer = $(frm).find('.editor-statusbar .message'); |
| 574 | + |
| 575 | + var text = cm.getValue(); |
| 576 | + if(text.length > 0 && text.length <= maxCommentLength) { |
| 577 | + $(editorContainer).removeClass('error'); |
| 578 | + $(messageContainer).text(''); |
| 579 | + $(frm).find(':submit').removeAttr("disabled"); |
| 580 | + $(frm).find('.Buttons a.Button').removeClass('Disabled'); |
| 581 | + } else if(text.length > maxCommentLength) { |
| 582 | + $(editorContainer).addClass('error'); |
| 583 | + var count = text.length - maxCommentLength; |
| 584 | + $(messageContainer).text('Comment is '+ count + ' characters too long'); |
| 585 | + $(frm).find(':submit').attr('disabled', 'disabled'); |
| 586 | + $(frm).find('.Buttons a.Button:not(.Cancel)').addClass('Disabled'); |
| 587 | + } |
| 588 | + |
537 | 589 | // Key events don't work properly on Android Chrome
|
538 | 590 | if (!cm.state.completionActive /*Enables keyboard navigation in autocomplete list*/) {
|
539 | 591 | if (event.origin == '+input' && event.text && event.text.length > 0 && event.text[0] === '@') {
|
|
0 commit comments