PageSourceSearch

https://skazanie.info/static/js/story.js

js skazanie.info collected 2026-10-03 17:46:22 UTC 9,253 bytes, 252 lines download raw bytes

1let Story = {
2    one: '.box-story',
3    view: '.story-view',
4    p_level: '.story-p-level',
5    p_manage: '.story-p-manage',
6    edit_btn: '.story-edit',
7    cancel_form: '.story-cancel',
8    show_btn: '.story-show',
9    hide_btn: '.story-hide',
10    delete_btn: '.story-delete',
11    tag_select: '.story-tag-select',
12    create_form: '#create-story-form',
13    edit_form: '#edit-story-form',
14    story_begin: 'b',
15
16    init: function() {
17        let self = this;
18        self.bindEvents();
19    },
20    bindEvents: function() {
21        let self = this;
22        $(document)
23            .on('click', self.p_level, function() {
24                self.permissionChange($(this));
25            })
26            .on('submit', self.create_form, function(e) {
27                e.preventDefault();
28                self.store($(this));
29                return false;
30            })
31            .on('click', self.show_btn + ', ' + self.hide_btn, function() {
32                self.showhide($(this));
33            })
34            .on('click', self.edit_btn, function() {
35                self.showForm($(this));
36            })
37            .on('submit', self.edit_form, function(e) {
38                e.preventDefault();
39                self.update($(this));
40                return false;
41            })
42            .on('click', self.cancel_form, function(e) {
43                e.preventDefault();
44                let hash = '#' + self.story_begin + $(this).closest(self.one).data('id');
45                self.destroyForm();
46                Main.scrollHash(hash);
47                return false;
48            })
49            .on('click', self.delete_btn, function() {
50                if (confirm('Удалить?'))
51                    self.delete($(this));
52            });
53    },
54    showhide: function($elem) {
55        let self = this;
56        $.ajax({
57            url: $elem.data('url'),
58            type: 'post',
59            dataType: 'json',
60            beforeSend: function() {
61                Main.makeFog();
62            },
63            success: function (data) {
64                Main.clearFog();
65                if (typeof data.error !== 'undefined') {
66                    Main.message(data.error, 'error');
67                } else if (typeof data.message !== 'undefined') {
68                    let $papa = $elem.closest(self.one);
69                    $elem.css('display', 'none');
70                    $papa.find($elem.hasClass(self.show_btn.slice(1)) ? self.hide_btn : self.show_btn)
71                        .css('display', 'inline-block');
72                    $papa.find(self.p_manage + '>span').each(function(i, el) {
73                        if ($(el).closest(self.p_manage).data('permission') == 'p_show') {
74                            $(el).text(data.level);
75                        }
76                    });
77                    Main.message(data.message);
78                }
79            },
80            error: function(request) {
81                Main.clearFog();
82                Main.message(request.responseText, 'error');
83            }
84        });
85    },
86    permissionChange: function($elem) {
87        let self = this;
88        let $papa = $elem.closest(self.p_manage);
89        let permission = $papa.data('permission');
90        let level = $elem.data('value');
91        $.ajax({
92            url: $papa.data('url'),
93            type: 'post',
94            data: {
95                permission: permission,
96                level: level
97            },
98            dataType: 'json',
99            beforeSend: function() {
100                Main.makeFog();
101            },
102            success: function (data) {
103                Main.clearFog();
104                if (typeof data.error !== 'undefined') {
105                    Main.message(data.error, 'error');
106                } else if (typeof data.message !== 'undefined') {
107                    $papa.find(self.p_level).removeClass('active');
108                    $elem.addClass('active');
109                    $papa.find('.p-level-label').text(level);
110                    if (permission == 'p_show') {
111                        let $gpapa = $elem.closest(self.one);
112                        if (level > 0) {
113                            $gpapa.find(self.hide_btn).css('display', 'none');
114                            $gpapa.find(self.show_btn).css('display', 'inline-block');
115                        } else {
116                            $gpapa.find(self.hide_btn).css('display', 'inline-block');
117                            $gpapa.find(self.show_btn).css('display', 'none');
118                        }
119                    }
120                    Main.message(data.message);
121                }
122            },
123            error: function(request) {
124                Main.clearFog();
125                Main.message(request.responseText, 'error');
126            }
127        });
128    },
129    store: function($elem) {
130        let self = this;
131        $.ajax({
132            url: $elem.data('url'),
133            type: 'post',
134            data: $elem.serialize(),
135            dataType: 'json',
136            beforeSend: function() {
137                Main.makeFog();
138            },
139            success: function (data) {
140                Main.clearFog();
141                if (typeof data.error !== 'undefined') {
142                    Main.message(data.error, 'error');
143                } else if (typeof data.message !== 'undefined') {
144                    let $papa = $elem.closest(self.one);
145                    $papa.after(data.html);
146                    $elem.trigger('reset');
147                    Main.message(data.message);
148                    Main.scrollHash('#' + self.story_begin + data.id);
149                }
150            },
151            error: function(request) {
152                Main.clearFog();
153                Main.message(request.responseText, 'error');
154            }
155        });
156    },
157    showForm: function($elem) {
158        let self = this;
159        let $papa = $elem.closest(self.one);
160        $.ajax({
161            url: $elem.data('url'),
162            type: 'post',
163            dataType: 'json',
164            beforeSend: function() {
165                $(self.create_form).closest(self.one).css('display', 'none');
166                Main.makeFog();
167            },
168            success: function (data) {
169                Main.clearFog();
170                if (typeof data.error !== 'undefined') {
171                    Main.message(data.error, 'error');
172                } else if (typeof data.message !== 'undefined') {
173                    $(self.edit_btn).css('display', 'inline-block');
174                    $elem.css('display', 'none');
175                    $(self.edit_form).remove();
176                    $(self.view).css('display', 'block');
177                    $papa.find(self.view).css('display', 'none').after(data.html);
178                    Main.scrollHash('#' + self.story_begin + $papa.data('id'));
179                }
180            },
181            error: function(request) {
182                Main.clearFog();
183                Main.message(request.responseText, 'error');
184            }
185        });
186    },
187    destroyForm() {
188        let self = this;
189        $(self.edit_btn).css('display', 'inline-block');
190        $(self.edit_form).remove();
191        $(self.create_form).closest(self.one).css('display', 'block');
192        $(self.view).css('display', 'block');
193    },
194    update: function($elem) {
195        let self = this;
196        $.ajax({
197            url: $elem.data('url'),
198            type: 'post',
199            data: $elem.serialize(),
200            dataType: 'json',
201            beforeSend: function() {
202                Main.makeFog();
203            },
204            success: function (data) {
205                Main.clearFog();
206                if (typeof data.error !== 'undefined') {
207                    Main.message(data.error, 'error');
208                } else if (typeof data.message !== 'undefined') {
209                    $elem.closest(self.one).find(self.view).empty().append(data.html).css('display', 'block');
210                    self.destroyForm();
211                    Main.message(data.message);
212                    Main.scrollHash('#' + self.story_begin + data.id);
213                }
214            },
215            error: function(request) {
216                Main.clearFog();
217                Main.message(request.responseText, 'error');
218            }
219        });
220    },
221    delete: function($elem) {
222        let self = this;
223        $.ajax({
224            url: $elem.data('url'),
225            type: 'post',
226            dataType: 'json',
227            beforeSend: function() {
228                Main.makeFog();
229            },
230            success: function (data) {
231                Main.clearFog();
232                if (typeof data.error !== 'undefined') {
233                    Main.message(data.error, 'error');
234                } else if (typeof data.message !== 'undefined') {
235                    let $papa = $elem.closest(self.one);
236                    $papa.css('overflow', 'hidden').animate({height: 0}, 500);
237                    setTimeout(function(){$papa.remove();}, 500);
238                    Main.message(data.message);
239                }
240            },
241            error: function(request) {
242                Main.clearFog();
243                Main.message(request.responseText, 'error');
244            }
245        });
246    }
247};
248
249$(function () {
250    'use strict';
251    Story.init();
252});

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.