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.