PageSourceSearch

https://kontyp.ru/templates/new/js/messages.js

js kontyp.ru collected 2026-10-01 14:43:58 UTC 9,183 bytes, 356 lines download raw bytes

1var icms = icms || {};
2
3icms.messages = (function ($) {
4
5    this.contactId = null;
6
7    this.options = {
8        isRefresh: false,
9        refreshInterval: 15000
10    };
11
12    //====================================================================//
13
14    this.selectContact = function(id){
15
16        var pm_window = $('#pm_window');
17        var contact = $('#contact-' + id, pm_window);
18
19        $('.messages .counter').remove();
20
21        $('.contacts a', pm_window).removeClass('selected');
22
23        $('a', contact).addClass('selected');
24
25        $('.left-panel', pm_window).html('').removeClass('loading-panel').addClass('loading-panel');
26
27        var url = pm_window.data('contact-url');
28        var form_data = {contact_id: id};
29
30        icms.modal.setCallback('close', function(){
31            icms.messages.options.isRefresh = false;
32        });
33
34        $.post(url, form_data, function(result){
35
36            $('.left-panel', pm_window).html( result ).removeClass('loading-panel');
37
38            $('.left-panel textarea', pm_window).focus();
39
40            icms.messages.setContactCounter(id, 0);
41
42            icms.messages.scrollChat();
43
44            $('#pm_window .composer textarea').on('keydown', function(event){
45                if (event.keyCode === 10 || event.keyCode == 13 && event.ctrlKey) {
46                    icms.messages.send();
47                }
48            });
49
50            icms.messages.contactId = id;
51
52            if(!icms.messages.options.isRefresh) {
53                icms.messages.options.isRefresh = true;
54                setTimeout('icms.messages.refresh()', icms.messages.options.refreshInterval);
55            }
56
57        }, "html");
58
59    }
60
61    //====================================================================//
62
63    this.scrollChat = function(){
64        var chat = document.getElementById("pm_chat");
65        chat.scrollTop = chat.scrollHeight;
66    }
67
68    //====================================================================//
69
70    this.send = function(){
71
72        var form = $('#pm_contact .composer form');
73
74        var content = $('textarea', form).val();
75
76        if (!content) {return;}
77
78        var form_data = icms.forms.toJSON( form );
79        var url = form.attr('action');
80
81        $('.buttons', form).addClass('sending').find('.button').hide();
82        $('textarea', form).attr('disabled', 'disabled');
83
84        $.post(url, form_data, function(result){
85
86            $('.buttons', form).removeClass('sending').find('.button').show();
87            $('textarea', form).removeAttr('disabled');
88
89            if (!result.error){
90                $('textarea', form).val('');
91                icms.messages.addMessage(result);
92            } else {
93                if (result.message.length){
94                    alert(result.message);
95                }
96            }
97
98        }, "json");
99
100    }
101
102    //====================================================================//
103
104    this.addMessage = function(result){
105
106        if (result.error){
107            alert(result.message);
108            return;
109        }
110
111		if (result.message){			
112			$('#pm_contact .chat').append(result.message);
113			this.scrollChat();
114		}
115
116    }
117
118    //====================================================================//
119
120    this.setContactCounter = function(id, value){
121
122        var contact = $('#pm_window #contact-' + id);
123
124        $('.counter', contact).remove();
125
126        if (value > 0){
127
128            var html = '<span class="counter">' + value + '</span>';
129            $('a', contact).append(html);
130
131        }
132
133    }
134
135    //====================================================================//
136
137    this.refresh = function(){
138
139        if (!this.options.isRefresh) {return false;}
140
141        var pm_window = $('#pm_window:visible');
142
143        if (!pm_window){return false;}
144
145        var form = $('.composer form', pm_window);
146
147        var url = pm_window.data('refresh-url');
148
149        $('.buttons', form).addClass('sending');
150
151        $.post(url, {contact_id: this.contactId}, function(result){
152
153            $('.buttons', form).removeClass('sending');
154
155            if (result.error) {
156                icms.messages.options.isRefresh = false;
157                return false;
158            }
159
160            if (result.html){
161                $('#pm_chat', pm_window).append(result.html);
162                icms.messages.scrollChat();
163            }
164
165            setTimeout('icms.messages.refresh()', icms.messages.options.refreshInterval);
166
167        }, "json");
168
169        return true;
170
171    }
172
173    //====================================================================//
174
175    this.deleteContact = function(id){
176
177        if (!confirm(LANG_PM_DELETE_CONTACT_CONFIRM)) {return false;}
178
179        var pm_window = $('#pm_window');
180        $('.left-panel', pm_window).html('').removeClass('loading-panel').addClass('loading-panel');
181
182        var url = pm_window.data('delete-url');
183        var form_data = {contact_id: id};
184
185        $.post(url, form_data, function(result) {
186
187            if (result.error) {return;}
188
189            $('#contact-' + id, pm_window).remove();
190
191            if (result.count > 0){
192                var next_id = $('.contact', pm_window).eq(0).attr('rel');
193                icms.messages.selectContact(next_id);
194            } else {
195                icms.modal.close();
196            }
197
198        }, "json");
199
200        return true;
201
202    }
203
204    //====================================================================//
205
206    this.ignoreContact = function(id){
207
208        if (!confirm(LANG_PM_IGNORE_CONTACT_CONFIRM)) {return false;}
209
210        var pm_window = $('#pm_window');
211        $('.left-panel', pm_window).html('').removeClass('loading-panel').addClass('loading-panel');
212
213        var url = pm_window.data('ignore-url');
214        var form_data = {contact_id: id};
215
216        $.post(url, form_data, function(result) {
217
218            if (result.error) {return false;}
219
220            $('#contact-' + id, pm_window).remove();
221
222            if (result.count > 0){
223                var next_id = $('.contact', pm_window).eq(0).attr('rel');
224                icms.messages.selectContact(next_id);
225            } else {
226                icms.modal.close();
227            }
228
229        }, "json");
230
231        return true;
232
233    }
234
235    //====================================================================//
236
237    this.forgiveContact = function(id){
238
239        var pm_window = $('#pm_window');
240
241        var url = pm_window.data('forgive-url');
242        var form_data = {contact_id: id};
243
244        $.post(url, form_data, function(result) {
245
246            if (result.error) {return false;}
247
248            icms.messages.selectContact(id);
249
250        }, "json");
251
252        return true;
253
254    }
255
256    //====================================================================//
257
258    this.showOlder = function(contact_id, link_obj){
259
260        var pm_window = $('#pm_window');
261        var pm_chat = $('#pm_chat', pm_window);
262
263        var url = pm_window.data('show-older-url');
264
265        var message_id = $(link_obj).attr('rel');
266
267        var form_data = {
268            contact_id: contact_id,
269            message_id: message_id
270        };
271
272        $('.show-older', pm_chat).hide();
273        $('.older-loading', pm_chat).show();
274
275        $.post(url, form_data, function(result) {
276
277            $('.older-loading', pm_chat).hide();
278
279            if (result.error) {return;}
280
281            if (result.html){
282
283                $('.show-older', pm_chat).after( result.html );
284
285                var msg_top = $('#message-'+message_id, pm_chat).position().top;
286
287                pm_chat.scrollTop(pm_chat.scrollTop() + msg_top);
288
289            }
290
291            if (result.has_older){
292                $('.show-older', pm_chat).attr('rel', result.older_id).show();
293            }
294
295        }, "json");
296
297        return true;
298
299    }
300
301    //====================================================================//
302
303    this.noticeAction = function(id, name){
304
305        var pm_notices_window = $('#pm_notices_window');
306
307        var url = pm_notices_window.data('action-url');
308
309        var form_data = {
310            notice_id: id,
311            action_name: name
312        };
313
314        $.post(url, form_data, function(result) {
315
316            if (result.error) {
317                return false;
318            }
319
320            if (result.href){
321                window.location.href = result.href;
322            }
323
324            $('#notice-'+id, pm_notices_window).fadeOut(300, function(){
325                $(this).remove();
326                var count = $('.item', pm_notices_window).length;
327                icms.messages.setNoticesCounter(count);
328                if (count==0){icms.modal.close();} else {icms.modal.resize();}
329            });
330
331        }, "json");
332
333        return true;
334
335    }
336
337    //====================================================================//
338
339    this.setNoticesCounter = function(value){
340
341        var button = $('li.notices-counter');
342
343        $('.counter', button).remove();
344
345        if (value > 0){
346            var html = '<span class="counter">' + value + '</span>';
347            $('a', button).append(html);
348        }
349
350    }
351
352    //====================================================================//
353
354	return this;
355
356}).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.