PageSourceSearch

https://gorod-kamyshlov.ru/static/uil/export/project_mo_theme_shor…/scripts/ctrl-enter.js?20260220222336

js gorod-kamyshlov.ru collected 2026-10-02 16:58:57 UTC 5,302 bytes, 122 lines download raw bytes

1(function () {
2    window.ctrl_enter = {};
3    var it = window.ctrl_enter;
4
5    var $frame;
6    var url_send;
7    var limit = 150; // Количество символов слева и справа от выделенной ошибки
8    var text_for_form = ''; // Текст с ошибкой для формы отправки
9    var text_for_mail = ''; // Текст с ошибкой для письма
10
11    it.set = function (url) {
12        url_send = url;
13        if (url != undefined && typeof document.onkeypress !== 'function') {
14            document.onkeypress = function (e) {
15                var asd = 0;
16                var we = window.event;
17                if (we) asd = we.keyCode == 10 || (we.keyCode == 13 && we.ctrlKey);
18                else if (e) asd = (e.which == 10 && e.modifiers == 2) || (e.keyCode == 0 && e.charCode == 106 && e.ctrlKey) || (e.keyCode == 13 && e.ctrlKey);
19                if (asd) window.ctrl_enter.form();
20            };
21        }
22    };
23
24    it.form = function () {
25        var text,
26            range = get_sel_text(),
27            left = range.anchorOffset,
28            right = range.focusOffset;
29
30        if (typeof range.anchorNode !== 'undefined') { // Нормальные браузеры
31            try {
32                text = range.anchorNode.textContent;
33            } catch (e) {
34                inova_popup.set_message('Необходимо выделить текст с ошибкой.');
35                return;
36            }
37            if (left > right) {
38                left = range.focusOffset;
39                right = range.anchorOffset;
40            }
41            if (right - left < 1) {
42                inova_popup.set_message('Необходимо выделить текст с ошибкой.');
43            } else {
44                text_for_form = get_error_fragment(text, [left, right], ['<strong style="color: #ff0000">', '</strong>']);
45                text_for_mail = get_error_fragment(text, [left, right], ['##', '##']);
46                get_form(text_for_form);
47            }
48        } else { // Старые ослы
49            text = range.parentElement().innerText;
50            text_for_form = text;
51            text_for_mail = text;
52            text_for_mail += '\n';
53            text_for_mail += '\n';
54            text_for_mail += 'Фрагмент текста с ошибкой: ' + range.text;
55            get_form(text_for_form);
56        }
57    };
58
59    it.send = function () {
60        var data = {
61            'url': location.href,
62            'fragment': text_for_mail,
63            'comment': $('#ctrl_enterComment').val()
64        };
65        $.ajax({
66            url: url_send,
67            type: 'POST',
68            dataType: 'text',
69            data: data,
70            beforeSend: function () {
71                if (inova_popup.is_shown())
72                    inova_popup.freeze();
73                else {
74                    inova_popup.set_message('Подождите...').freeze();
75                }
76            },
77            success: function () {
78                inova_popup.set_message('Ваше замечание отправлено.');
79            },
80            error: function () {
81                inova_popup.set_message('Ошибка отправки данных.');
82            }
83        });
84    };
85
86    it.cancel = function () {
87        inova_popup.hide();
88    };
89
90    function get_sel_text() {
91        if (window.getSelection)
92            return window.getSelection();
93        else if (document.getSelection)
94            return document.getSelection();
95        else if (document.selection)
96            return document.selection.createRange();
97        return false;
98    }
99
100    function get_error_fragment(text, err, wrap) {
101        var str_error = text.substr(err[0], err[1] - err[0]);
102        var str_before = text.substr(0, err[0]);
103        var str_after = text.substr(err[1], text.length);
104        str_before = str_before.length > limit ? '...' + str_before.substr(str_before.length - limit, limit) : str_before;
105        str_after = str_after.length > limit ? str_after.substr(0, limit) + '...' : str_after;
106        return str_before + wrap[0] + str_error + wrap[1] + str_after;
107    }
108
109    function get_form(text) {
110        var content = '<div style="max-width: 640px"><p style="margin-bottom: 1em">Ошибка в тексте:</p>' +
111            '<div style="margin-bottom: 1em; font-style: italic; font-size: 14px; font-family: Georgia; color: #aaaaaa">' +
112            '<span style="font-size: 2em; line-height: 0; position: relative; top: 0.1em">&laquo;</span>
112 ' + text + ' <span style="font-size: 2em; line-height: 0; position: relative; top: 0.1em">&raquo;</span>' +
113            '</div>' +
114            '<p style="margin-bottom: 1em">Комментарий (необязательно):</p>' +
115            '<textarea style="display: block; width: 628px; margin-bottom: 1em; padding: 5px; border: 1px solid #b8ced9; border-radius: 3px; color: #666666" id="ctrl_enterComment" rows="3"></textarea>' +
116            '<div style="overflow: hidden">' +
117            '<input style="float: right" type="button" value="Отправить" onclick="return ctrl_enter.send()"/>' +
118            '</div></div>';
119        inova_popup.set_html(content, 'Сообщить об ошибке');
120    }
121
122})();

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.