1 2var sendError = function (initialSettings) { 3 var self = this; 4 var modal = $('#sendError'); 5 6 this.settings = $.extend({ 7 noSupportBrowser: 'Browser Not Supported', 8 tooBigText: 'Selected text is too big', 9 spellingMistake: 'Do you think this is an error?', 10 sendMessageError: 'Send this message?', 11 pageType: 'news' 12 }, initialSettings); 13 14 this.getSelectedText = function() { 15 var sel = (parent.getSelection) ? 16 parent.getSelection() : 17 ( 18 (parent.document.getSelection) ? parent.document.getSelection() : 19 ((document.selection.createRange) ? document.selection.createRange().text : null) 20 ); 21 if (null == sel) { 22 alert(this.settings.noSupportBrowser); 23 return; 24 } 25 var selectedText = sel.toString().trim(); 26 if (selectedText.length > 256) { 27 alert(this.settings.tooBigText); 28 return; 29 } 30 if (0 === selectedText.length) { 31 return; 32 } 33 34 return selectedText; 35 }; 36 37 modal.on('click', '.send-error', function () { 38 var clientId = $('.g-recaptcha', $('#sendError')).data('recaptchaClientId'); 39 if (undefined !== clientId) { 40 grecaptcha.reset(clientId); 41 grecaptcha.execute(clientId); 42 } 43 }); 44 45 $(document).on('captchaReady', function(){ 46 var sel = self.getSelectedText(); 47 var re = /[\r\n]+/g; 48 sel = sel.replace(re, " "); 49 var pagelink = document.location.href; 50 var pagetitle = $(".titlepage").html(); 51 var useragent = navigator.userAgent; 52 jsonrpcWrapper('/ajax/jsonrpc', 'SendError', { 53 message: { 54 pagelink: pagelink, 55 page: self.settings.pageType, 56 txterr: sel, 57 useragent: useragent, 58 pagetitle: pagetitle, 59 captcha: $('#send-error-captcha').val() 60 } 61 }, function () { 62 $('#sendError').modal('hide'); 63 }); 64 }); 65 66 $(document).keydown(function (e) { 67 if (e.ctrlKey && 13 == e.keyCode) { 68 var sel = self.getSelectedText(); 69 70 if (!sel) { 71 return; 72 } 73 modal.find('.modal-body').html("<div class='modal-inner__subtitle'>" + sel + "</div>"); 74 modal.modal({}); 75 } 76 }); 77};
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.