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.