PageSourceSearch

https://nic-snail.ru/css_js/admin.js?1642360338

js nic-snail.ru collected 2026-10-03 19:03:23 UTC 52,069 bytes, 1,447 lines download raw bytes

1$(document).ready(function() {
2    var sugg_page = 1;
3    var cid_name = $('#united__container').attr('data-type');
4    var cid = 0;
5    switch (cid_name) {
6        case 'member':
7            cid = 100;
8            break;
9        case 'teacher':
10            cid = 99;
11            break;
12        case 'coord':
13            cid = 34;
14            break;
15    }
16
17    $('.popup_tip').tooltipster({
18        animation: 'grow',
19        delay: 200,
20        contentAsHTML: true
21    });
22
23    $('.gfilter__block--date input').pickmeup({
24        format : 'Y-m-d',
25        hide_on_select : true,
26        locale : {
27            days : ['воскресенье', 'понедельник', 'вторник', 'среда', 'четверг', 'пятница', 'суббота', 'воскресенье'],
28            daysShort : ['вск', 'пнд', 'втр', 'срд', 'чтв', 'птн', 'сбт', 'вск'],
29            daysMin : ['Вс', 'Пн', 'Вт', 'Ср', 'Чт', 'Пт', 'Сб', 'Вс'],
30            months : ['Январь', 'Февраль', 'Март', 'Апрель', 'Май', 'Июнь', 'Июль', 'Август', 'Сентябрь', 'Октябрь', 'Ноябрь', 'Декабрь'],
31            monthsShort : ['Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт', 'Ноя', 'Дек']
32        }
33    });
34
35    function gfilter_state($filter) {
36
37        var disabled_class = 'gfilter__block--disable';
38        $filter.find('.gfilter__block').removeClass(disabled_class);
39
40        var arr = [
41            {type: 'country', subs: ['region', 'district', 'city']},
42            {type: 'city', subs: ['inst']}
43        ];
44
45        $.each(arr, function(key, item) {
46            var val = $filter.find('.gfilter__block[data-type="'+item['type']+'"] input[name="'+item['type']+'_ac"]').val();
47            if ( (val == '') || (val === undefined) ) {
48                $filter.find('.gfilter__block[data-type="'+item['type']+'"] input[type="hidden"]').val('');
49            }
50        });
51
52        $.each(arr, function(key, item) {
53            var val = $filter.find('.gfilter__block[data-type="'+item['type']+'"] input[type="hidden"]').val();
54            if ( (val == '') || (val === undefined) ) {
55                $.each(item['subs'], function(key2, item2) {
56                    var $item = $filter.find('.gfilter__block[data-type="'+item2+'"]');
57                    $item.addClass(disabled_class);
58                    $item.find('input').val('');
59                });
60            }
61        });
62    }
63
64    $('.gfilter').each(function() {
65        var $this = $(this);
66        gfilter_state($this);
67    });
68
69    $('.gfilter input').on('keyup', function() {
70        var $this = $(this);
71        gfilter_state($this.parents('.gfilter'));
72    });
73
74    /***************************************/
75    /**********   autocomplete   ***********/
76    /***************************************/
77
78    if ($('input[name="country_ac"]').length) {
79        $('input[name="country_ac"]').autocomplete({
80            source: function(request, response) {
81                $.ajax({ url: '/admin/ac_country',
82                    data: { term: this.term},
83                    dataType: "json",
84                    type: "POST",
85                    success: function(data){
86                        if ((data.error !== null) && (data.error > 0)) {
87                            Notify.alert(data.data);
88                        } else {
89                            response(data);
90                        }
91                    }
92                });
93            },
94            minLength: 2,
95            deferRequestBy: 200,
96            remoteDataType: 'json',
97            html: true,
98            select: function(event, ui) {
99
100                var $this = $(this),
101                    $gfilter = $this.parents('.gfilter:first'),
102                    id = ui.item.id;
103
104                $this.nextAll('input[type="hidden"]:first').val(id);
105
106                setTimeout(function() {
107                    $this.val(ui.item.label.stripTags());
108                }, 100);
109
110                gfilter_state($gfilter);
111
112            },
113            search: function( event, ui ) {
114
115                var $this = $(this),
116                    $gfilter = $this.parents('.gfilter:first');
117
118                $this.nextAll('input[type="hidden"]:first').val('');
119
120                $gfilter.find('.gfilter__block[data-type="region"] input').val('');
121                $gfilter.find('.gfilter__block[data-type="district"] input').val('');
122                $gfilter.find('.gfilter__block[data-type="city"] input').val('');
123                $gfilter.find('.gfilter__block[data-type="inst"] input').val('');
124
125                gfilter_state($gfilter);
126
127            }
128        });
129    }
130
131    if ($('input[name="region_ac"]').length) {
132        $('input[name="region_ac"]').autocomplete({
133            source: function(request, response) {
134                var $this = $(this.element);
135
136                $.ajax({ url: '/admin/ac_region',
137                    data: {
138                        term: this.term,
139                        country: $this.parents('.gfilter:first').find('input[name="country"]').val()
140                    },
141                    dataType: "json",
142                    type: "POST",
143                    success: function(data){
144                        if ((data.error !== null) && (data.error > 0)) {
145                            Notify.alert(data.data);
146                        } else {
147                            response(data);
148                        }
149                    }
150                });
151            },
152            minLength: 2,
153            deferRequestBy: 200,
154            remoteDataType: 'json',
155            html: true,
156            select: function(event, ui) {
157
158                var $this = $(this),
159                    $gfilter = $this.parents('.gfilter:first'),
160                    id = ui.item.id;
161
162                $this.nextAll('input[type="hidden"]:first').val(id);
163
164                setTimeout(function() {
165                    $this.val(ui.item.label.stripTags());
166                }, 100);
167
168                gfilter_state($gfilter);
169
170            },
171            search: function( event, ui ) {
172
173                var $this = $(this),
174                    $gfilter = $this.parents('.gfilter:first');
175
176                $this.nextAll('input[type="hidden"]:first').val('');
177
178                $gfilter.find('.gfilter__block[data-type="district"] input').val('');
179                $gfilter.find('.gfilter__block[data-type="city"] input').val('');
180                $gfilter.find('.gfilter__block[data-type="inst"] input').val('');
181
182                gfilter_state($gfilter);
183
184            }
185        });
186    }
187
188
189    if ($('input[name="district_ac"]').length) {
190        $('input[name="district_ac"]').autocomplete({
191            source: function(request, response) {
192                var $this = $(this.element);
193
194                $.ajax({ url: '/admin/ac_district',
195                    data: {
196                        term: this.term,
197                        country: $this.parents('.gfilter:first').find('input[name="country"]').val()
198                    },
199                    dataType: "json",
200                    type: "POST",
201                    success: function(data){
202                        if ((data.error !== null) && (data.error > 0)) {
203                            Notify.alert(data.data);
204                        } else {
205                            response(data);
206                        }
207                    }
208                });
209            },
210            minLength: 2,
211            deferRequestBy: 200,
212            remoteDataType: 'json',
213            html: true,
214            select: function(event, ui) {
215
216                var $this = $(this),
217                    $gfilter = $this.parents('.gfilter:first'),
218                    id = ui.item.id;
219
220                $this.nextAll('input[type="hidden"]:first').val(id);
221
222                setTimeout(function() {
223                    $this.val(ui.item.label.stripTags());
224                }, 100);
225
226                gfilter_state($gfilter);
227
228            },
229            search: function( event, ui ) {
230
231                var $this = $(this),
232                    $gfilter = $this.parents('.gfilter:first');
233
234                $this.nextAll('input[type="hidden"]:first').val('');
235
236                $gfilter.find('.gfilter__block[data-type="region"] input').val('');
237                $gfilter.find('.gfilter__block[data-type="city"] input').val('');
238                $gfilter.find('.gfilter__block[data-type="inst"] input').val('');
239
240                gfilter_state($gfilter);
241
242            }
243        });
244    }
245
246    if ($('input[name="city_ac"]').length) {
247        $('input[name="city_ac"]').autocomplete({
248            source: function(request, response) {
249                var $this = $(this.element);
250
251                $.ajax({ url: '/admin/ac_city',
252                    data: {
253                        term: this.term,
254                        country: $this.parents('.gfilter:first').find('input[name="country"]').val(),
255                        region: $this.parents('.gfilter:first').find('input[name="region"]').val(),
256                        district: $this.parents('.gfilter:first').find('input[name="district"]').val()
257                    },
258                    dataType: "json",
259                    type: "POST",
260                    success: function(data){
261                        if ((data.error !== null) && (data.error > 0)) {
262                            Notify.alert(data.data);
263                        } else {
264                            response(data);
265                        }
266                    }
267                });
268            },
269            minLength: 2,
270            deferRequestBy: 200,
271            remoteDataType: 'json',
272            html: true,
273            select: function(event, ui) {
274
275                var $this = $(this),
276                    $gfilter = $this.parents('.gfilter:first'),
277                    id = ui.item.id;
278
279                $this.nextAll('input[type="hidden"]:first').val(id);
280
281                setTimeout(function() {
282                    $this.val(ui.item.label.stripTags());
283                }, 100);
284
285                gfilter_state($gfilter);
286
287            },
288            search: function( event, ui ) {
289
290                var $this = $(this),
291                    $gfilter = $this.parents('.gfilter:first');
292
293                $this.nextAll('input[type="hidden"]:first').val('');
294
295                $gfilter.find('.gfilter__block[data-type="inst"] input').val('');
296
297                gfilter_state($gfilter);
298
299            }
300        });
301    }
302
303
304    if ($('input[name="inst_ac"]').length) {
305        $('input[name="inst_ac"]').autocomplete({
306            source: function(request, response) {
307                var $this = $(this.element);
308
309                $.ajax({ url: '/admin/ac_inst',
310                    data: {
311                        term: this.term,
312                        city: $this.parents('.gfilter:first').find('input[name="city"]').val()
313                    },
314                    dataType: "json",
315                    type: "POST",
316                    success: function(data){
317                       if ((data.error !== null) && (data.error > 0)) {
318                            Notify.alert(data.data);
319                        } else {
320                            response(data);
321                        }
322                    }
323                });
324            },
325            minLength: 1,
326            deferRequestBy: 200,
327            remoteDataType: 'json',
328            html: true,
329            select: function(event, ui) {
330
331                var $this = $(this),
332                    $gfilter = $this.parents('.gfilter:first'),
333                    id = ui.item.id;
334
335                $this.nextAll('input[type="hidden"]:first').val(id);
336
337                setTimeout(function() {
338                    $this.val(ui.item.label.stripTags());
339                }, 100);
340
341                gfilter_state($gfilter);
342
343            },
344            search: function( event, ui ) {
345
346                var $this = $(this),
347                    $gfilter = $this.parents('.gfilter:first');
348
349                $this.nextAll('input[type="hidden"]:first').val('');
350
351                gfilter_state($gfilter);
352
353            }
354        });
355    }
356
357
358    /*
359    if ($('input[name="post_ac"]').length) {
360        $('input[name="post_ac"]').autocomplete({
361            source: function(request, response) {
362                var $this = $(this.element);
363
364                $.ajax({ url: '/admin/ac_post',
365                    data: {
366                        term: this.term,
367                        type:  $this.parents('.gfilter__block:first').attr('data-for')
368                    },
369                    dataType: "json",
370                    type: "POST",
371                    success: function(data){
372                        if ((data.error !== null) && (data.error > 0)) {
373                            alert(data.data);
374                        } else {
375                            response(data);
376                        }
377                    }
378                });
379            },
380            minLength: 4,
381            deferRequestBy: 200,
382            remoteDataType: 'json',
383            html: true,
384            select: function(event, ui) {
385
386                var $this = $(this),
387                    $gfilter = $this.parents('.gfilter:first'),
388                    id = ui.item.id;
389
390                $this.nextAll('input[type="hidden"]:first').val(id);
391
392                setTimeout(function() {
393                    $this.val(ui.item.label.stripTags());
394                }, 100);
395
396                //gfilter_state($gfilter);
397
398            },
399            search: function( event, ui ) {
400
401                var $this = $(this),
402                    $gfilter = $this.parents('.gfilter:first');
403
404                $this.nextAll('input[type="hidden"]:first').val('');
405
406                //gfilter_state($gfilter);
407
408            }
409        });
410    }
411    */
412
413    /***************************************/
414
415
416
417
418    function grab_users(reset) {
419        reset = reset || 0;
420
421        var url = '/admin/grab_users',
422            last_url = '/admin/grab_users_file';
423
424        var filter = $('#gf_user form').serialize();
425
426        filter += ('&reset='+reset);
427
428        $.post(url, filter, function(data) {
429            var percent = Math.round((data.done_count/data.all_count)*100);
430            percent = (percent > 100) ? 100 : percent;
431
432//			$('#probar').css({width: percent+'%'});
433
434            var str = '';
435            str += '<b>Прогресс выполнения:</b> '+percent+'% <br>';
436            str += '<b>Сделано:</b> '+data.done_count+' из '+data.all_count+' <br>';
437            str += '<b>Попало в выгрузку:</b> '+data.exported+' <br>';
438
439            /*
440            if (data.data == 'end') {
441                str += '<b>Необработано:</b> '+ (data.all_count - data.done_count) +' (к завявке не привязан ни один пользователь) <br>';
442            }
443            */
444
445            $('.admin_popup__info').html(str);
446            $('.admin_popup__status').html('<b>Статус:</b> выполнение...');
447
448            if (data.data == 'next') {
449                grab_users();
450            } else if (data.data == 'end') {
451                $('.admin_popup__status').html('<b>Статус:</b> завершено');
452                $('.admin_popup__close').show();
453
454                location.href = last_url; //переходим на скачивани архива с файлами
455                loader.hide();
456
457            } else if (data.data == 'error') {
458                Notify.alert(data.error);
459                $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
460                $('.admin_popup__close').show();
461                loader.hide();
462            }
463
464
465        }, 'json').fail(function() {
466            Notify.alert('Что-то пошло не так, перезагрузите страницу и попробуйте снова');
467
468            $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
469            $('.admin_popup__close').show();
470
471            loader.hide();
472        });
473    }
474
475
476    $('#admin_grab_users').on('click', function() {
477        loader.show();
478        grab_users(1);
479
480        $('.admin_popup').fadeIn(300);
481        $('.admin_popup__status').html('<b>Статус</b>: инициализация...');
482        $('.admin_popup__info').html('');
483
484        return false;
485    });
486
487
488    function grab_teachers(reset) {
489        reset = reset || 0;
490
491        var url = '/admin/grab_teachers',
492            last_url = '/admin/grab_teachers_file';
493
494        var filter = $('#gf_teacher form').serialize();
495
496        filter += ('&reset='+reset);
497
498        $.post(url, filter, function(data) {
499            var percent = Math.round((data.done_count/data.all_count)*100);
500            percent = (percent > 100) ? 100 : percent;
501
502//			$('#probar').css({width: percent+'%'});
503
504            var str = '';
505            str += '<b>Прогресс выполнения:</b> '+percent+'% <br>';
506            str += '<b>Сделано:</b> '+data.done_count+' из '+data.all_count+' <br>';
507            str += '<b>Попало в выгрузку:</b> '+data.exported+' <br>';
508
509            /*
510             if (data.data == 'end') {
511             str += '<b>Необработано:</b> '+ (data.all_count - data.done_count) +' (к завявке не привязан ни один пользователь) <br>';
512             }
513             */
514
515            $('.admin_popup__info').html(str);
516            $('.admin_popup__status').html('<b>Статус:</b> выполнение...');
517
518            if (data.data == 'next') {
519                grab_teachers();
520            } else if (data.data == 'end') {
521                $('.admin_popup__status').html('<b>Статус:</b> завершено');
522                $('.admin_popup__close').show();
523
524                location.href = last_url; //переходим на скачивани архива с файлами
525                loader.hide();
526
527            } else if (data.data == 'error') {
528                Notify.alert(data.error);
529                $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
530                $('.admin_popup__close').show();
531                loader.hide();
532            }
533
534
535        }, 'json').fail(function() {
536            Notify.alert('Что-то пошло не так, перезагрузите страницу и попробуйте снова');
537
538            $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
539            $('.admin_popup__close').show();
540
541            loader.hide();
542        });
543    }
544
545
546    $('#admin_grab_teachers').on('click', function() {
547        loader.show();
548        grab_teachers(1);
549
550        $('.admin_popup').fadeIn(300);
551        $('.admin_popup__status').html('<b>Статус</b>: инициализация...');
552        $('.admin_popup__info').html('');
553
554        return false;
555    });
556
557
558
559
560    function grab_members(reset) {
561        reset = reset || 0;
562
563        var url = '/admin/grab_members',
564            last_url = '/admin/grab_members_file';
565
566        var filter = $('#gf_member form').serialize();
567
568        filter += ('&reset='+reset);
569
570        $.post(url, filter, function(data) {
571            var percent = Math.round((data.done_count/data.all_count)*100);
572            percent = (percent > 100) ? 100 : percent;
573
574//			$('#probar').css({width: percent+'%'});
575
576            var str = '';
577            str += '<b>Прогресс выполнения:</b> '+percent+'% <br>';
578            str += '<b>Сделано:</b> '+data.done_count+' из '+data.all_count+' <br>';
579            str += '<b>Попало в выгрузку:</b> '+data.exported+' <br>';
580
581            /*
582             if (data.data == 'end') {
583             str += '<b>Необработано:</b> '+ (data.all_count - data.done_count) +' (к завявке не привязан ни один пользователь) <br>';
584             }
585             */
586
587            $('.admin_popup__info').html(str);
588            $('.admin_popup__status').html('<b>Статус:</b> выполнение...');
589
590            if (data.data == 'next') {
591                grab_members();
592            } else if (data.data == 'end') {
593                $('.admin_popup__status').html('<b>Статус:</b> завершено');
594                $('.admin_popup__close').show();
595
596                location.href = last_url; //переходим на скачивани архива с файлами
597                loader.hide();
598
599            } else if (data.data == 'error') {
600                Notify.alert(data.error);
601                $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
602                $('.admin_popup__close').show();
603                loader.hide();
604            }
605
606
607        }, 'json').fail(function() {
608            Notify.alert('Что-то пошло не так, перезагрузите страницу и попробуйте снова');
609
610            $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
611            $('.admin_popup__close').show();
612
613            loader.hide();
614        });
615    }
616
617
618    $('#admin_grab_members').on('click', function() {
619        loader.show();
620        grab_members(1);
621
622        $('.admin_popup').fadeIn(300);
623        $('.admin_popup__status').html('<b>Статус</b>: инициализация...');
624        $('.admin_popup__info').html('');
625
626        return false;
627    });
628
629    function grab_apps(reset) {
630        reset = reset || 0;
631
632        var url = '/admin/grab_apps',
633            last_url = '/admin/grab_apps_file';
634
635        var filter = $('#gf_apps form').serialize();
636
637        filter += ('&reset='+reset);
638
639        $.post(url, filter, function(data) {
640            var percent = Math.round((data.done_count/data.all_count)*100);
641            percent = (percent > 100) ? 100 : percent;
642
643            var str = '';
644            str += '<b>Прогресс выполнения:</b> '+percent+'% <br>';
645            str += '<b>Сделано:</b> '+data.done_count+' из '+data.all_count+' <br>';
646            str += '<b>Попало в выгрузку:</b> '+data.exported+' <br>';
647
648
649            $('.admin_popup__info').html(str);
650            $('.admin_popup__status').html('<b>Статус:</b> выполнение...');
651
652            if (data.data == 'next') {
653                grab_apps();
654            } else if (data.data == 'end') {
655                $('.admin_popup__status').html('<b>Статус:</b> завершено');
656                $('.admin_popup__close').show();
657
658                location.href = last_url; //переходим на скачивани архива с файлами
659                loader.hide();
660
661            } else if (data.data == 'error') {
662                Notify.alert(data.error);
663                $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
664                $('.admin_popup__close').show();
665                loader.hide();
666            }
667
668
669        }, 'json').fail(function() {
670            Notify.alert('Что-то пошло не так, перезагрузите страницу и попробуйте снова');
671
672            $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
673            $('.admin_popup__close').show();
674
675            loader.hide();
676        });
677    }
678
679    $('#admin_grab_apps').on('click', function() {
680        loader.show();
681        grab_apps(1);
682
683        $('.admin_popup').fadeIn(300);
684        $('.admin_popup__status').html('<b>Статус</b>: инициализация...');
685        $('.admin_popup__info').html('');
686
687        return false;
688    });
689
690    function grab_subs(reset) {
691        reset = reset || 0;
692
693        var url = '/admin/grab_subs',
694            last_url = '/admin/grab_subs_file';
695
696        var filter = $('#gf_subs form').serialize();
697
698        filter += ('&reset='+reset);
699
700        $.post(url, filter, function(data) {
701            var percent = Math.round((data.done_count/data.all_count)*100);
702            percent = (percent > 100) ? 100 : percent;
703
704            var str = '';
705            str += '<b>Прогресс выполнения:</b> '+percent+'% <br>';
706            str += '<b>Сделано:</b> '+data.done_count+' из '+data.all_count+' <br>';
707            str += '<b>Попало в выгрузку:</b> '+data.exported+' <br>';
708
709
710            $('.admin_popup__info').html(str);
711            $('.admin_popup__status').html('<b>Статус:</b> выполнение...');
712
713            if (data.data == 'next') {
714                grab_subs();
715            } else if (data.data == 'end') {
716                $('.admin_popup__status').html('<b>Статус:</b> завершено');
717                $('.admin_popup__close').show();
718
719                location.href = last_url; //переходим на скачивани архива с файлами
720                loader.hide();
721
722            } else if (data.data == 'error') {
723                Notify.alert(data.error);
724                $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
725                $('.admin_popup__close').show();
726                loader.hide();
727            }
728
729
730        }, 'json').fail(function() {
731            Notify.alert('Что-то пошло не так, перезагрузите страницу и попробуйте снова');
732
733            $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
734            $('.admin_popup__close').show();
735
736            loader.hide();
737        });
738    }
739
740    $('#admin_grab_subs').on('click', function() {
741        loader.show();
742        grab_subs(1);
743
744        $('.admin_popup').fadeIn(300);
745        $('.admin_popup__status').html('<b>Статус</b>: инициализация...');
746        $('.admin_popup__info').html('');
747
748        return false;
749    });
750
751    function grab_ups(reset) {
752        reset = reset || 0;
753
754        var url = '/admin/grab_ups',
755            last_url = '/admin/grab_ups_file';
756
757        var filter = $('#gf_ups form').serialize();
758
759        filter += ('&reset='+reset);
760
761        $.post(url, filter, function(data) {
762            var percent = Math.round((data.done_count/data.all_count)*100);
763            percent = (percent > 100) ? 100 : percent;
764
765            var str = '';
766            str += '<b>Прогресс выполнения:</b> '+percent+'% <br>';
767            str += '<b>Сделано:</b> '+data.done_count+' из '+data.all_count+' <br>';
768            str += '<b>Попало в выгрузку:</b> '+data.exported+' <br>';
769
770
771            $('.admin_popup__info').html(str);
772            $('.admin_popup__status').html('<b>Статус:</b> выполнение...');
773
774            if (data.data == 'next') {
775                grab_ups();
776            } else if (data.data == 'end') {
777                $('.admin_popup__status').html('<b>Статус:</b> завершено');
778                $('.admin_popup__close').show();
779
780                location.href = last_url; //переходим на скачивани архива с файлами
781                loader.hide();
782
783            } else if (data.data == 'error') {
784                Notify.alert(data.error);
785                $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
786                $('.admin_popup__close').show();
787                loader.hide();
788            }
789
790
791        }, 'json').fail(function() {
792            Notify.alert('Что-то пошло не так, перезагрузите страницу и попробуйте снова');
793
794            $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
795            $('.admin_popup__close').show();
796
797            loader.hide();
798        });
799    }
800
801    $('#admin_grab_ups').on('click', function() {
802        loader.show();
803        grab_ups(1);
804
805        $('.admin_popup').fadeIn(300);
806        $('.admin_popup__status').html('<b>Статус</b>: инициализация...');
807        $('.admin_popup__info').html('');
808
809        return false;
810    });
811
812    function grab_member_events(reset) {
813        reset = reset || 0;
814
815        var url = '/admin/grab_member_events',
816            last_url = '/admin/grab_member_events_file';
817
818        var filter = $('#gf_member_events form').serialize();
819
820        filter += ('&reset='+reset);
821
822        $.post(url, filter, function(data) {
823            console.log(data);
824            var percent = Math.round((data.done_count/data.all_count)*100);
825            percent = (percent > 100) ? 100 : percent;
826
827            var str = '';
828            str += '<b>Прогресс выполнения:</b> '+percent+'% <br>';
829            str += '<b>Сделано:</b> '+data.done_count+' из '+data.all_count+' <br>';
830            str += '<b>Попало в выгрузку:</b> '+data.exported+' <br>';
831
832
833            $('.admin_popup__info').html(str);
834            $('.admin_popup__status').html('<b>Статус:</b> выполнение...');
835
836            if (data.data == 'next') {
837                grab_member_events();
838            } else if (data.data == 'end') {
839                $('.admin_popup__status').html('<b>Статус:</b> завершено');
840                $('.admin_popup__close').show();
841
842                location.href = last_url; //переходим на скачивани архива с файлами
843                loader.hide();
844
845            } else if (data.data == 'error') {
846                Notify.alert(data.error);
847                $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
848                $('.admin_popup__close').show();
849                loader.hide();
850            }
851
852
853        }, 'json').fail(function() {
854            Notify.alert('Что-то пошло не так, перезагрузите страницу и попробуйте снова');
855
856            $('.admin_popup__status').html('<b>Статус:</b> завершено с ошибкой');
857            $('.admin_popup__close').show();
858
859            loader.hide();
860        });
861    }
862
863    $('#admin_grab_member_events').on('click', function() {
864        loader.show();
865        grab_member_events(1);
866
867        $('.admin_popup').fadeIn(300);
868        $('.admin_popup__status').html('<b>Статус</b>: инициализация...');
869        $('.admin_popup__info').html('');
870
871        return false;
872    });
873
874    function view_ajax_info(text, error) {
875        error = error || 0;
876
877        var $info = $('#aform_ajax_info');
878
879        if (error) {
880            $info.addClass('aform__red').removeClass('aform__green');
881        } else {
882            $info.addClass('aform__green').removeClass('aform__red');
883        }
884
885        $info.html(text);
886    }
887
888    /*******************************************************/
889    /****************   mail templates   *******************/
890    /*******************************************************/
891    $('#mails_edit_form').on('submit', function(e) {
892        e.preventDefault();
893
894        var $form = $(this);
895
896        if (ajax) {
897            loader.show();
898
899            for ( instance in CKEDITOR.instances )
900                CKEDITOR.instances[instance].updateElement();
901
902            $form.ajaxSubmit({
903                url: '/admin/mails_edit_proc',
904                dataType: 'json',
905                type: "POST",
906                success: function(data) {
907                    loader.hide();
908                    view_ajax_info(data.data, data.error);
909                },
910                error: function() {
911                    loader.hide();
912                    view_ajax_info('Сервер временно недоступен', 1);
913                }
914            });
915        }
916    });
917
918    $('#admin_winners_add').on('click', function (e) {
919        e.preventDefault();
920        $('.greenblur,.admin_winners_add_pop').show();
921        $('#admin_winners_id').val('');
922        $('#admin_winners_id').focus();
923    });
924
925    $('#admin_winners_id').keypress(function (e) {
926        if (e.which == 13) {
927            e.preventDefault();
928            $('#admin_winners_memsearch').click();
929            $('#admin_meta_memsearch').click();
930            return false;
931        }
932    });
933
934    $('#admin_winners_memsearch').on('click', function (e) {
935        e.preventDefault();
936        mem_id = $('#admin_winners_id').val();
937
938        $('#admin_winners_search_results').hide();
939        $('#admin_winners_search_results_fail').hide();
940
941        $.post('/admin/winners_search', {'mem_id' : mem_id}, function (data) {
942            $('#admin_winners_memid').html(data.surname + ' ' + data.name);
943            if (data.error == 0) {
944                $('#admin_winners_search_results').show();
945                $('#winnerAddForm').attr('data-mem-id', mem_id);
946            } else {
947                $('#admin_winners_search_results_fail').show();
948            }
949        }, 'JSON');
950    });
951
952    $('#admin_winners_add_link').on('click', function (e) {
953        e.preventDefault();
954        mem_id = $('#winnerAddForm').attr('data-mem-id');
955        year = $('.asubmenu__item--active').attr('data-year');
956        $('.greenblur,.admin_winners_add_pop').hide();
957        $.post('/admin/winners_add', {
958            'mem_id' : mem_id,
959            'year' : year
960        }, function (data) {
961            $('.winners').load('/admin/winners/list/' + year + ' .winners');
962        }, 'JSON');
963        $('#admin_winners_search_results').hide();
964        $('#winnerAddForm').removeAttr('data-mem-id');
965    });
966
967    $('.admin_winners_del_link').live('click', function (e) {
968        e.preventDefault();
969        mem_id = $(this).attr('data-uid');
970        year = $('.asubmenu__item--active').attr('data-year');
971        $.post('/admin/winners_del', {
972            'mem_id' : mem_id,
973            'year' : year
974        }, function (data) {
975            $('.winners').load('/admin/winners/list/' + year + ' .winners');
976        }, 'JSON');
977    });
978
979    $('#admin_meta_memsearch').on('click', function (e) {
980        e.preventDefault();
981        var mem_id = $('#admin_winners_id').val();
982        var uclass = $('input[name="meta_add_params"]').attr('data-class');
983
984        $('#admin_winners_search_results').hide();
985        $('#admin_winners_search_results_fail').hide();
986
987        $.post('/admin/winners_search', {
988            'mem_id' : mem_id,
989            'class' : uclass
990        }, function (data) {
991            $('#admin_winners_memid').html(data.surname + ' ' + data.name);
992            if (data.father) {
993                $('#admin_winners_memid').append(' ' + data.father);
994            }
995            if (data.error == 0) {
996                $('#admin_winners_search_results').show();
997                $('#metaAddForm').attr('data-mem-id', mem_id);
998            } else {
999                $('#admin_winners_search_results_fail').show();
1000            }
1001        }, 'JSON');
1002    });
1003
1004    $('.mem_del_button').live('click', function (e) {
1005        e.preventDefault();
1006
1007        var mem_id = $(this).closest('.united--member-row').attr('data-id');
1008        var meta_id = $(this).closest('.united--wrap-row').attr('data-id');
1009
1010        Notify.confirm(
1011            'Вы действительно хотите удалить пользователя&nbsp;'
1012            + mem_id + ' из группы&nbsp;' + meta_id + '?',
1013            function () {
1014                loader.show();
1015                $.post('/admin/meta_mem_del', {
1016                    'mem_id' : mem_id,
1017                    'meta_id' : meta_id,
1018                    'cid' : cid
1019                }, function (data) {
1020                    var selector = '#united__container';
1021                    $(selector).load('/admin/unifying/'+ cid_name + ' ' + selector, function () {
1022                        loader.hide();
1023                    });
1024                }, 'JSON');
1025            }
1026        );
1027    });
1028
1029    $('.mem_add_button').live('click', function (e) {
1030        e.preventDefault();
1031        var meta_id = $(this).attr('data-meta-id');
1032        $('#admin_winners_search_results').hide();
1033        $('#admin_winners_search_results_fail').hide();
1034        $('.greenblur,.admin_meta_add_pop').show();
1035        $('#metaAddForm').attr('data-meta-id', meta_id);
1036        $('#admin_winners_id').val('');
1037        $('#admin_winners_id').focus();
1038    });
1039
1040    $('#admin_meta_add_link').live('click', function (e) {
1041        e.preventDefault();
1042        meta_id = $('#metaAddForm').attr('data-meta-id');
1043        mem_id = $('#metaAddForm').attr('data-mem-id');
1044        year = $('.asubmenu__item--active').attr('data-year');
1045        $('.greenblur,.admin_meta_add_pop').hide();
1046        loader.show();
1047        $.post('/admin/meta_mem_add', {
1048            'mem_id' : mem_id,
1049            'meta_id' : meta_id,
1050            'cid' : cid
1051        }, function (data) {
1052            var selector = '#united__container';
1053            $(selector).load('/admin/unifying/'+ cid_name + ' ' + selector, function () {
1054                loader.hide();
1055            });
1056        }, 'json');
1057        $('#admin_winners_search_results').hide();
1058        $('#metaAddForm').removeAttr('data-mem-id');
1059    });
1060
1061    function updateChecked(parent) {
1062        if (parent == undefined) {
1063            parent = $('.united__container-suggestion > .united--wrap-row:not(".united--wrap-header")');
1064        }
1065        var checked = [];
1066
1067        parent.each(function () {
1068            checked = [];
1069            $(this).find('.united--member-row').each(function () {
1070                if ($(this).attr('data-checked') == 1) {
1071                    checked.push($(this).attr('data-id'));
1072                }
1073            });
1074            $(this).attr('data-checked', checked);
1075
1076            if ($(this).attr('data-checked') == '') {
1077                $(this).removeAttr('data-checked');
1078            }
1079        });
1080    };
1081
1082    $('.meta_group-accept').live('click', function (e) {
1083        e.preventDefault();
1084        var parent = $(this).closest('.united--wrap-row');
1085        updateChecked(parent);
1086        var meta_id = parent.attr('data-id');
1087        var checked = parent.attr('data-checked');
1088        var overlay = parent.closest('.meta--overlay-wrapper');
1089
1090        var send_data = {
1091            'meta_id' : meta_id,
1092            'cid' : cid
1093        }
1094        if (checked != undefined) {
1095            send_data.checked = checked;
1096        }
1097
1098        $.post('/admin/meta_accept', send_data, function (data) {
1099            overlay.append('<div class="meta--overlay-ok">Успешно добавлено!</div>');
1100            $('.meta--overlay-ok').fadeIn('250');
1101            setTimeout(function() {
1102                $('.meta--overlay-ok').fadeOut('250');
1103            }, 2000);
1104            setTimeout(function() {
1105                parent.attr('data_id', data.meta_id);
1106                parent.removeAttr('data_checked');
1107                parent.find('.meta_id').text(data.meta_id);
1108                parent.find('.united--member-row').each(function() {
1109                    $(this).find('.col1').html($(this).find('.col1').text());
1110                    $(this).find('.col4').remove();
1111                    $(this).find('.col_last').html('<span class="mem_del_button">Удалить<span>');
1112                    if ($(this).attr('data-checked') == 0) {
1113                        $(this).remove();
1114                    }
1115                });
1116                parent.find('.meta_actionbar').html('<a href="#" id="meta_new_button" class="mem_add_button" data-meta-id="' + data.meta_id + '">Добавить&hellip;</a>');
1117                parent.detach().appendTo('#united__container');
1118                $('.meta--overlay-ok').remove();
1119            }, 2200);
1120        }, 'JSON');
1121    });
1122
1123    $('.united--member-row input[type="checkbox"]').live('change', function (e) {
1124        var parent = $(this).closest('.united--wrap-row');
1125        var row = $(this).closest('.united--member-row');
1126        var checked = [];
1127
1128        if ($(this).is(':checked')) {
1129            $(this).val(1);
1130            $(this).attr('checked', 'checked');
1131            row.attr('data-checked', 1);
1132        } else {
1133            $(this).val(0);
1134            $(this).removeAttr('checked');
1135            row.attr('data-checked', 0);
1136        }
1137    });
1138
1139    $('.meta_group-decline').live('click', function (e) {
1140        e.preventDefault();
1141        var parent = $(this).closest('.united--wrap-row');
1142        var meta_id = parent.attr('data-id');
1143
1144        Notify.confirm(
1145            'Вы действительно не хотите группировать данных участников?',
1146            function () {
1147                $.post('/admin/meta_decline', {
1148                    'meta_id' : meta_id,
1149                    'cid' : cid
1150                }, function (data) {
1151                    parent.fadeOut('fast');
1152                    parent.remove();
1153                }, 'JSON');
1154            }
1155        );
1156    });
1157
1158    $('.meta_end-ignore').live('click', function (e) {
1159        e.preventDefault();
1160        var parent = $(this).closest('.united--wrap-row');
1161        var uid = parent.attr('data-id');
1162        var cid = parent.attr('data-cid');
1163
1164        Notify.confirm(
1165            'Вы действительно хотите убрать данного участника из списка игнорируемых?',
1166            function () {
1167                $.post('/admin/meta_end_ignore', {
1168                    'uid' : uid,
1169                    'cid' : cid
1170                }, function (data) {
1171                    parent.fadeOut('fast');
1172                    parent.remove();
1173                }, 'JSON');
1174            }
1175        );
1176    });
1177
1178    $('.meta__more').live('click', function (e) {
1179        e.preventDefault();
1180        var $this = $(this);
1181
1182        loader.show();
1183        var content = $('<div>');
1184        var _class = $('#united__container').attr('data-type');
1185        content.load('/admin/unifying/' + _class + '/' + (Number(sugg_page)+1)
1186            + ' .united__container-suggestion', function ()
1187        {
1188            sugg_page = content.find('.united__container-suggestion').attr('data-page');
1189            content.find('.suggestion-note').remove();
1190
1191            $('.united__container-suggestion').append(content.find('.united__container-suggestion').html());
1192            content.remove;
1193            $this.remove();
1194            loader.hide();
1195        });
1196    });
1197
1198    $('.grants-useradd').live('click', function (e) {
1199        e.preventDefault();
1200        var usertype = $(this).attr('rel');
1201
1202        $('.greenblur, .admin_grants_add_pop').show();
1203        $('#grant_userid').val('');
1204        $('#grant_userid').focus();
1205        $('#admin_winners_search_results').hide();
1206        $('#admin_winners_search_results_fail').hide();
1207
1208        $('#grants_usertype').val(usertype);
1209    });
1210
1211    $('#admin_grants_memsearch').on('click', function (e) {
1212        e.preventDefault();
1213        userid = $('#grant_userid').val();
1214        usertype = $('#grants_usertype').val();
1215
1216
1217        $('#admin_winners_search_results').hide();
1218        $('#admin_winners_search_results_fail').hide();
1219
1220        $.post('/admin/grants_search',
1221            {
1222                'usertype' : usertype,
1223                'userid' : userid
1224            },
1225            function (data) {
1226                var usertype_text = '';
1227                if (data.error == 0) {
1228                    switch (usertype) {
1229                        case 'member':
1230                            usertype_text = 'следующий участник';
1231                            break;
1232                        case 'teacher':
1233                            usertype_text = 'следующий учитель';
1234                            break;
1235                        case 'coord':
1236                            usertype_text = 'следующий координатор';
1237                            break;
1238                        case 'inst':
1239                            usertype_text = 'следующее образовательное учреждение';
1240                            break;
1241                    }
1242                    $('#search_result_text').text(usertype_text);
1243                    $('#admin_grants_memid').html(data.name);
1244                    $('#admin_winners_search_results').show('fast');
1245                    $('#grantAddForm').attr('data-id', userid);
1246                    $('#grantAddForm').attr('data-type', usertype);
1247                } else {
1248                    switch (usertype) {
1249                        case 'member':
1250                            usertype_text = 'ни один участник';
1251                            break;
1252                        case 'teacher':
1253                            usertype_text = 'ни один учитель';
1254                            break;
1255                        case 'coord':
1256                            usertype_text = 'ни один координатор';
1257                            break;
1258                        case 'inst':
1259                            usertype_text = 'ни одно образовательное учреждение';
1260                            break;
1261                    }
1262                    $('#search_result_fail_text').text(usertype_text);
1263                    $('#admin_winners_search_results_fail').show('slow');
1264                }
1265            }, 'JSON');
1266    });
1267
1268    $('#grant_userid').keypress(function (e) {
1269        if (e.which == 13) {
1270            e.preventDefault();
1271            $('#admin_grants_memsearch').click();
1272            return false;
1273        }
1274    });
1275
1276    $('.admin_grants_del_link').live('click', function (e) {
1277        e.preventDefault();
1278        var parent = $(this).closest('.winners__item');
1279        var userid = parent.attr('data-id');
1280        var usertype = parent.attr('data-type');
1281        var year = parent.attr('data-year');
1282
1283        loader.show();
1284        $.post('/admin/grants_set_state',
1285            {
1286                'usertype' : usertype,
1287                'userid' : userid,
1288                'year' : year,
1289                'state' : 0
1290            },
1291            function (data) {
1292                if (data.error == 0) {
1293                    parent.remove();
1294                    loader.hide();
1295                }
1296            }, 'JSON');
1297    });
1298
1299    $('.admin_grants_add_link').live('click', function (e) {
1300        e.preventDefault();
1301        var parent = $(this).closest('#grantAddForm');
1302        var userid = parent.attr('data-id');
1303        var usertype = parent.attr('data-type');
1304        var year = parent.attr('data-year');
1305
1306        $('.greenblur, .admin_grants_add_pop').hide();
1307
1308        loader.show();
1309        $.post('/admin/grants_set_state',
1310            {
1311                'usertype' : usertype,
1312                'userid' : userid,
1313                'year' : year,
1314                'state' : 1
1315            },
1316            function (data) {
1317                var selector = '.grants_row[data-type=' + usertype + ']';
1318                $(selector).load('/admin/grants/' + year + ' ' + selector, function () {
1319                    loader.hide();
1320                });
1321            }, 'JSON');
1322    });
1323
1324    $('.pw_useradd').live('click', function (e) {
1325        e.preventDefault();
1326        var form = $('#pwinnerAddForm');
1327        var usertype = $(this).attr('rel');
1328        var period = $(this).closest('.period_container').attr('data-id');
1329
1330        $('.greenblur, .admin_grants_add_pop').show();
1331        $('#grant_userid').val('');
1332        $('#grant_userid').focus();
1333        $('#admin_winners_search_results').hide();
1334        $('#admin_winners_search_results_fail').hide();
1335
1336        $('#grants_usertype').val(usertype);
1337        $('#pwinners_period').val(period);
1338    });
1339
1340    $('.admin_pwinners_add_link').on('click', function (e) {
1341        e.preventDefault();
1342        var form = $('#pwinnerAddForm');
1343        var userid = $('#grant_userid').val();
1344        var usertype = $('#grants_usertype').val();
1345        var period = $('#pwinners_period').val();
1346        var year = form.attr('data-year');
1347
1348        $('.greenblur, .admin_grants_add_pop').hide();
1349
1350        var selector = '.' + usertype + '_c[data-id=' + period + ']';
1351        $(selector).html('<img src="/images/tpl/wait4.gif"/>');
1352        $.post('/admin/pwinners_set',
1353            {
1354                'usertype' : usertype,
1355                'userid' : userid,
1356                'year' : year,
1357                'period' : period
1358            },
1359            function (data) {
1360                $(selector).load('/admin/pwinners/' + year + ' ' + selector);
1361            }, 'JSON');
1362    });
1363
1364    $('.del_mark').live('click', function () {
1365        var form = $('#pwinnerAddForm');
1366        var parent = $(this).closest('.pwinners__item');
1367        var usertype = parent.attr('data-type');
1368        var userid = parent.attr('data-id');
1369        var year = form.attr('data-year');
1370        var period = parent.closest('.period_container').attr('data-id');
1371        var selector = '.' + usertype + '_c[data-id=' + period + ']';
1372
1373        $.post('/admin/pwinners_set',
1374            {
1375                'usertype' : usertype,
1376                'userid' : userid,
1377                'year' : year,
1378                'period' : period,
1379                'remove' : true
1380            },
1381            function (data) {
1382                $(selector).load('/admin/pwinners/' + year + ' ' + selector);
1383            }, 'JSON');
1384    });
1385
1386    $('#balance-manager_email-check').on('click', function (e) {
1387        e.preventDefault();
1388        $('#wsk_message').html('');
1389        userEmail = $('#wsk_bm_email').val();
1390
1391        $.post('/admin/balance_check_user',
1392            {
1393                'useremail' : userEmail
1394            },
1395            function (data) {
1396                if (data.result == "error") {
1397                    $('#wsk_message').html(data.message);
1398                }
1399                if (data.result == "success") {
1400                    $('#balance-manager_values').show();
1401                    $('#balance-user-id').val(data.user_id);
1402                    $('#balance-user-bonus').val(data.bonus);
1403                    $('#balance-user-new-bonus').val(data.bonus);
1404                    $('#balance-user-amount').val(data.cash);
1405                    $('#balance-user-new-amount').val(data.cash);
1406                    $('#checkTheUser').attr('href', `/mpanel/users/user_ent/${data.user_id}`);
1407                }
1408            }, 'JSON');
1409    });
1410
1411    $('#balance-manager_values').on('submit', function (e) {
1412        e.preventDefault();
1413        $('#wsk_message').html('');
1414        userid = $('#balance-user-id').val();
1415        b_amount_current = $('#balance-user-bonus').val();
1416        b_amount_new = $('#balance-user-new-bonus').val();
1417        c_amount_current = $('#balance-user-amount').val();
1418        c_amount_new = $('#balance-user-new-amount').val();
1419
1420        data = {'userid' : userid};
1421        if (b_amount_current !== b_amount_new) {
1422            data.b_amount = b_amount_new;
1423            data.type = 1;
1424        }
1425        if (c_amount_current !== c_amount_new) {
1426            data.c_amount = c_amount_new;
1427            data.type = 2;
1428        }
1429        if ((b_amount_current !== b_amount_new) && (c_amount_current !== c_amount_new)) data.type = 3;
1430        $.post('/admin/balance_set_balance',
1431            data,
1432            function (json) {
1433                if (json.result == "error") {
1434                    $('#wsk_message').html(data.message);
1435                }
1436                if (json.result == "success") {
1437                    $('#balance-manager_values').show();
1438                    $('#balance-user-id').val(json.user_id);
1439                    $('#balance-user-bonus').val(json.bonus);
1440                    $('#balance-user-new-bonus').val(json.bonus);
1441                    $('#balance-user-amount').val(json.cash);
1442                    $('#balance-user-new-amount').val(json.cash);
1443                    $('#checkTheUser').attr('href', `/mpanel/users/user_ent/${json.user_id}`);
1444                }
1445            }, 'JSON');
1446    });
1447});

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.