PageSourceSearch

https://kraevedpol.ru/templates/default/js/messages.js?1529921035

js kraevedpol.ru collected 2026-10-03 18:57:02 UTC 17,722 bytes, 589 lines download raw bytes

1var icms = icms || {};
2var Notification = window.Notification || window.mozNotification || window.webkitNotification;
3
4icms.messages = (function ($) {
5
6    var self = this;
7
8    this.is_modal = true;
9    this.contactId = null;
10    this.msg_ids = [];
11
12    this.options = {
13        isRefresh: false,
14        refreshInterval: 15000
15    };
16
17    this.desktopNotification = function (title, params){
18        if(Notification) {
19            var instance = Notification.requestPermission(function (permission){
20                if(permission !== 'granted') { return false; }
21                notification = new Notification(title, params);
22            });
23        }
24    };
25
26    this.setMsgLastDate = function (last_date){
27        $('#msg_last_date').val(last_date);
28    };
29
30    this.getMsgLastDate = function (){
31        return $('#msg_last_date').val();
32    };
33
34    this.showLoader = function (){
35        $('#pm_window .left-panel').html('<div class="spinner"><div class="bounce1"></div><div class="bounce2"></div><div class="bounce3"></div></div>');
36    };
37
38    this.initUserSearch = function (){
39        var user_list = $('#pm_window .right-panel .contacts .contact');
40        $('#user_search_panel input').on('input', function() {
41            var uquery = $(this).val();
42            $(user_list).show();
43            if(uquery.length > 1){
44                s = $('.contact_nickname:Contains("'+uquery+'")', user_list).parents('.contact');
45                $(user_list).show().not(s).hide();
46            }
47        });
48    };
49
50    this.bindMyMsg = function (){
51        var default_hint = null;
52        $('#pm_window .left-panel').on('mouseup', '.is_can_select', function (){
53            var is_selected = '';
54            if (window.getSelection) {
55                is_selected = window.getSelection().toString();
56            } else if (document.selection) {
57                is_selected = document.selection.createRange().text;
58            }
59            if (is_selected.length > 0){ return false; }
60            if(default_hint === null){
61                default_hint = $('#delete_msgs').val();
62            }
63            $(this).toggleClass('selected');
64            var msg_selected = $(this).parents('#pm_chat').find('.is_can_select.selected');
65            var selected_length = $(msg_selected).length;
66            icms.messages.msg_ids = [];
67            if(selected_length > 0){
68                $('#delete_msgs').val(default_hint+' ('+selected_length+')').show();
69                $(msg_selected).each(function (){
70                    icms.messages.msg_ids.push($(this).data('id'));
71                });
72            } else {
73                $('#delete_msgs').val(default_hint).hide();
74            }
75        });
76    };
77
78    this.deleteMsgs = function (){
79        if(this.msg_ids.length > 0){
80
81            var pm_window = $('#pm_window');
82
83            var url = $(pm_window).data('delete-mesage-url');
84
85            $.post(url, {message_ids: this.msg_ids}, function(result) {
86
87                icms.messages.msg_ids = [];
88
89                if (result.error) { return; }
90
91                $('.left-panel .is_can_select', pm_window).removeClass('selected');
92                $('#delete_msgs').hide();
93
94                var replace_func = function (id, delete_text, is_remove_block){
95                    var msg_block = $('#message-' + id, pm_window);
96                    $(msg_block).find('.is_can_select').removeClass('is_can_select').
97                            find('.message_text').hide().
98                            after('<span>'+delete_text+'</span>');
99                    if(is_remove_block){
100                        $(msg_block).delay(3000).fadeOut();
101                    }
102                };
103
104                if(result.message_ids){
105                    for(var key in result.message_ids){
106                        replace_func(result.message_ids[key], result.delete_text);
107                    }
108                }
109
110                if(result.delete_msg_ids){
111                    for(var key in result.delete_msg_ids){
112                        replace_func(result.delete_msg_ids[key], result.remove_text, true);
113                    }
114                }
115
116            }, 'json');
117        }
118        return false;
119    };
120
121    this.restoreMsg = function (linkObj){
122
123        var pm_window = $('#pm_window');
124        var url = $(pm_window).data('restore-mesage-url');
125        var _content = $(linkObj).closest('.content');
126
127        $.post(url, {message_id: $(_content).data('id')}, function(result) {
128
129            if (result.error) { return; }
130
131            $(_content).addClass('is_can_select').find('.message_text').show();
132            $('> span', _content).remove();
133
134        }, 'json');
135
136        return false;
137    };
138
139    this.selectContact = function(id){
140
141        if(Notification) {
142            Notification.requestPermission(function (permission){});
143        }
144
145        var pm_window = $('#pm_window');
146        var contact = $('#contact-' + id, pm_window);
147
148        $('.messages .counter').fadeOut();
149
150        $('.contacts a', pm_window).removeClass('selected');
151
152        $('a', contact).addClass('selected');
153
154        icms.messages.showLoader();
155
156        var url = pm_window.data('contact-url');
157        var form_data = {contact_id: id};
158
159        if(self.is_modal){
160            icms.modal.setCallback('close', function(){
161                icms.messages.options.isRefresh = false;
162            });
163        }
164
165        this.msg_ids = [];
166
167        $.post(url, form_data, function(result){
168
169            if(!$('.left-panel', pm_window).is(':visible')){
170                $('.right-panel').hide().css({left: ''});
171                $('.left-panel').show();
172            }
173
174            $('.left-panel', pm_window).html(result);
175
176            $('.left-panel textarea', pm_window).focus();
177
178            icms.messages.setContactCounter(id, 0);
179
180            icms.messages.scrollChat();
181
182            $('.composer form', pm_window).on('keydown', function(event){
183                if (event.keyCode === 10 || event.keyCode == 13 && event.ctrlKey) {
184                    icms.messages.send();
185                }
186            });
187
188            $('#contact_toggle', pm_window).off('click').on('click', function(event){
189                $('.left-panel').hide();
190                $('.right-panel').show().animate({left: '0px'}, 200);
191            });
192
193            if($('.overview > a > span', pm_window).first().hasClass('peer_online')){
194                $('a > span', contact).first().addClass('peer_online');
195                $('a > strong', contact).remove();
196            } else {
197                $('a > span', contact).first().removeClass('peer_online');
198                if(!$('a > strong', contact).length){
199                    $('a', contact).append('<strong>'+$('.overview .user_date_log > span', pm_window).text()+'</strong>');
200                } else {
201                    $('a > strong', contact).html($('.overview .user_date_log > span', pm_window).text());
202                }
203            }
204
205            icms.messages.contactId = id;
206
207            if(!icms.messages.options.isRefresh) {
208                icms.messages.options.isRefresh = true;
209                setTimeout('icms.messages.refresh()', icms.messages.options.refreshInterval);
210            }
211
212        }, 'html');
213
214        return false;
215
216    };
217
218    this.scrollChat = function(){
219        $('#pm_chat').stop().animate({
220            scrollTop: $('#pm_chat')[0].scrollHeight
221        }, 500);
222        if(self.is_modal){
223            $('.nyroModalCont').stop().animate({
224                scrollTop: $('.nyroModalCont')[0].scrollHeight
225            }, 500);
226        }
227    };
228
229    //====================================================================//
230
231    this.send = function(){
232
233        var form = $('#pm_contact .composer form');
234
235        var form_data = icms.forms.toJSON( form );
236
237        if (!form_data.content) {return;}
238
239        var url = form.attr('action');
240
241        $('.buttons', form).addClass('sending').find('.button').prop('disabled', true);
242
243        $.post(url, form_data, function(result){
244
245            $('.buttons', form).removeClass('sending').find('.button').prop('disabled', false);
246
247            if (!result.error){
248                icms.forms.wysiwygInsertText('content', '');
249                $('textarea', form).focus();
250                icms.messages.addMessage(result);
251            } else {
252                if (result.message.length){
253                    icms.messages.error(result.message);
254                }
255            }
256
257        }, 'json');
258
259    };
260
261    this.addMessage = function(result){
262
263        if (result.error){
264            return icms.messages.error(result.message);
265        }
266
267		if (result.message){
268			$('#pm_contact .chat').append(result.message);
269			this.scrollChat();
270		}
271
272    };
273
274    this.error = function (text){
275        $('#error_wrap').html(text).fadeIn().delay(5000).fadeOut(); return false;
276    };
277
278    this.confirm = function (text, callback){
279        var pm_window = $('#pm_window');
280        pm_window.addClass('wrap_blur');
281        $('.nyroModalCont').append('<div class="msg_overlay"></div><div class="confirm_wrap"><div class="ui_message">'+text.replace(/\n/g, '<br />')+'<div class="buttons"><input type="button" class="button" id="btn_yes" value="'+LANG_YES+'"><input type="button" class="button" id="btn_no" value="'+LANG_NO+'"></div></div></div>');
282        $('#btn_yes').one('click', function () {
283            if (callback){ callback(true); }
284            $('.msg_overlay, .confirm_wrap').remove(); pm_window.removeClass('wrap_blur');
285        });
286        $('#btn_no, .msg_overlay').one('click', function () {
287            if (callback){ callback(false); }
288            $('.msg_overlay, .confirm_wrap').remove(); pm_window.removeClass('wrap_blur');
289        });
290        return false;
291    };
292
293    //====================================================================//
294
295    this.setContactCounter = function(id, value){
296
297        var contact = $('#pm_window #contact-' + id);
298
299        $('.counter', contact).remove();
300
301        if (value > 0){
302
303            var html = '<span class="counter">' + value + '</span>';
304            $('a', contact).append(html);
305
306        }
307
308    };
309
310    //====================================================================//
311
312    this.refresh = function(){
313
314        if (!icms.messages.options.isRefresh) {return false;}
315
316        var pm_window = $('#pm_window:visible');
317        if ($(pm_window).length == 0){return false;}
318
319        var form = $('.composer form', pm_window);
320
321        var url = pm_window.data('refresh-url');
322
323        $('.buttons', form).addClass('sending');
324
325        $.post(url, {contact_id: this.contactId, last_date: this.getMsgLastDate()}, function(result){
326
327            $('.buttons', form).removeClass('sending');
328
329            if (result.error) {
330                icms.messages.options.isRefresh = false;
331                return false;
332            }
333
334            if (result.html){
335                $('#pm_chat', pm_window).append(result.html);
336                $('#pm_chat .message .content .date-new', pm_window).removeClass('date-new').addClass('date');
337                icms.messages.scrollChat();
338            }
339
340            var contact = $('#contact-' + result.contact_id, pm_window);
341
342            if(result.is_online == 1){
343                $('a > span', contact).first().addClass('peer_online');
344                $('a > strong', contact).remove();
345                $('.overview > a > span', pm_window).first().addClass('peer_online');
346                $('.overview .user_date_log', pm_window).hide();
347            } else {
348                $('a > span', contact).first().removeClass('peer_online');
349                if(!$('a > strong', contact).length){
350                    $('a', contact).append('<strong>'+result.date_log+'</strong>');
351                } else {
352                    $('a > strong', contact).html(result.date_log);
353                }
354                $('.overview > a > span', pm_window).first().removeClass('peer_online');
355                $('.overview .user_date_log', pm_window).show().find('span').html(result.date_log);
356            }
357
358            setTimeout('icms.messages.refresh()', icms.messages.options.refreshInterval);
359
360        }, 'json');
361
362        return true;
363
364    };
365
366    //====================================================================//
367
368    this.deleteContact = function(id){
369
370        this.confirm(LANG_PM_DELETE_CONTACT_CONFIRM, function (success){
371
372            if(!success){ return false; }
373
374            icms.messages.showLoader();
375
376            var url = $(pm_window).data('delete-url');
377            var form_data = {contact_id: id};
378
379            $.post(url, form_data, function(result) {
380
381                if (result.error) {return;}
382
383                $('#contact-' + id, pm_window).remove();
384
385                if (result.count > 0){
386                    var next_id = $('.contact', pm_window).eq(0).attr('rel');
387                    icms.messages.selectContact(next_id);
388                } else {
389                    if(self.is_modal){
390                        icms.modal.close();
391                    }
392                }
393
394            }, 'json');
395
396            return true;
397
398        });
399
400        return true;
401
402    };
403
404    this.ignoreContact = function(id){
405
406        this.confirm(LANG_PM_IGNORE_CONTACT_CONFIRM, function (success){
407
408            if(!success){ return false; }
409
410            icms.messages.showLoader();
411
412            var url = $(pm_window).data('ignore-url');
413            var form_data = {contact_id: id};
414
415            $.post(url, form_data, function(result) {
416
417                if (result.error) {return false;}
418
419                $('#contact-' + id, pm_window).remove();
420
421                if (result.count > 0){
422                    var next_id = $('.contact', pm_window).eq(0).attr('rel');
423                    icms.messages.selectContact(next_id);
424                } else {
425                    if(self.is_modal){
426                        icms.modal.close();
427                    }
428                }
429
430            }, 'json');
431
432            return true;
433
434        });
435
436    };
437
438    this.forgiveContact = function(id){
439
440        var pm_window = $('#pm_window');
441
442        var url = pm_window.data('forgive-url');
443        var form_data = {contact_id: id};
444
445        $.post(url, form_data, function(result) {
446
447            if (result.error) {return false;}
448
449            icms.messages.selectContact(id);
450
451        }, "json");
452
453        return true;
454
455    };
456
457    //====================================================================//
458
459    this.showOlder = function(contact_id, link_obj){
460
461        var pm_window = $('#pm_window');
462        var pm_chat = $('#pm_chat', pm_window);
463
464        var url = pm_window.data('show-older-url');
465
466        var message_id = $(link_obj).attr('rel');
467
468        var form_data = {
469            contact_id: contact_id,
470            message_id: message_id
471        };
472
473        $('.show-older', pm_chat).hide();
474        $('.older-loading', pm_chat).show();
475
476        $.post(url, form_data, function(result) {
477
478            $('.older-loading', pm_chat).hide();
479
480            if (result.error) {return;}
481
482            if (result.html){
483
484                $('.show-older', pm_chat).after( result.html );
485
486                var msg_top = $('#message-'+message_id, pm_chat).position().top;
487
488                pm_chat.scrollTop(pm_chat.scrollTop() + msg_top);
489
490            }
491
492            if (result.has_older){
493                $('.show-older', pm_chat).attr('rel', result.older_id).show();
494            }
495
496        }, "json");
497
498        return false;
499
500    };
501
502    this.noticeAction = function(id, name){
503
504        var pm_notices_window = $('#pm_notices_window');
505
506        var url = pm_notices_window.data('action-url');
507
508        var form_data = {
509            notice_id: id,
510            action_name: name
511        };
512
513        $.post(url, form_data, function(result) {
514
515            if (result.error) {
516                return false;
517            }
518
519            if (result.href){
520                window.location.href = result.href;
521            }
522
523            $('#notice-'+id, pm_notices_window).fadeOut(300, function(){
524                $(this).remove();
525                var count = $('.item', pm_notices_window).length;
526                icms.messages.setNoticesCounter(count);
527                if(self.is_modal){
528                    if (count==0){icms.modal.close();} else {icms.modal.resize();}
529                }
530            });
531
532        }, "json");
533
534        return false;
535
536    };
537
538    this.noticeClear = function(){
539
540        this.confirm(LANG_PM_CLEAR_NOTICE_CONFIRM, function (success){
541
542            if(!success){ return false; }
543
544            var pm_notices_window = $('#pm_notices_window');
545            var url = pm_notices_window.data('action-url');
546
547            $.post(url, {action_name: 'clear_notice'}, function(result) {
548
549                if (result.error) {
550                    return false;
551                }
552
553                $('.item', pm_notices_window).fadeOut('fast', function(){
554                    $(this).remove();
555                    var count = $('.item', pm_notices_window).length;
556                    icms.messages.setNoticesCounter(count);
557                    if(self.is_modal){
558                        if (count==0){icms.modal.close();} else {icms.modal.resize();}
559                    }
560                });
561
562            }, 'json');
563
564            return true;
565
566        });
567
568        return false;
569
570    };
571
572    this.setNoticesCounter = function(value){
573
574        var button = $('li.notices-counter');
575
576        $('.counter', button).remove();
577
578        if (value > 0){
579            var html = '<span class="counter">' + value + '</span>';
580            $('a', button).append(html);
581        } else {
582            $(button).remove();
583        }
584
585    };
586
587	return this;
588
589}).call(icms.messages || {},jQuery);

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.