1var socket = null; 2var my_name = null; 3var my_avatar = null; 4var is_writing = false; 5var misc = null; 6var id_ccm = null; 7var socketOpt = { 8 error: function(){ 9 write_page_contact(); 10 } 11}; 12 13var Chat = { 14 15 toggleWindow : function(bool){ 16 var elChat = $('#chat-window'); 17 var elChatButton = $('button.chat_btn'); 18 $('#my_message').val(''); 19 20 if (bool === true) 21 { 22 elChatButton.addClass('opened'); 23 elChat.toggle(true); 24 $('body').addClass('noscroll'); 25 } 26 else if (bool === false) 27 { 28 elChatButton.removeClass('opened'); 29 elChat.toggle(false); 30 $('body').removeClass('noscroll'); 31 } 32 else 33 { 34 elChatButton.toggleClass('opened'); 35 elChat.toggle(); 36 // if (!socket || socket.readyState == socket.CLOSED) 37 clear_conversation(); 38 elChatButton.blur(); 39 if (!$('body').hasClass('webp')) 40 $('body').toggleClass('noscroll'); 41 } 42 }, 43 44 toggleVue: function (vue, id_ccm, id_msg_sujet, misc) 45 { 46 $('#chat-window [class^="tab_"]').hide(); 47 clear_conversation(); 48 check_message_non_lu(); 49 // if (vue != 'tchat') 50 // close_websocket(); 51 52 if (vue == 'tchat') 53 { 54 create_websocket(); 55 } 56 else if (vue == 'bot') 57 { 58 $('.tab_tchat').show(); 59 $('.footer_content').hide(); 60 } 61 else if (vue == 'error') 62 { 63 if (!$('#chat-window [class^="tab_"]:visible').length) 64 $('.tab_error').show(); 65 } 66 else if (vue == 'whatsapp') 67 { 68 $('#modal-desc-mobile').removeClass('d-none'); 69 $('#modal-desc-desktop').addClass('d-none'); 70 $('#whatsapp-qr').remove(); 71 $('.faq_body').html($('.modal-whatsapp').html()); 72 $('.faq_body').addClass('modal-whatsapp'); 73 $('.tab_faq').show(); 74 75 Chat.toggleWindow(true); 76 } 77 else if (vue == 'faq') 78 { 79 if (!$('.chat_btn').hasClass('tchat-faq')) 80 { 81 create_websocket(); 82 return; 83 } 84 85 if (socket && socket.readyState != socket.CLOSED) 86 $('.tab_tchat').show(); 87 else 88 { 89 90 var url = '/elearning/messagerie/on-room' 91 $.pjson( 92 url, 93 {} 94 ) 95 .done(function(data) { 96 if (data.statut == 'KO') 97 { 98 get_faq(id_ccm); 99 } 100 else 101 { 102 create_websocket(); 103 } 104 }) 105 .fail(function() { 106 $('.tab_faq').show(); 107 get_faq(id_ccm); 108 }); 109 } 110 } 111 else if (vue == 'page_white') 112 { 113 $('.tab_page_white').show(); 114 Chat.toggleWindow(true); 115 } 116 else if (vue == 'messagerie') 117 { 118 if (id_msg_sujet) 119 pjson = get_messagerie_info(id_msg_sujet); 120 else 121 pjson = get_messagerie_list(); 122 123 if (pjson) 124 pjson.then(function(){ 125 $('.tab_page_white').show(); 126 }); 127 } 128 else if (vue == 'page_blue') 129 { 130 $('.tab_page_blue').show(); 131 Chat.toggleWindow(true); 132 } 133 else if (vue == 'contact_rappel') 134 { 135 $('.tab_page_blue').show(); 136 Chat.toggleWindow(true); 137 return get_contact_rappel(misc, id_ccm); 138 } 139 else if (vue == 'contact_messagerie') 140 { 141 $('.tab_page_blue').show(); 142 Chat.toggleWindow(true); 143 get_contact_messagerie(id_ccm); 144 } 145 else 146 { 147 create_websocket(); 148 } 149 } 150}; 151 152 153$(document).ready(function() { 154 create_button_chat(); 155 create_window_chat(); 156 get_message_non_lu(); 157 158 $('.chat_btn, .tchat-faq, .tchat-rappel').on('click', function() { 159 var vue = 'tchat'; 160 if ($(this).hasClass('tchat-faq')) 161 vue = 'faq'; 162 if ($(this).hasClass('tchat-rappel-whatsapp')) 163 return write_page_contact() 164 if ($(this).hasClass('tchat-rappel')) 165 vue = 'contact_rappel'; 166 167 if ($('#chat-window').is(':not(:visible)')) 168 Chat.toggleVue(vue); 169 else if(!close_websocket()) 170 return false; 171 172 if (!$(this).hasClass('tchat-rappel')) 173 Chat.toggleWindow(); 174 }); 175 176 $(document).on('click', '.window_close', function() { 177 if (!close_websocket()) 178 return false; 179 if ($('#chat-window').is(':visible')) 180 Chat.toggleWindow(); 181 if ($(this).attr('data-reload-url')) { 182 document.location.href = $(this).attr('data-reload-url'); 183 } 184 $('body').removeClass('noscroll'); 185 }); 186 187 $(document).on('click', '.switch-tchat-faq', function() { 188 if (isOnPlateforme()) 189 Chat.toggleVue('faq'); 190 else 191 window.location.href = '/messagerie'; 192 }); 193 194 $(document).on('click', '.btn-info_ccm_more', function() { 195 $('.info_ccm').addClass('opened-full'); 196 scrollBottom(); 197 }); 198 199 $(document).on('click', '.restart_faq', function() { 200 if ($('.restart_faq[data-target]').length <= 1) 201 { 202 clear_conversation(); 203 if ($('.chat_btn').hasClass('tchat-faq')) 204 Chat.toggleVue('faq'); 205 else 206 Chat.toggleWindow(false); 207 } 208 else 209 { 210 var target = $(this).data('target'); 211 $('.'+target).remove(); 212 $(this).parent().remove(); 213 } 214 }); 215 216 $('.faq_body').on('click', '.messages', function(e){
217 if ($(e.target).hasClass('messages')) 218 $(this).find('p.link_faq')[0].click(); 219 }); 220 221 $(document).on('click', '.link_faq', function() { 222 var curBtn = $(this); 223 var is_retour = $(this).hasClass('retour'); 224 var id_ccm = $(this).data('id_ccm'); 225 var no_intro = false; 226 227 if (is_retour) 228 { 229 var index = $(this).index('.retour')-1; 230 id_ccm = (index < 0) ? null : $($('.retour').get(index)).data('id_ccm'); 231 no_intro = true; 232 } 233 234 curBtn.button('loading'); 235 236 $(this).closest('.base_sent').prev().nextAll().remove(); 237 get_faq(id_ccm, is_retour, no_intro); 238 }); 239 240 $(document).on('click', '.link_page_contact', function() { 241 write_page_contact(); 242 }); 243 244 $(document).on('click', '.contact_m', function() { 245 var curBtn = $(this); 246 curBtn.button('loading'); 247 get_contact_messagerie().done(function(){ 248 curBtn.button('reset'); 249 }).fail(function(){ 250 curBtn.button('reset'); 251 }); 252 }); 253 254 $(document).on('click', '.contact_r', function() { 255 var curBtn = $(this); 256 curBtn.button('loading'); 257 Chat.toggleVue('page_blue'); 258 get_contact_rappel(misc, id_ccm).done(function(){ 259 curBtn.button('loading'); 260 }).fail(function(){ 261 curBtn.button('loading'); 262 }); 263 }); 264 265 $('button.btn-chat-send').on('click', function() { 266 send_message(); 267 stop_writing(); 268 }); 269 270 $(document).on('click', '.btn_messagerie', function() { 271 Chat.toggleVue('messagerie'); 272 }); 273 274 $(document).on('click', '.btn_faq', function() { 275 clear_conversation(); 276 Chat.toggleVue('faq'); 277 }); 278 279 $(document).on('click', '.link_info_message', function() { 280 var id_msg_sujet = $(this).data('id_msg_sujet'); 281 var id_tchat = $(this).data('id_tchat'); 282 var curBtn = $(this); 283 284 curBtn.button('loading'); 285 286 if (id_msg_sujet) 287 pjson = get_messagerie_info(id_msg_sujet); 288 if (id_tchat) 289 pjson = get_tchat_info(id_tchat); 290 291 if (pjson) 292 pjson.then(function () { 293 curBtn.button('reset'); 294 Chat.toggleVue('page_white'); 295 }); 296 }); 297 298 $('#my_message').on('keypress', function(e) { 299 if (e.which == 13 && !e.shiftKey) 300 { 301 e.preventDefault(); 302 send_message(); 303 stop_writing(); 304 } 305 }); 306 307 $('#my_message').on('input', function(e) { 308 var text = $(this).val(); 309 310 if ((typeof socket === 'undefined' || socket.readyState === WebSocket.CLOSED)) 311 return false; 312 313 if (text.length > 0 && !is_writing) 314 start_writing(); 315 316 if (text.length == 0 && is_writing) 317 stop_writing(); 318 }); 319}); 320 321function param(name) { 322 return (location.search.split(name + '=')[1] || '').split('&')[0]; 323} 324 325 326 327function send_message() 328{ 329 var message = $('#my_message').val(); 330 331 if (message.length) 332 { 333 var obj = {message: message, action: 'send_message'}; 334 socket.send(JSON.stringify(obj)); 335 write_message_sent(obj); 336 } 337 $('#my_message').val(''); 338 $('#my_message').focus(); 339} 340 341function start_writing() 342{ 343 var obj = {action: 'start_writing'}; 344 socket.send(JSON.stringify(obj)); 345 is_writing = true; 346} 347 348function stop_writing() 349{ 350 var obj = {action: 'stop_writing'}; 351 socket.send(JSON.stringify(obj)); 352 is_writing = false; 353} 354 355function close_websocket() 356{ 357 358 if (socket !== null && socket.readyState === WebSocket.OPEN) 359 { 360 if (confirm('Ãtes-vous sûre de vouloir quitter cette conversation ?') === false) 361 return false; 362 363 var url = '/elearning/messagerie/on-room'; 364 $.pjson( 365 url, 366 {toClose:1} 367 ) 368 .done(function(data) { 369 }) 370 .fail(function() { 371 }); 372 373 stop_writing(); 374 socket.close(); 375 } 376 377 return true; 378} 379 380function create_websocket(objSocket) 381{ 382 if (!objSocket) 383 objSocket = socketOpt; 384 385 $('.footer_content').show(); 386 var guid = getCookie('chat_guid'); 387 if (socket && socket.readyState != socket.CLOSED) 388 return false; 389 390 socket = new WebSocket(window.websocket_server_uri+'index.php?user_hashed='+window.user_hashed+'&guid='+guid); 391 392 socket.onopen = function(e) { 393 var obj = {action: 'connect', id_ccm: id_ccm}; 394 this.send(JSON.stringify(obj)); 395 Chat.toggleWindow(true); 396 }; 397 398 socket.onmessage = function(e) { 399 var obj = JSON.parse(e.data); 400 401 if (obj.action == 'no_one') 402 { 403 objSocket.error(); 404 405 // Tracker Chat conseillers indispo 406 tracker_chat(guid, 'no_one'); 407 return; 408 } 409 else 410 { 411 $('.tab_tchat').show(); 412 } 413 414 if (obj.action == 'send_guid') 415 { 416 document.cookie = "chat_guid="+obj.message; 417 418 // Tracker Chat 'Dans une room' 419 tracker_chat(obj.message, 'in_room'); 420 } 421 else if (obj.action == 'disconnect') 422 { 423 $('.footer_content').hide(); 424 $('#chat-window div.writing').hide(); 425 write_message_received(obj); 426 } 427 else if (obj.action == 'send_conversation') 428 { 429 write_conversation(obj); 430 mark_conversation_as_read(); 431 } 432 else if (obj.action == 'start_writing') 433 { 434 $('#chat-window div.writing').show(); 435 } 436 else if (obj.action == 'stop_writing') 437 { 438 $('#chat-window div.writing').hide(); 439 } 440 else 441 write_message_received(obj); 442 443 }; 444 445 socket.onerror = function(e) { 446 tracker_chat(guid, 'error'); // Tracker Chat 'Système indispo' 447 448 if (socket.readyState === WebSocket.CLOSED) 449 return; 450 451 objSocket.error(); 452 }; 453 454 socket.onclose = function(e) { 455 }; 456 457 return socket; 458} 459 460function isOnPlateforme() 461{ 462 if (window.location.pathname.indexOf('elearning') !== -1 || window.location.pathname.indexOf('messagerie') !== -1) 463 return true; 464 return false; 465} 466 467function get_message_indispo() 468{ 469 return "Il n'y a actuellement aucun conseiller de disponible<br/>\ 470 <div class='align-center'>\ 471 <a href='/inscription-rappel' class='white btn-cta'>Demander à être rappelé</a>\ 472 <a href='/inscription-chat' class='white btn-cta'> Envoyer un message</a>\ 473 </div>"; 474} 475 476function getCookie(name) 477{ 478 match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)')); 479 if (match) 480 return match[2]; 481} 482 483function tracker_chat(guid, action) 484{ 485 var url = "/elearning/messagerie/tracker-chat"; 486 var data = {guid:guid, action:action}; 487 488 $.pjson( 489 url, 490 data 491 ) 492 .done(function(data) { 493 }) 494 .fail(function() { 495 Chat.toggleVue('error'); 496 }); 497} 498 499function get_message_non_lu() 500{ 501 var guid = getCookie('chat_guid'); 502 var url = "/elearning/messagerie/get-message-chat-non-lu"; 503 504 $.pjson( 505 url, 506 {guid:guid} 507 ) 508 .done(function(data) { 509 if (data.alert) 510 alert(data.alert); 511 else if(data.nb_message) 512 $('button.chat_btn').append("<span class='chat_badge badge alert'>"+data.nb_message+"</span>"); 513 }) 514 .fail(function() { 515 Chat.toggleVue('error'); 516 }); 517} 518 519function get_contact_rappel(misc, id_ccm_forced = 0) 520{ 521 id_ccm = id_ccm_forced; 522 if (misc === undefined) 523 misc = ""; 524 525 var url = "/elearning/messagerie/get-tchatbot-vue/contact-rappel"; 526 return $.pjson( 527 url, 528 {id_ccm: id_ccm, 529 misc: misc} 530 ) 531 .done(function(data) { 532 if (data.alert) 533 alert(data.alert); 534 else 535 { 536 $('.tab_page_blue').html(data.content); 537 } 538 }) 539 .fail(function() { 540 Chat.toggleVue('error'); 541 }); 542} 543 544function get_messagerie_list() 545{ 546 var url = "/elearning/messagerie/list-message"; 547 548 return $.pjson( 549 url, 550 {} 551 ) 552 .done(function(data) { 553 if (data.alert) 554 alert(data.alert); 555 else 556 { 557 if (data.nbNotifReaded) 558 { 559 var currentUnread = $('.notif .badge').text(); 560 currentUnread = currentUnread - data.nbNotifReaded; 561 if (currentUnread <= 0) 562 $('.notif .badge, .profile-dropdown.badge').remove(); 563 else 564 $('.notif .badge, .profile-dropdown.badge').html(currentUnread); 565 } 566 $('.tab_page_white').html(data.content); 567 Chat.toggleWindow(true); 568 } 569 }) 570 .fail(function() { 571 Chat.toggleVue('error'); 572 }); 573} 574 575function get_messagerie_info(id_msg_sujet) 576{ 577 var url = "/elearning/messagerie/info-message/"+id_msg_sujet; 578 579 return $.pjson( 580 url, 581 {} 582 ) 583 .done(function(data) { 584 if (data.alert) 585 alert(data.alert); 586 else 587 { 588 $('.tab_page_white').html(data.content); 589 var scrollX = $('.date_messagerie').eq(-2).offset().top - $('.page_white_body').offset().top ; 590 $('.page_white_body').scrollTop(scrollX); 591 Chat.toggleWindow(true); 592 } 593 }) 594 .fail(function() { 595 Chat.toggleVue('error'); 596 }); 597} 598 599function get_tchat_info(id_tchat) 600{ 601 var url = "/elearning/messagerie/info-tchat/"+id_tchat; 602 603 $.pjson( 604 url, 605 {} 606 ) 607 .done(function(data) { 608 if (data.alert) 609 alert(data.alert); 610 else 611 { 612 $('.tab_page_white').html(data.content); 613 } 614 }) 615 .fail(function() { 616 Chat.toggleVue('error'); 617 }); 618} 619 620function get_faq(id_ccm, is_retour, no_intro) 621{ 622 var url = "/elearning/messagerie/ccm-search"; 623 624 $.pjson( 625 url, 626 {id_ccm:id_ccm} 627 ) 628 .done(function(data) { 629 if (data.alert) 630 alert(data.alert); 631 else 632 { 633 if (id_ccm == null) 634 clear_conversation(); 635 $('.tab_faq').show(); 636 clear_other_messages();
637 if (!is_retour) 638 write_ccm_retour(data.ccm_retour); 639 if (!no_intro || id_ccm == null) 640 write_intro_ccm(data.intro); 641 Chat.toggleWindow(true); 642 write_rows_ccm(data.rows_ccm); 643 write_info_ccm(data.info_ccm); 644 } 645 }) 646 .fail(function() { 647 Chat.toggleVue('error'); 648 }); 649} 650 651function get_contact_messagerie(id_ccm_forced = 0) 652{ 653 id_ccm = id_ccm_forced 654 var url = "/elearning/messagerie/get-tchatbot-vue/contact-messagerie"; 655 return $.pjson( 656 url, 657 {} 658 ) 659 .done(function(data) { 660 if (data.alert) 661 alert(data.alert); 662 else 663 { 664 Chat.toggleVue('page_blue'); 665 $('.tab_page_blue').html(data.content); 666 } 667 }) 668 .fail(function() { 669 Chat.toggleVue('error'); 670 }); 671} 672 673function write_page_contact() 674{ 675 var url = "/elearning/messagerie/get-tchatbot-vue/contact"; 676 677 return $.pjson(url,{}) 678 .done(function(data) { 679 if (data.alert) 680 alert(data.alert); 681 else if (data.visiteur) 682 write_message_indispo(); 683 else 684 { 685 Chat.toggleVue('page_blue'); 686 $('.tab_page_blue').html(data.content); 687 } 688 }) 689 .fail(function() { 690 Chat.toggleVue('error'); 691 }); 692} 693 694function check_message_non_lu() 695{ 696 setTimeout(function(){ 697 var url = "/elearning/messagerie/check-message-non-lu"; 698 $.post(url, {}, function(data) { 699 if (data.nb_message_non_lu > 0) 700 $('.window_header > .btn_messagerie').find('i.fa-envelope').addClass('fabadge'); 701 else 702 $('.window_header > .btn_messagerie').find('i.fa-envelope').removeClass('fabadge'); 703 }, 'JSON'); 704 }, 500); 705} 706 707// ==================== MESSENGER ==================== // 708function mark_conversation_as_read() 709{ 710 $('button.chat_btn span.chat_badge').remove(); 711 var obj = {action: 'mark_as_read'}; 712 socket.send(JSON.stringify(obj)); 713} 714 715function write_conversation(data) 716{ 717 my_name = data.client_name; 718 my_avatar = data.client_avatar; 719 720 for (var i = 0; i < data.message.length; i++) 721 { 722 var is_conseille = parseInt(data.message[i]['is_conseille']); 723 var avatar = data.message[i]['avatar']; 724 var name = data.message[i]['name']; 725 var message = data.message[i]['message']; 726 727 $('.tchat_title').html('<span class="img-wrapper"><img class="img-responsive" src="'+avatar+'" style="max-height:100%;"></span><b>'+name+'</b>'); 728 729 if (is_conseille) 730 { 731 var content = '<div class="msg_container base_receive">\ 732 <div class="messages msg_receive">\ 733 <p>'+message+'</p>\ 734 </div>\ 735 </div>'; 736 } 737 else 738 { 739 var content = '<div class="msg_container base_sent">\ 740 <div class="messages msg_sent">\ 741 <p>'+message+'</p>\ 742 </div>\ 743 </div>'; 744 } 745 $('.tchat_body').append(content); 746 scrollBottom(); 747 } 748} 749 750function write_message_received(data, isNb2bBr=true) 751{ 752 var avatar = data.avatar; 753 if (!isNb2bBr) 754 var msg = data.message 755 else 756 var msg = data.message.replace(/\n/g, "<br />"); 757 var name = data.name; 758 759 my_name = data.client_name; 760 my_avatar = data.client_avatar; 761 $('.tchat_title').html('<span class="img-wrapper"><img class="img-responsive" src="'+avatar+'" style="max-height:100%;"></span><b>'+name+'</b>'); 762 763 var content = '<div class="msg_container base_receive">\ 764 <div class="messages msg_receive">\ 765 <p>'+msg+'</p>\ 766 </div>\ 767 </div>'; 768 $('.tchat_body').append(content); 769 scrollBottom(); 770} 771 772function write_message_sent(data) 773{ 774 var msg = data.message.replace(/\n/g, "<br />"); 775 var content = '<div class="msg_container base_sent">\ 776 <div class="messages msg_sent">\ 777 <p>'+msg+'</p>\ 778 </div>\ 779 </div>'; 780 $('.tchat_body').append(content); 781 scrollBottom(); 782} 783 784function write_message_indispo() 785{ 786 $('.tab_tchat').show(); 787 var message_indispo = get_message_indispo(); 788 var obj = { 789 'avatar': '/img/stych_assistant.png', 790 'message': message_indispo, 791 'name': 'Stych.fr' 792 }; 793 794 write_message_received(obj); 795 $('.footer_content').hide(); 796 $('#chat-window div.writing').hide(); 797} 798// ==================== ========= ==================== // 799 800// ==================== F.A.Q ==================== // 801function write_intro_ccm(intro) 802{ 803 if (typeof intro === "undefined") 804 return false; 805 806 var content = '<div class="msg_container base_receive">\ 807 <div class="messages msg_receive">\ 808 <p>'+intro+'</p>\ 809 </div>\ 810 </div>'; 811 $('.faq_body').append(content); 812 $('.zone_intro').closest('.msg_receive').removeClass('msg_receive messages'); 813} 814 815function write_rows_ccm(rows_ccm) 816{ 817 if (typeof rows_ccm === "undefined") 818 return false; 819 820 $.each(rows_ccm, function(index, el) { 821 var content = '<div class="msg_container base_receive">\ 822 <div class="messages msg_receive">\ 823 <p data-id_ccm_parent="'+el.id_ccm_parent+'" data-id_ccm="'+el.id_ccm+'"
823class="link_faq">'+el.intitule+'</p>\ 824 </div>\ 825 </div>'; 826 $('.faq_body').append(content); 827 }); 828} 829 830function write_info_ccm(info_ccm) 831{ 832 if (typeof info_ccm === "undefined" || info_ccm.length == 0) 833 return false; 834 835 id_ccm = info_ccm.id_ccm; 836 var satisfaction = '<hr style="width:100%">\ 837 <div class="zone_satisfaction">\ 838 <b>Avons-nous répondu à ta question ?</b>\ 839 <div class="msg_container base_receive">\ 840 <span onclick="recordSatisfaitAnswer(this)" data-id_ccm="'+info_ccm.id_ccm+'" data-value="1"\ 841 class="btn btn_tchat_choice"><i class="fa fa-thumbs-up"></i> Oui</span>\ 842 <span onclick="recordSatisfaitAnswer(this)" data-id_ccm="'+info_ccm.id_ccm+'" data-value="0"\ 843 class="btn btn_tchat_choice"><i class="fa fa-thumbs-down"></i> Non</span>\ 844 </div>\ 845 </div>\ 846 <div class="zone_restart_faq" style="display:none;">\ 847 <b>Merci de ta réponse.</b><br>\ 848 <i><a href="javascript:void(0)" class="restart_faq">Poser une autre question</a></i>\ 849 </div>'; 850 851 var content = '<div class="msg_container base_receive">\ 852 <div class="info_ccm">\ 853 <p>'+info_ccm.contenu+'</p>\ 854 '+satisfaction+'\ 855 </div>\ 856 <a class="btn btn_tchat_choice btn-info_ccm_more d-none" href="javascript:void(0);">\ 857 <i class="fas fa-long-arrow-alt-down"></i> Continuer <i class="fas fa-long-arrow-alt-down"></i>\ 858 </a>\ 859 </div>'; 860 $('.faq_body').append(content); 861 var elCcm = $(".info_ccm"); 862 if (elCcm.prop('scrollHeight') > elCcm.height() ) { 863 $('.btn-info_ccm_more').removeClass('d-none'); 864 } 865} 866 867function write_ccm_retour(ccm_retour) 868{ 869 if (typeof ccm_retour === "undefined" || ccm_retour.length == 0) 870 return false; 871 872 var content = '<div class="msg_container base_sent">\ 873 <div class="messages msg_sent">\ 874 <div class="rounded-icon x40 bg-dark-primary">\ 875 <i class="icon-arrow-back"></i>\ 876 </div>\ 877 <p data-id_ccm="'+ccm_retour.id_ccm+'" class="link_faq retour">'+ccm_retour.intitule+'</p>\ 878 </div>\ 879 </div>'; 880 $('.faq_body').append(content); 881 882 $('.faq_body').animate({ 883 scrollTop: $('.faq_body').scrollTop() + $('.link_faq').last().parent().parent().position().top - $('.faq_body').position().top 884 }, 'slow'); 885} 886 887function clear_other_messages() 888{ 889 $('#chat-window .msg_receive').each(function (index, el) { 890 $(el).parent().remove(); 891 }); 892} 893// ==================== ===== ==================== // 894 895// ==================== MESSAGERIE ==================== // 896// ==================== ========== ==================== // 897 898function scrollBottom() { 899 if ($('.tchat_body').is(':visible')) 900 div = $('.tchat_body'); 901 else if ($('.faq_body').is(':visible')) 902 div = $('.faq_body'); 903 else if ($('.page_blue_body').is(':visible')) 904 div = $('.page_blue_body'); 905 else if ($('.page_white_body').is(':visible')) 906 div = $('.page_white_body'); 907 else 908 div = $('.tchat_body'); 909 910 div.scrollTop(div.get(0).scrollHeight); 911} 912 913function scrollTopChat() { 914 if ($('.tchat_body').is(':visible')) 915 div = $('.tchat_body'); 916 else if ($('.faq_body').is(':visible')) 917 div = $('.faq_body'); 918 else if ($('.page_blue_body').is(':visible')) 919 div = $('.page_blue_body'); 920 else if ($('.page_white_body').is(':visible')) 921 div = $('.page_white_body'); 922 923 div.scrollTop(0); 924} 925 926 927function create_button_chat() { 928 var ua = window.navigator.userAgent; 929 var msie = ua.indexOf("MSIE "); 930 var edge = ua.indexOf("Edge"); 931 932 if (msie > 0 || edge > 0) 933 return false; 934 935 if (!window.tplChatButton) 936 window.tplChatButton = '<button class="chat_btn tchat-faq"><i class="icon-close"></i><i class="icon-messagerie"></i></button>'; 937 $('body').append(window.tplChatButton); 938} 939 940 941function create_window_chat() { 942 var chat = "<div id='chat-window' class='stych panel panel-default' style='display:none;'>\ 943 <div class='tab_tchat' style='height:100%;'>\ 944 <div class='panel-heading window_header'>\ 945 <p class='h3 panel-title tchat_title'></p>\ 946 <span class='window_close'><i class='icon-close'></i></span>\ 947 </div>\ 948 <div class='panel-body tchat_body'>\ 949 </div>\ 950 <div class='writing ml-4' style='display:none; position:absolute; bottom:10%;'><i>
950Le conseiller est en train d'écrire <span>.</span><span>.</span><span>.</span></i></div>\ 951 <div class='panel-footer tchat_footer'>\ 952 <div class='footer_content'>\ 953 <div class='row tchat_composer'>\ 954 <textarea class='column' id='my_message' placeholder='Ecris ton message ici ...'></textarea>\ 955 <button class='button btn_send btn-chat-send'><i></i></button>\ 956 </div>\ 957 </div>\ 958 </div>\ 959 </div>\ 960 \ 961 <div class='tab_faq' style='height:100%;display:none;'>\ 962 <div class='panel-heading window_header'>\ 963 <a class='btn_messagerie' href='javascript:void(0);'>\ 964 <i class='fa fa-envelope fabadge'></i>\ 965 </a>\ 966 <p class='h3 panel-title'>Aide & Assistance</p>\ 967 <span class='window_close'><i class='icon-close'></i></span>\ 968 </div>\ 969 <div class='panel-body faq_body'>\ 970 </div>\ 971 </div>\ 972 \ 973 <div class='tab_page_blue' style='height:100%;display:none;'>\ 974 </div>\ 975 \ 976 <div class='tab_page_white' style='height:100%;display:none;'>\ 977 </div>\ \ 978 <div class='tab_error' style='height:100%;display:none;'>\ 979 <div class='panel-heading window_header'>\ 980 <p class='h3 panel-title'>Une erreur est survenue !!!</p>\ 981 <span class='window_close'><i class='icon-close'></i></span>\ 982 </div>\ 983 <div class='panel-body' style='height: calc(100% - 100px); text-align: center;'>\ 984 <br>\ 985 <a href='javascript:void(0);' class='window_close'><img src='/img/error.svg' alt='' width='50px'></a>\ 986 <br>\ 987 <br>\ 988 Veuillez vérifier votre connexion à internet\ 989 <br>\ 990 <a href='javascript:void(0);' class='window_close'>Fermer.</a>\ 991 </div>\ 992 </div>\ 993 </div>"; 994 $('body').append(chat); 995} 996 997function recordSatisfaitAnswer(obj) 998{ 999 var curBtn = $(obj); 1000 id_ccm = curBtn.data('id_ccm'); 1001 var datas = {'id_ccm' : curBtn.data('id_ccm'), 1002 'statut' : curBtn.data('value')}; 1003 var url = '/elearning/messagerie/nouveau-message/recordAnswerFound'; 1004 1005 curBtn.button('loading'); 1006 // console.log($(obj).parents('.panel-body')); 1007 // var elMsg = show_waiting($(obj).parents('.panel-body')); 1008 1009 $.pjson( 1010 url, 1011 datas 1012 ) 1013 .done(function(data) { 1014 curBtn.button('reset'); 1015 if (data.alert) 1016 alert(data.alert); 1017 1018 if (data.statut == 'OK') 1019 { 1020 if (datas.statut == 1) 1021 { 1022 $('.zone_satisfaction').hide(); 1023 $('.zone_restart_faq').show(); 1024 } 1025 else 1026 { 1027 Chat.toggleVue('tchat'); 1028 } 1029 } 1030 }) 1031 .fail(function() { 1032 curBtn.button('reset'); 1033 }); 1034} 1035 1036function clear_conversation() 1037{ 1038 $('.tchat_body').html(''); 1039 $('.faq_body').html(''); 1040 $('.page_blue_body').html(''); 1041} 1042 1043function updateCCMContacter(obj) 1044{ 1045 if ($(obj).closest('#chat-window').length) 1046 { 1047 Chat.toggleVue('page_blue'); 1048 get_contact_messagerie() 1049 } 1050 else 1051 { 1052 if ($(obj).hasClass('selected')) 1053 return; 1054 1055 $('.btn-ccm-contacter').removeClass('selected'); 1056 $(obj).addClass('selected'); 1057 1058 if ($(obj).data('value') == '1') 1059 { 1060 $('#zone-ask-continue').hide(); 1061 $('#zone-poser-question').show(); 1062 } 1063 else 1064 { 1065 $('#zone-ask-continue').hide('slow'); 1066 } 1067 } 1068} 1069 1070function show_msg(message) 1071{ 1072 var content = $('<div class="msg_container base_receive">\ 1073 <span class="zone_intro">'+message+'</span>\ 1074 </div>'); 1075 $('.page_blue_body').append(content); 1076 return content; 1077} 1078 1079function show_waiting(elCurrentPanelBody) 1080{ 1081 var content = '<div class="msg_container base_receive">\ 1082 <span class="loading"><i class="dot"></i><i class="dot"></i><i class="dot"></i></span>\ 1083 </div>'; 1084 elCurrentPanelBody.append(content); 1085 return content; 1086} 1087 1088
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.