1 2 3if (typeof Object.create !== 'function') { 4 Object.create = function (obj) { 5 function F() { }; 6 F.prototype = obj; 7 return new F(); 8 }; 9} 10 11(function ($, window, document, undefined) { 12 13 14 var Comment = { 15 init_: function (options, elem) { 16 var self = this; 17 self.elem = elem; 18 self.$elem = $(elem); 19 20 self.options = $.extend({}, $.fn.comment.options, options); 21 22 var obj = JSON.parse(self.options.settings) 23 24 if (obj.SortOrder == 1) { 25 obj.SortOrder = 'desc' 26 } else if (obj.SortOrder == 2) { 27 obj.SortOrder = 'asc' 28 } 29 30 self.fetch_(obj.CommentCountVisibleInFirstLevel, obj.SortOrder, self.options.pageIndex); 31 32 }, 33 34 buildForm_: function (comment_id, parent_id) { 35 var self = this; 36 37 var form_box = $('<div />'); 38 form_box.addClass('form'); 39 40 var send_comment_txt = $('<p />'); 41 send_comment_txt.addClass('comment-text'); 42 send_comment_txt.text(DourtalCommentResource.form.SendForm); 43 44 var form_elem = $('<form></form>'); 45 form_elem.addClass('display-form'); 46 47 form_box.append(send_comment_txt); 48 form_box.append(form_elem); 49 50 var display_inputs = $('<div />'); 51 display_inputs.addClass('display-inputs'); 52 53 //var secure_code = $('<div />'); 54 //secure_code.addClass('secure-code'); 55 56 var wrap_submit_div = $('<div />'); 57 58 form_elem.append(display_inputs); 59 //form_elem.append(secure_code); 60 form_elem.append(wrap_submit_div); 61 62
63 //////// FORM BODY ///////// 64 65 var textarea_input = $('<div />'); 66 textarea_input.addClass('input-textarea'); 67 68 69 if (self.options.isAthenticated == false) { 70 var name_email_input = $('<div />'); 71 name_email_input.addClass('name-email'); 72 73 display_inputs.append(name_email_input); 74 75 var name_input = $('<div />'); 76 name_input.addClass('input-name'); 77 78 var email_input = $('<div />'); 79 email_input.addClass('input-email'); 80 81 name_email_input.append(name_input); 82 name_email_input.append(email_input); 83 84 var user_icon = $('<i />'); 85 user_icon.addClass('far fa-user icon'); 86 user_icon.attr('aria-hidden', true); 87 88 var first_name = $('<input />'); 89 first_name.addClass("input first-name"); 90 first_name.attr('type', 'text'); 91 first_name.attr('placeholder', DourtalCommentResource.form.FirstLastName); 92 93 var first_name_error = $('<span />'); 94 first_name_error.addClass('email_validation'); 95 first_name_error.text(DourtalCommentResource.form.FirstLastNameError); 96 first_name_error.hide(); 97 98 name_input.append(user_icon); 99 name_input.append(first_name); 100 name_input.append(first_name_error); 101 102 var email_icon = $('<i />'); 103 email_icon.addClass('far fa-envelope icon'); 104 email_icon.attr('aria-hidden', true); 105 106 var email = $('<input />'); 107 email.addClass('input email-field'); 108 email.attr('placeholder', DourtalCommentResource.form.Email); 109 email.attr('type', 'email'); 110 111 var email_error = $('<span />'); 112 email_error.addClass('email_validation'); 113 email_error.text(DourtalCommentResource.form.EmailError); 114 email_error.hide(); 115 116 email_input.append(email_icon); 117 email_input.append(email); 118 email_input.append(email_error); 119 } 120 121 display_inputs.append(textarea_input); 122 123 124 125 var comment_icon = $('<i />'); 126 comment_icon.addClass('far fa-comment-alt icon'); 127 128 var textarea = $('<textarea />'); 129 textarea.addClass('input comment-textarea'); 130 textarea.attr('placeholder', DourtalCommentResource.form.PutComment); 131 132 var textArea_error = $('<span />'); 133 textArea_error.addClass('drt_textareaError'); 134 textArea_error.text(DourtalCommentResource.form.PutCommentError); 135 textArea_error.hide(); 136 137 textarea_input.append(comment_icon); 138 textarea_input.append(textarea); 139 textarea_input.append(textArea_error); 140 141 //var secure_field = $('<input />'); 142 //secure_field.addClass("input secure-field"); 143 //secure_field.attr('id', 'text'); 144 //secure_field.attr('name', 'text'); 145 //secure_field.attr('type', 'text'); 146 //secure_field.attr('placeholder', DourtalCommentResource.form.EnterSecureCode); 147 148 //var secure_random_num = $('<div />'); 149 //secure_random_num.addClass('secure-random-num'); 150 151 //secure_code.append(secure_field); 152 //secure_code.append(secure_random_num); 153 154 //var wrap_div = $('<div />'); 155 156 //var secure_txt = $('<p />'); 157 //secure_txt.text('ZFK5600I'); 158 159 //secure_random_num.append(wrap_div); 160 //secure_random_num.append(secure_txt); 161 162 //var sound_code = $('<a />'); 163 //sound_code.addClass('sound-code'); 164 //sound_code.attr('href', '#'); 165 166 //var refresh_code = $('<a />'); 167 //refresh_code.addClass('refresh-code'); 168 //refresh_code.attr('href', '#'); 169 170 //wrap_div.append(sound_code); 171 //wrap_div.append(refresh_code); 172 173 //var sound_icon = $('<i />'); 174 //sound_icon.addClass('fas fa-volume-up'); 175 176 //sound_code.append(sound_icon); 177 178 //var refresh_icon = $('<i />'); 179 //refresh_icon.addClass('fas fa-redo-alt'); 180 181 //refresh_code.append(refresh_icon); 182
183 //////// FORM FOOTER ///////// 184 185 var submit_button = $('<button />'); 186 submit_button.addClass('submit-button'); 187 submit_button.text(DourtalCommentResource.form.SubmitComment); 188 submit_button.attr('type', 'submit'); 189 190 wrap_submit_div.append(submit_button); 191 192 //////// FORM SUBMIT ///////// 193 194 var link = window.location.href; 195 196 if (!self.options.isAthenticated) { 197 submit_button.click(function (e) { 198 e.preventDefault(); 199 200 if (textarea.val() == '' || textarea.val() == null) { 201 textArea_error.show(); 202 } else { 203 textArea_error.hide() 204 } 205 206 if (first_name.val() == '' || first_name.val() == null ) { 207 first_name_error.show() 208 } else { 209 first_name_error.hide() 210 } 211 var email_value = email.val(); 212 if (email_value == '') { 213 email_error.show(); 214 } 215 if (IsEmail(email_value) == false) { 216 email_error.show(); 217 return false; 218 } else { 219 email_error.hide(); 220 } 221 function IsEmail(email) { 222 var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 223 if (!regex.test(email)) { 224 return false; 225 } else { 226 return true; 227 } 228 } 229 230 var spinIcon = $('<i />'); 231 spinIcon.addClass('far fa-spinner fa-spin spinner'); 232 $('.submit-button').html(spinIcon); 233 $('.submit-button').css('pointer-events', 'none'); 234 235 $.ajax({
236 url: self.options.url_input, 237 type: 'POST', 238 header: { "Accept-Language": `${self.options.lang}`}, 239 contentType: 'application/json-patch+json', 240 data: JSON.stringify({ 241 categoryId: self.options.categoryId, 242 categoryParentId: self.options.categoryParentId, 243 categoryType: self.options.categoryType, 244 organizationId: self.options.organizationId, 245 link: link, 246 parentId: null, 247 content: textarea.val(), 248 summaryOfPost: self.options.summeryOfPost, 249 name: first_name.val(), 250 email: email.val(), 251 isGuest: !self.options.isAthenticated 252 }), 253 success: function (success) { 254 first_name.val(''); 255 email.val(''); 256 textarea.val(''); 257 swal({ 258 title: DourtalCommentResource.swal.CommentSubmitSuccessfuly, 259 type: 'success',
260 showConfirmButton: false, 261 closeOnConfirm: true, 262 allowOutsideClick: true, 263 timer: 2000, 264 }); 265 $('.submit-button').text(DourtalCommentResource.form.SubmitComment); 266 $('.submit-button').css('pointer-events', 'unset'); 267 }, 268 error: function (err) { 269 swal({ 270 title: err.responseJSON.details.length > 0 ? err.responseJSON.details[0].message : err.responseJSON.message, 271 type: 'warning', 272 showConfirmButton: false, 273 closeOnConfirm: true, 274 allowOutsideClick: true, 275 timer: 2000, 276 }); 277 $('.submit-button').text(DourtalCommentResource.form.SubmitComment); 278 $('.submit-button').css('pointer-events', 'unset'); 279 } 280 }) 281 282 }) 283 } else { 284 submit_button.click(function (e) { 285 e.preventDefault(); 286 if (textarea.val() == '' || textarea.val() == null) { 287 textArea_error.show(); 288 } else { 289 textArea_error.hide() 290 } 291 292 var spinIcon = $('<i />'); 293 spinIcon.addClass('far fa-spinner fa-spin spinner'); 294 $('.submit-button').html(spinIcon); 295 $('.submit-button').css('pointer-events', 'none'); 296 297 $.ajax({
298 url: self.options.url_input, 299 type: 'POST', 300 headers: { "Authorization": `Bearer ${self.options.accessToken}`, "Accept-Language": `${self.options.lang}`}, 301 contentType: 'application/json-patch+json', 302 data: JSON.stringify({ 303 categoryId: self.options.categoryId, 304 categoryParentId: self.options.categoryParentId, 305 categoryType: self.options.categoryType, 306 organizationId: self.options.organizationId, 307 link: link, 308 parentId: null, 309 content: textarea.val(), 310 summaryOfPost: self.options.summeryOfPost, 311 isGuest: !self.options.isAthenticated 312 }), 313 success: function (success) { 314 swal({ 315 title: DourtalCommentResource.swal.CommentSubmitSuccessfuly, 316 type: 'success',
317 showConfirmButton: false, 318 closeOnConfirm: true, 319 allowOutsideClick: true, 320 timer: 2000, 321 }); 322 $('.submit-button').text(DourtalCommentResource.form.SubmitComment); 323 $('.submit-button').css('pointer-events', 'unset'); 324 textarea.val(''); 325 }, 326 error: function (err) { 327 swal({ 328 title: err.responseJSON.details.length > 0 ? err.responseJSON.details[0].message : err.responseJSON.message, 329 type: 'warning', 330 showConfirmButton: false, 331 closeOnConfirm: true, 332 allowOutsideClick: true, 333 timer: 2000, 334 }); 335 $('.submit-button').text(DourtalCommentResource.form.SubmitComment); 336 $('.submit-button').css('pointer-events', 'unset'); 337 } 338 }) 339 340 341 }) 342 } 343 344 return form_box; 345 }, 346 347 buildFormPopup_: function (comment_id, parent_id) { 348 var self = this; 349 350 var form_wrapper = $('<div />'); 351 form_wrapper.addClass('form-wrapper'); 352 353 354 355 var form_box = $('<div />'); 356 form_box.addClass('form-popup'); 357
358 //////// FORM HEADER ///////// 359 360 var modal_header = $('<div />'); 361 modal_header.addClass('modal-header'); 362 363 // modal header 364 var modal_header_width = $('<div />'); 365 modal_header_width.addClass('modal-header-width'); 366 367 modal_header.append(modal_header_width); 368 369 var modal_reply_icon = $('<div />'); 370 modal_reply_icon.addClass('modal-reply-icon'); 371 372 var modal_close_icon = $('<div />'); 373 modal_close_icon.addClass('modal-close-icon'); 374 375 modal_header_width.append(modal_reply_icon); 376 modal_header_width.append(modal_close_icon); 377 378 var modal_icon = $('<div />'); 379 modal_icon.addClass('modal-icon'); 380 381 var modal_title = $('<div />'); 382 modal_title.addClass('modal-title'); 383 modal_title.text(DourtalCommentResource.form.SendForm); 384 385 modal_reply_icon.append(modal_icon); 386 modal_reply_icon.append(modal_title); 387 388 var reply_icon = $('<i />'); 389 reply_icon.addClass("fal fa-comments"); 390 reply_icon.attr('aria-hidden', true); 391 392 modal_icon.append(reply_icon); 393 394 var close_icon = $('<i />'); 395 close_icon.addClass('far fa-times'); 396 close_icon.attr('aria-hidden', true); 397 398 modal_close_icon.append(close_icon); 399 400 401 form_wrapper.append(form_box); 402 403 form_box.append(modal_header); 404
405 //////// FORM BODY ///////// 406 407 var send_comment_txt = $('<p />'); 408 send_comment_txt.addClass('comment-text'); 409 send_comment_txt.text(DourtalCommentResource.form.SendForm); 410 411 var form_elem = $('<form></form>'); 412 form_elem.addClass('display-form'); 413 414 form_box.append(send_comment_txt); 415 form_box.append(form_elem); 416 417 var display_inputs = $('<div />'); 418 display_inputs.addClass('display-inputs'); 419 420 //var secure_code = $('<div />'); 421 //secure_code.addClass('secure-code'); 422 423 var wrap_submit_div = $('<div />'); 424 425 form_elem.append(display_inputs); 426 //form_elem.append(secure_code); 427 form_elem.append(wrap_submit_div); 428 429 430 var textarea_input = $('<div />'); 431 textarea_input.addClass('input-textarea'); 432 433 434 if (self.options.isAthenticated == false) { 435 var name_email_input = $('<div />'); 436 name_email_input.addClass('name-email'); 437 438 display_inputs.append(name_email_input); 439 440 var name_input = $('<div />'); 441 name_input.addClass('input-name'); 442 443 var email_input = $('<div />'); 444 email_input.addClass('input-email'); 445 446 name_email_input.append(name_input); 447 name_email_input.append(email_input); 448 449 var user_icon = $('<i />'); 450 user_icon.addClass('far fa-user icon'); 451 user_icon.attr('aria-hidden', true); 452 453 var first_name = $('<input />'); 454 first_name.addClass("input first-name"); 455 first_name.attr('type', 'text'); 456 first_name.attr('placeholder', DourtalCommentResource.form.FirstLastName); 457 458 var first_name_error = $('<span />'); 459 first_name_error.addClass('email_validation'); 460 first_name_error.text(DourtalCommentResource.form.FirstLastNameError); 461 first_name_error.hide(); 462 463 name_input.append(user_icon); 464 name_input.append(first_name); 465 name_input.append(first_name_error); 466 467 var email_icon = $('<i />'); 468 email_icon.addClass('far fa-envelope icon'); 469 email_icon.attr('aria-hidden', true); 470 471 var email = $('<input />'); 472 email.addClass('input email-field'); 473 email.attr('placeholder', DourtalCommentResource.form.Email); 474 email.attr('type', 'email'); 475 476 var email_error = $('<span />'); 477 email_error.addClass('email_validation'); 478 email_error.text(DourtalCommentResource.form.EmailError); 479 email_error.hide(); 480 481 email_input.append(email_icon); 482 email_input.append(email); 483 email_input.append(email_error); 484 } 485 486 display_inputs.append(textarea_input); 487 488 489 490 var comment_icon = $('<i />'); 491 comment_icon.addClass('far fa-comment-alt icon'); 492 493 var textarea = $('<textarea />'); 494 textarea.addClass('input comment-textarea'); 495 textarea.attr('placeholder', DourtalCommentResource.form.PutComment); 496 497 var textArea_error = $('<span />'); 498 textArea_error.addClass('drt_textareaError'); 499 textArea_error.text(DourtalCommentResource.form.PutCommentError); 500 textArea_error.hide(); 501 502 textarea_input.append(comment_icon); 503 textarea_input.append(textarea); 504 textarea_input.append(textArea_error); 505 506 //var secure_field = $('<input />'); 507 //secure_field.addClass("input secure-field"); 508 //secure_field.attr('id', 'text'); 509 //secure_field.attr('name', 'text'); 510 //secure_field.attr('type', 'text'); 511 //secure_field.attr('placeholder', DourtalCommentResource.form.EnterSecureCode); 512 513 //var secure_random_num = $('<div />'); 514 //secure_random_num.addClass('secure-random-num'); 515 516 //secure_code.append(secure_field); 517 //secure_code.append(secure_random_num); 518
519 //var wrap_div = $('<div />'); 520 521 //var secure_txt = $('<p />'); 522 //secure_txt.text('ZFK5600I'); 523 524 //secure_random_num.append(wrap_div); 525 //secure_random_num.append(secure_txt); 526 527 //var sound_code = $('<a />'); 528 //sound_code.addClass('sound-code'); 529 //sound_code.attr('href', '#'); 530 531 //var refresh_code = $('<a />'); 532 //refresh_code.addClass('refresh-code'); 533 //refresh_code.attr('href', '#'); 534 535 //wrap_div.append(sound_code); 536 //wrap_div.append(refresh_code); 537 538 //var sound_icon = $('<i />'); 539 //sound_icon.addClass('fas fa-volume-up'); 540 541 //sound_code.append(sound_icon); 542 543 //var refresh_icon = $('<i />'); 544 //refresh_icon.addClass('fas fa-redo-alt'); 545 546 //refresh_code.append(refresh_icon); 547 548 //////// FORM FOOTER ///////// 549 550 var submit_button = $('<button />'); 551 submit_button.addClass('submit-button'); 552 submit_button.text(DourtalCommentResource.form.SubmitComment); 553 submit_button.attr('type', 'submit'); 554 555 wrap_submit_div.append(submit_button); 556 557 558 modal_close_icon.click(function () { 559 form_wrapper.css({ display: 'none' }); 560 }) 561 562 var link = window.location.href; 563
564 //////// FORM SUBMIT ///////// 565 566 if (!self.options.isAthenticated) { 567 submit_button.click(function (e) { 568 569 e.preventDefault(); 570 571 if (textarea.val() == '' || textarea.val() == null) { 572 textArea_error.show(); 573 } else { 574 textArea_error.hide() 575 } 576 577 if (first_name.val() == '' || first_name.val() == null) { 578 first_name_error.show() 579 } else { 580 first_name_error.hide() 581 } 582 var email_value = email.val(); 583 if (email_value == '') { 584 email_error.show(); 585 } 586 if (IsEmail(email_value) == false) { 587 email_error.show(); 588 return false; 589 } else { 590 email_error.hide(); 591 } 592 593 function IsEmail(email) { 594 var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 595 if (!regex.test(email)) { 596 return false; 597 } else { 598 return true; 599 } 600 } 601 var spinIcon = $('<i />'); 602 spinIcon.addClass('far fa-spinner fa-spin spinner'); 603 $('.submit-button').html(spinIcon); 604 $('.submit-button').css('pointer-events', 'none'); 605 606 $.ajax({
607 url: self.options.url_input, 608 type: 'POST', 609 header: { "Accept-Language": `${self.options.lang}`}, 610 contentType: 'application/json-patch+json', 611 data: JSON.stringify({ 612 categoryId: self.options.categoryId, 613 categoryParentId: self.options.categoryParentId, 614 categoryType: self.options.categoryType, 615 organizationId: self.options.organizationId, 616 link: link, 617 parentId: null, 618 content: textarea.val(), 619 summaryOfPost: self.options.summeryOfPost, 620 name: first_name.val(), 621 email: email.val(), 622 isGuest: !self.options.isAthenticated 623 }), 624 success: function (success) { 625 $('.form-wrapper').css('display', 'none'); 626 first_name.val(''); 627 email.val(''); 628 textarea.val(''); 629 swal({ 630 title: DourtalCommentResource.swal.CommentSubmitSuccessfuly, 631 type: 'success',
632 showConfirmButton: false, 633 closeOnConfirm: true, 634 allowOutsideClick: true, 635 timer: 2000, 636 }); 637 $('.submit-button').text(DourtalCommentResource.form.SubmitComment); 638 $('.submit-button').css('pointer-events', 'unset'); 639 }, 640 error: function (err) { 641 swal({ 642 title: err.responseJSON.details.length > 0 ? err.responseJSON.details[0].message : err.responseJSON.message, 643 type: 'warning', 644 showConfirmButton: false, 645 closeOnConfirm: true, 646 allowOutsideClick: true, 647 timer: 2000, 648 }); 649 $('.submit-button').text(DourtalCommentResource.form.SubmitComment); 650 $('.submit-button').css('pointer-events', 'unset'); 651 } 652 }) 653 654 }) 655 } else { 656 submit_button.click(function (e) { 657 658 e.preventDefault(); 659 if (textarea.val() == '' || textarea.val() == null) { 660 textArea_error.show(); 661 } else { 662 textArea_error.hide() 663 } 664 var spinIcon = $('<i />'); 665 spinIcon.addClass('far fa-spinner fa-spin spinner'); 666 $('.submit-button').html(spinIcon) 667 $('.submit-button').css('pointer-events', 'none'); 668 669 $.ajax({
670 url: self.options.url_input, 671 type: 'POST', 672 headers: { "Authorization": `Bearer ${self.options.accessToken}`, "Accept-Language": `${self.options.lang}` }, 673 contentType: 'application/json-patch+json', 674 data: JSON.stringify({ 675 categoryId: self.options.categoryId, 676 categoryParentId: self.options.categoryParentId, 677 categoryType: self.options.categoryType, 678 organizationId: self.options.organizationId, 679 link: link, 680 parentId: null, 681 content: textarea.val(), 682 summaryOfPost: self.options.summeryOfPost, 683 isGuest: !self.options.isAthenticated 684 }), 685 success: function (success) { 686 $('.form-wrapper').css('display', 'none'); 687 swal({ 688 title: DourtalCommentResource.swal.CommentSubmitSuccessfuly, 689 type: 'success',
690 showConfirmButton: false, 691 closeOnConfirm: true, 692 allowOutsideClick: true, 693 timer: 2000, 694 }); 695 $('.submit-button').text(DourtalCommentResource.form.SubmitComment); 696 $('.submit-button').css('pointer-events', 'unset'); 697 textarea.val(''); 698 }, 699 error: function (err) { 700 swal({ 701 title: err.responseJSON.details.length > 0 ? err.responseJSON.details[0].message : err.responseJSON.message, 702 703 type: 'warning', 704 showConfirmButton: false, 705 closeOnConfirm: true, 706 allowOutsideClick: true, 707 timer: 2000, 708 }); 709 $('.submit-button').text(DourtalCommentResource.form.SubmitComment); 710 $('.submit-button').css('pointer-events', 'unset'); 711 } 712 }) 713 714 715 }) 716 } 717 718 return form_wrapper; 719 }, 720 721 buildPostBox_: function (parent_id, fullname, posted_date, posted_time, id, img) { 722 var self = this; 723 724 // modal box 725 var elem = $('<div></div>'); 726 elem.addClass('modal'); 727 elem.attr('comment_id', id); 728 729 var modal_form = $('<form />'); 730 modal_form.addClass('modal-box'); 731 modal_form.attr('action', self.options.url_input); 732 modal_form.attr('method', 'post'); 733 734 elem.append(modal_form); 735 736 var modal_header = $('<div />'); 737 modal_header.addClass('modal-header'); 738 739 var modal_body = $('<div />'); 740 modal_body.addClass('modal-body'); 741 742 var modal_footer = $('<div />'); 743 modal_footer.addClass('modal-footer'); 744 745 modal_form.append(modal_header); 746 modal_form.append(modal_body); 747 modal_form.append(modal_footer); 748 749 // modal header 750 var modal_header_width = $('<div />'); 751 modal_header_width.addClass('modal-header-width'); 752 753 modal_header.append(modal_header_width); 754 755 var modal_reply_icon = $('<div />'); 756 modal_reply_icon.addClass('modal-reply-icon'); 757 758 var modal_close_icon = $('<div />'); 759 modal_close_icon.addClass('modal-close-icon'); 760 761 modal_header_width.append(modal_reply_icon); 762 modal_header_width.append(modal_close_icon); 763 764 var modal_icon = $('<div />'); 765 modal_icon.addClass('modal-icon'); 766 767 var modal_title = $('<div />'); 768 modal_title.addClass('modal-title'); 769 modal_title.text(DourtalCommentResource.modal.Answer); 770 771 modal_reply_icon.append(modal_icon); 772 modal_reply_icon.append(modal_title); 773 774 var reply_icon = $('<i />'); 775 reply_icon.addClass("fal fa-reply"); 776 reply_icon.attr('aria-hidden', true); 777 778 modal_icon.append(reply_icon); 779 780 var close_icon = $('<i />'); 781 close_icon.addClass('far fa-times'); 782 close_icon.attr('aria-hidden', true); 783 784 modal_close_icon.append(close_icon); 785 786 // modal body 787 var modal_body_width = $('<div />'); 788 modal_body_width.addClass('modal-body-width'); 789 790 modal_body.append(modal_body_width); 791 792 var modal_user = $('<div />'); 793 modal_user.addClass('modal-user'); 794 795 var modal_timeline = $('<div />'); 796 modal_timeline.addClass('modal-timeline'); 797 798 var modal_submit_comment = $('<div />'); 799 modal_submit_comment.addClass('modal-submit-comment'); 800
801 //var modal_secure_code = $('<div />'); 802 //modal_secure_code.addClass('modal-secure-code'); 803 804 modal_body_width.append(modal_user); 805 modal_body_width.append(modal_timeline); 806 modal_body_width.append(modal_submit_comment); 807 //modal_body_width.append(modal_secure_code); 808 809 var modal_user_img = $('<div />'); 810 modal_user_img.addClass('modal-user-img'); 811 modal_user_img.text(fullname); 812 813 var modal_user_info = $('<div />'); 814 modal_user_info.addClass('modal-user-info'); 815 816 modal_user.append(modal_user_img); 817 modal_user.append(modal_user_info); 818 819 var modal_user_name = $('<div />'); 820 modal_user_name.addClass('modal-user-name'); 821 modal_user_name.text(fullname); 822 823 if (self.options.enableTimeDate) { 824 var modal_user_date = $('<div />'); 825 modal_user_date.addClass('modal-user-date'); 826 modal_user_date.text(posted_date); 827 828 var modal_user_time = $('<div />'); 829 modal_user_time.addClass('modal-user-time'); 830 modal_user_time.text(posted_time); 831 832 var clockIcon = $('<i />'); 833 clockIcon.addClass("far fa-clock clock-icon"); 834 clockIcon.attr('aria-hidden', true); 835 clockIcon.attr('id', 'modal-clock'); 836 } 837 838 modal_user_info.append(modal_user_name); 839 modal_user_info.append(clockIcon) 840 modal_user_info.append(modal_user_date); 841 modal_user_info.append(modal_user_time); 842
843 //////// USER IMAGES ///////// 844 845 var user_default_img = $('<i />'); 846 user_default_img.addClass('fas fa-user'); 847 848 var modal_user_image = $('<img />'); 849 modal_user_image.attr('src', img); 850 851 var modal_user_img_comment = $('<div />'); 852 modal_user_img_comment.addClass('modal-user-img-comment'); 853 854 if (img == null || img == '') { 855 modal_user_img_comment.append(user_default_img); 856 } else { 857 modal_user_img_comment.append(modal_user_image); 858 } 859 860 //////// MODAL BOX FIELDS ///////// 861 862 var display_inputs = $('<div />'); 863 display_inputs.addClass('display-inputs'); 864 865 var modal_input_textarea = $('<div />'); 866 modal_input_textarea.addClass('modal-input-textarea'); 867 868 modal_submit_comment.append(modal_user_img_comment); 869 modal_submit_comment.append(display_inputs); 870 modal_submit_comment.append(modal_input_textarea); 871 872 if (self.options.isAthenticated == false) { 873 var name_email_input = $('<div />'); 874 name_email_input.addClass('name-email'); 875 876 display_inputs.append(name_email_input); 877 878 var name_input = $('<div />'); 879 name_input.addClass('input-name'); 880 881 var email_input = $('<div />'); 882 email_input.addClass('input-email'); 883 884 name_email_input.append(name_input); 885 name_email_input.append(email_input); 886 887 var user_icon = $('<i />'); 888 user_icon.addClass('far fa-user icon'); 889 user_icon.attr('aria-hidden', true); 890 891 var first_name = $('<input />'); 892 first_name.addClass("input first-name"); 893 first_name.attr('type', 'text'); 894 first_name.attr('placeholder', DourtalCommentResource.form.FirstLastName); 895 896 var first_name_error = $('<span />'); 897 first_name_error.addClass('email_validation'); 898 first_name_error.text(DourtalCommentResource.form.FirstLastNameError); 899 first_name_error.hide(); 900 901 name_input.append(user_icon); 902 name_input.append(first_name); 903 name_input.append(first_name_error); 904 905 var email_icon = $('<i />'); 906 email_icon.addClass('far fa-envelope icon'); 907 email_icon.attr('aria-hidden', true); 908 909 var email = $('<input />'); 910 email.addClass('input email-field'); 911 email.attr('placeholder', DourtalCommentResource.form.Email); 912 email.attr('type', 'email'); 913 914 var email_error = $('<span />'); 915 email_error.addClass('email_validation'); 916 email_error.text(DourtalCommentResource.form.EmailError); 917 email_error.hide(); 918 919 920 email_input.append(email_icon); 921 email_input.append(email); 922 email_input.append(email_error); 923 } 924 925 var modal_textarea = $('<textarea />'); 926 modal_textarea.addClass("input comment-textarea"); 927 modal_textarea.attr('placeholder', DourtalCommentResource.form.PutComment); 928 modal_textarea.attr('name', parent_id); 929 modal_textarea.val(); 930 931 var textArea_error = $('<span />'); 932 textArea_error.addClass('drt_textareaError'); 933 textArea_error.text(DourtalCommentResource.form.PutCommentError); 934 textArea_error.hide(); 935 936 modal_input_textarea.append(modal_textarea); 937 modal_input_textarea.append(textArea_error); 938 939
940 //////// MODAL CAPTCHA BOX ///////// 941 942 //var secure_field = $('<input />'); 943 //secure_field.addClass("input secure-field"); 944 //secure_field.attr('id', 'text'); 945 //secure_field.attr('name', 'text'); 946 //secure_field.attr('type', 'text'); 947 //secure_field.attr('placeholder', DourtalCommentResource.form.EnterSecureCode); 948 949 //var secure_random_num = $('<div />'); 950 //secure_random_num.addClass('secure-random-num'); 951 952 //modal_secure_code.append(secure_field); 953 //modal_secure_code.append(secure_random_num); 954 955 //var wrap_div = $('<div />'); 956 957 //var secure_txt = $('<p />'); 958 //secure_txt.text('ZFK5600I'); 959 960 //secure_random_num.append(wrap_div); 961 //secure_random_num.append(secure_txt); 962 963 //var sound_code = $('<a />'); 964 //sound_code.addClass('sound-code'); 965 //sound_code.attr('href', '#'); 966 967 //var refresh_code = $('<a />'); 968 //refresh_code.addClass('refresh-code'); 969 //refresh_code.attr('href', '#'); 970 971 //wrap_div.append(sound_code); 972 //wrap_div.append(refresh_code); 973 974 //var sound_icon = $('<i />'); 975 //sound_icon.addClass('fas fa-volume-up'); 976 977 //sound_code.append(sound_icon); 978 979 //var refresh_icon = $('<i />'); 980 //refresh_icon.addClass('fas fa-redo-alt'); 981 982 //refresh_code.append(refresh_icon); 983 984 // modal footer 985 var modal_buttons = $('<div />'); 986 modal_buttons.addClass('modal-buttons'); 987 988 modal_footer.append(modal_buttons); 989 990 var modal_submit = $('<button />'); 991 modal_submit.addClass('modal-submit-button'); 992 modal_submit.text(DourtalCommentResource.modal.Send); 993 994 var modal_cancel = $('<a />'); 995 modal_cancel.addClass('modal-cancel-button'); 996 modal_cancel.text(DourtalCommentResource.modal.Cancel); 997 998 modal_buttons.append(modal_submit); 999 modal_buttons.append(modal_cancel); 1000 1001 // close modal box on click events 1002 modal_cancel.click(function () { 1003 $(`[comment_id=${id}]`).css({ display: 'none' }); 1004 }); 1005 1006 modal_close_icon.click(function () { 1007 $(`[comment_id=${id}]`).css({ display: 'none' }); 1008 }); 1009 1010 var link = window.location.href; 1011 1012 // submit reply icon event 1013 if (!self.options.isAthenticated) { 1014 modal_submit.click(function (e) { 1015 1016 e.preventDefault(); 1017 if (modal_textarea.val() == '' || modal_textarea.val() == null) { 1018 textArea_error.show(); 1019 } else { 1020 textArea_error.hide() 1021 } 1022 1023 if (first_name.val() == '' || first_name.val() == null) { 1024 first_name_error.show() 1025 } else { 1026 first_name_error.hide() 1027 } 1028 var email_value = email.val(); 1029 if (email_value == '') { 1030 email_error.show(); 1031 } 1032 if (IsEmail(email_value) == false) { 1033 email_error.show(); 1034 return false; 1035 } 1036 function IsEmail(email) { 1037 var regex = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 1038 if (!regex.test(email)) { 1039 return false; 1040 } else { 1041 return true; 1042 } 1043 } 1044 var spinIcon = $('<i />'); 1045 spinIcon.addClass('far fa-spinner fa-spin spinner'); 1046 $('.modal-submit-button').html(spinIcon); 1047 $('.modal-submit-button').css('pointer-events', 'n
1047one'); 1048 1049 $.ajax({ 1050 url: self.options.url_input, 1051 type: 'POST', 1052 headers: { "Accept-Language": `${self.options.lang}`}, 1053 contentType: 'application/json-patch+json', 1054 data: JSON.stringify({ 1055 categoryId: self.options.categoryId, 1056 categoryParentId: self.options.categoryParentId, 1057 categoryType: self.options.categoryType, 1058 organizationId: self.options.organizationId, 1059 link: link, 1060 parentId: id, 1061 content: modal_textarea.val(), 1062 summaryOfPost: self.options.summeryOfPost, 1063 name: first_name.val(), 1064 email: email.val(), 1065 isGuest: !self.options.isAthenticated 1066 }), 1067 success: function (success) { 1068 swal({ 1069 title: DourtalCommentResource.swal.CommentSubmitSuccessfuly, 1070 type: 'success',
1071 showConfirmButton: false, 1072 closeOnConfirm: true, 1073 allowOutsideClick: true, 1074 timer: 2000, 1075 }); 1076 elem.hide(); 1077 modal_textarea.val(''); 1078 first_name.val(''); 1079 email.val(''); 1080 $('.modal-submit-button').text(DourtalCommentResource.modal.Send); 1081 $('.modal-submit-button').css('pointer-events', 'unset'); 1082 }, 1083 error: function (err) { 1084 swal({ 1085 title: err.responseJSON.details.length > 0 ? err.responseJSON.details[0].message : err.responseJSON.message, 1086 type: 'warning', 1087 showConfirmButton: false, 1088 closeOnConfirm: true, 1089 allowOutsideClick: true, 1090 timer: 2000, 1091 }); 1092 $('.modal-submit-button').text(DourtalCommentResource.modal.Send); 1093 $('.modal-submit-button').css('pointer-events', 'unset'); 1094 } 1095 }) 1096 1097 }) 1098 } else { 1099 modal_submit.click(function (e) { 1100 1101 e.preventDefault(); 1102 1103 if (modal_textarea.val() == '' || modal_textarea.val() == null) { 1104 textArea_error.show(); 1105 } else { 1106 textArea_error.hide() 1107 } 1108 1109 var spinIcon = $('<i />'); 1110 spinIcon.addClass('far fa-spinner fa-spin spinner'); 1111 $('.modal-submit-button').html(spinIcon); 1112 $('.modal-submit-button').css('pointer-events', 'none'); 1113 1114 $.ajax({
1115 url: self.options.url_input, 1116 type: 'POST', 1117 headers: { "Authorization": `Bearer ${self.options.accessToken}`, "Accept-Language": `${self.options.lang}` }, 1118 contentType: 'application/json-patch+json', 1119 data: JSON.stringify({ 1120 categoryId: self.options.categoryId, 1121 categoryParentId: self.options.categoryParentId, 1122 categoryType: self.options.categoryType, 1123 organizationId: self.options.organizationId, 1124 link: link, 1125 parentId: id, 1126 content: modal_textarea.val(), 1127 summaryOfPost: self.options.summeryOfPost, 1128 isGuest: !self.options.isAthenticated 1129 }), 1130 success: function (success) { 1131 swal({ 1132 title: DourtalCommentResource.swal.CommentSubmitSuccessfuly, 1133 type: 'success',
1134 showConfirmButton: false, 1135 closeOnConfirm: true, 1136 allowOutsideClick: true, 1137 timer: 2000, 1138 }); 1139 elem.hide(); 1140 modal_textarea.val('') 1141 $('.modal-submit-button').text(DourtalCommentResource.modal.Send); 1142 $('.modal-submit-button').css('pointer-events', 'unset'); 1143 }, 1144 error: function (err) { 1145 swal({ 1146 title: err.responseJSON.details.length > 0 ? err.responseJSON.details[0].message : err.responseJSON.message, 1147 type: 'warning', 1148 showConfirmButton: false, 1149 closeOnConfirm: true, 1150 allowOutsideClick: true, 1151 timer: 2000, 1152 }); 1153 $('.modal-submit-button').text(DourtalCommentResource.modal.Send); 1154 $('.modal-submit-button').css('pointer-events', 'unset'); 1155 } 1156 }) 1157 1158 }) 1159 } 1160 1161 return elem; 1162 }, 1163 1164 buildUl_: function () { 1165 var self = this; 1166 var ul_elem = $('<ul></ul>'); 1167 ul_elem.addClass('first-level-comment-box'); 1168 ul_elem.attr('id', 'comment-level-one'); 1169 1170 var preLoader = self.buildPreLoader(self.total_comment); 1171 ul_elem.append(preLoader); 1172 1173 var obj = JSON.parse(self.options.settings); 1174 1175 if (!obj.IsAllowDisplayCommenInInitialLoad) { 1176 ul_elem.css({ display: 'none' }) 1177 } else { 1178 ul_elem.css({display: 'block'}) 1179 } 1180 1181 return ul_elem; 1182 1183 }, 1184 1185 fetch_: function (pageSize, sortOrder, pageIndex) { 1186 var self = this; 1187 return $.ajax({ 1188 url: self.options.url_get, 1189 headers: { "Accept-Language": `${self.options.lang}` }, 1190 data: { 1191 'organizationId': self.options.organizationId, 1192 'categoryId': self.options.categoryId, 1193 'sortOrder': sortOrder, 1194 'pageIndex': pageIndex, 1195 'pageSize': pageSize 1196 }, 1197 dataType: 'json', 1198 success: function (results) { 1199 results_ = results.data; 1200 obj = JSON.parse(self.options.settings); 1201 // results['comments'] 1202 1203 1204 if (results.data != undefined && results.data != null ) { 1205 1206 setTimeout(function () { 1207 $('.drt_status').fadeOut(); 1208 $('.drt_preloader').delay(50).fadeOut(100); 1209 $('.wrapper-comments').delay(50).css({ 'overflow': 'visible' }); 1210 }, 2000) 1211 } 1212 1213 // results['total_comment'] 1214 if (results.itemsCount != undefined ) 1215 self.total_comment = results.itemsCount; 1216 1217 1218 if (pageIndex === 1) { 1219 $('ul.first-level-comment-box').remove(); 1220 self.buildList_(results_); 1221 self.display_(); 1222 } else { 1223 1224 if ((self.options.pageIndex * pageSize) >= results.itemsCount) { 1225 $('.show-more-button').css({ display: 'none' }) 1226 } 1227 1228 moreItem = $.map(results_, function (obj, i) { 1229 return self.buildItemList_(obj); 1230 }); 1231
1232 var preLoader = self.buildPreLoader(); 1233 $('.first-level-comment-box').append(preLoader) 1234 setTimeout(function () { 1235 $('.first-level-comment-box').append(moreItem) 1236 $('.drt_status').fadeOut(); 1237 $('.drt_preloader').delay(50).fadeOut(100); 1238 $('.wrapper-comments').delay(50).css({ 'overflow': 'visible' }); 1239 }, 1000) 1240 1241 } 1242 1243 } 1244 }); 1245 }, 1246 1247 buildList_: function (results) { 1248 var self = this; 1249 self.comments = $.map(results, function (obj, i) { 1250 return self.buildItemList_(obj); 1251 }); 1252 }, 1253 1254 buildItemList_: function (comment_info) { 1255 var self = this; 1256 1257 var item = $('<li />'); 1258 1259 item.attr('id', 'posted-' + comment_info.id); 1260 item.attr('class', `first-level-comment`); 1261 item.attr('data-sort-key', self.options.sortOrder); 1262 1263 // avatar-image 1264 var avatar = $('<div></div>'); 1265 avatar.addClass('user-img-first-level'); 1266 1267 var img_elem = $('<img/>'); 1268 img_elem.attr('src', comment_info.pictureUrl); 1269 img_elem.attr('border', 0); 1270 img_elem.addClass('ui-corner-all'); 1271 1272 var user_default_img = $('<i />'); 1273 user_default_img.addClass('fas fa-user'); 1274 1275 if (comment_info.pictureUrl == null || comment_info.pictureUrl == '') { 1276 avatar.append(user_default_img); 1277 } 1278 avatar.append(img_elem); 1279 1280 item.append(avatar); 1281 1282 // posted-comment-container
1283 var post_container = $('<div></div>'); 1284 post_container.addClass('main-comment-box-first-level'); 1285 1286 // posted-comment-head 1287 var post_head = $('<div></div>'); 1288 post_head.addClass('user-info-first-level'); 1289 1290 // user-fullname 1291 var username = $('<span></span>'); 1292 username.addClass('user-name-first-level'); 1293 username.html(comment_info.fullname + ' :'); 1294 1295 var date_time_posted = $('<div />'); 1296 date_time_posted.addClass('drt_postedDateTime'); 1297 1298 post_head.append(username); 1299 post_head.append(date_time_posted); 1300 1301 post_container.append(post_head); 1302 1303 // posted time 1304 if (self.options.enableTimeDate) { 1305 var posted_date = $('<span></span>'); 1306 posted_date.addClass('user-date-first-level'); 1307 posted_date.attr('title', comment_info.createDate); 1308 posted_date.html(comment_info.createDate); 1309 1310 var posted_time = $('<span></span>'); 1311 posted_time.addClass('user-time-first-level'); 1312 posted_time.attr('title', comment_info.createTime); 1313 posted_time.html(comment_info.createTime); 1314 1315 var clockIcon = $('<i />'); 1316 clockIcon.addClass("far fa-clock clock-icon"); 1317 clockIcon.attr('aria-hidden', true); 1318 1319 date_time_posted.append(clockIcon); 1320 date_time_posted.append(posted_date); 1321 date_time_posted.append(posted_time) 1322 } 1323 1324 // posted-comment-txt 1325 var post_txt = $('<div></div>'); 1326 post_txt.addClass('main-content-first-level'); 1327 post_txt.html(comment_info.content); 1328 var obj = JSON.parse(self.options.settings); 1329 post_container.append(post_txt) 1330 if (!self.options.isAthenticated && obj.IsAllowCommentByGuest) { 1331 var post_foot = $('<div></div>'); 1332 post_foot.addClass('reply'); 1333 } else if (self.options.isAthenticated) { 1334 var post_foot = $('<div></div>'); 1335 post_foot.addClass('reply'); 1336 } 1337 // posted-comment-foot 1338 1339 1340 // reply 1341 1342 1343 var reply_container = $('<span></span>'); 1344 reply_container.addClass('post-reply'); 1345 1346 var reply = $('<a></a>'); 1347 reply.attr('href', '#'); 1348 reply.attr('title', 'Reply'); 1349 1350 var replyIcon = $('<i />'); 1351 replyIcon.addClass("far fa-reply reply-comment"); 1352 1353 reply.append(replyIcon); 1354 1355 var tootltipText = $('<span />'); 1356 tootltipText.addClass('tooltip-text'); 1357 tootltipText.text(DourtalCommentResource.itemList.Answer); 1358 1359 reply.append(tootltipText); 1360 1361 reply_container.append(reply); 1362 1363 1364 1365 if (!self.options.isAthenticated && obj.IsAllowCommentByGuest) { 1366 post_foot.append(reply_container); 1367 post_container.append(post_foot); 1368 } else if(self.options.isAthenticated) { 1369 post_foot.append(reply_container); 1370 post_container.append(post_foot); 1371 } 1372 1373 1374 1375 if (comment_info.children != null) { 1376 1377 var post_num_replies = $('<div />'); 1378 post_num_replies.addClass('submitted-replies'); 1379 post_num_replies.attr('id', comment_info.id); 1380 1381 1382 var show_replies_txt = $('<span />'); 1383 show_replies_txt.addClass('title-submitted-replies'); 1384 show_replies_txt.text(DourtalCommentResource.itemList.ShowAnswer + ' ( ' + comment_info.numberOfReplies + ' ) '); 1385 1386 1387 var show_arrow_icon = $('<span />'); 1388 show_arrow_icon.addClass('show-comments-icon'); 1389 1390 var arrow_icon = $('<i />'); 1391 arrow_icon.addClass('fa fa-angle-up arrow-icon'); 1392 1393 show_arrow_icon.append(arrow_icon); 1394 1395 post_num_replies.click(function () { 1396
1397 ul_child_elem.toggle(); 1398 $('#' + comment_info.id + ' .show-comments-icon i').toggleClass('fa-angle-up fa-angle-down'); 1399 1400 }); 1401 1402 1403 var seperate_line = $('<span />'); 1404 seperate_line.addClass('seperate-line'); 1405 1406 post_num_replies.append(show_replies_txt); 1407 post_num_replies.append(show_arrow_icon); 1408 post_num_replies.append(seperate_line); 1409 1410 post_container.append(post_num_replies); 1411 1412 } 1413 1414 item.append(post_container); 1415 1416 1417 1418 var ul_child_elem = $('<ul></ul>'); 1419 ul_child_elem.addClass('posted-comment-childs'); 1420 1421 // reply events-apply 1422 var postbox = self.buildPostBox_(comment_info.parentId, comment_info.fullname, comment_info.createDate, comment_info.createTime, comment_info.id, comment_info.pictureUrl); 1423 item.append(postbox); 1424 reply.on('click',function (e) { 1425 e.preventDefault(); 1426 postbox.toggle(); 1427 }); 1428 1429 1430 // check if has childrens 1431 if (comment_info.children !== null) { 1432 for (var i = 0; i < comment_info.children.length; i++) { 1433 var child = self.buildItemList_(comment_info.children[i]); 1434 ul_child_elem.append(child); 1435 } 1436 } 1437 1438 ul_child_elem.not('.modal').hide(); 1439 1440 post_container.append(ul_child_elem); 1441 1442 return item; 1443 }, 1444 1445 buildCountList_: function (total_comment) { 1446 var self = this; 1447 1448 var obj = JSON.parse(self.options.settings) 1449 1450 self.$title_submitted_comments = $('<span />'); 1451 self.$title_submitted_comments.addClass('title-submitted-comments'); 1452 if (obj.IsAllowDisplayTotalCount) { 1453 self.$title_submitted_comments.text(self.total_comment + ' ' + DourtalCommentResource.counting.SubmitComment); 1454 } else { 1455 self.$title_submitted_comments.text(DourtalCommentResource.counting.SubmittedComment) 1456 } 1457 1458 1459 self.$arrow_icon = $('<i />'); 1460 self.$arrow_icon.attr('class', 'fa fa-angle-down arrow-icon'); 1461 self.$arrow_icon.attr('aria-hidden', 'true'); 1462 1463 self.$show_comments_icon = $('<span />'); 1464 self.$show_comments_icon.addClass('show-comments-icon'); 1465 self.$show_comments_icon.append(self.$arrow_icon); 1466 1467 self.$seperate_line = $('<span />'); 1468 self.$seperate_line.addClass('seperate-line'); 1469 1470 self.$total_comments_part = $('<div />'); 1471 self.$total_comments_part.addClass('submitted-comments'); 1472 self.$total_comments_part.append(self.$title_submitted_comments); 1473 self.$total_comments_part.append(self.$show_comments_icon); 1474 self.$total_comments_part.append(self.$seperate_line); 1475 self.$total_comments_part.attr('id', 'submit-comment-icon'); 1476 1477 obj = JSON.parse(self.options.settings); 1478 1479 1480 if (!obj.IsAllowDisplayCommenInInitialLoad) { 1481 self.$arrow_icon.removeClass('fa-angle-down'); 1482 self.$arrow_icon.addClass('fa-angle-up'); 1483 } 1484 1485 1486 1487 self.$total_comments_part.click(function () { 1488 $('.first-level-comment-box').toggle(100); 1489 $('.sort-box').toggle(100); 1490 $('.show-more').toggle(); 1491 $('#submit-comment-icon .show-comments-icon i').toggleClass('fa-angle-down fa-angle-up'); 1492 }) 1493 1494 if (self.total_comment == 0) { 1495 self.$total_comments_part.hide(); 1496 } 1497 1498 1499 return self.$total_comments_part; 1500 }, 1501 1502 buildSortButtons: function () { 1503 var self = this; 1504 1505 self.$sort_newst_button = $('<button />'); 1506 self.$sort_newst_button.addClass('newst'); 1507 self.$sort_newst_button.attr('id', 'new'); 1508 self.$sort_newst_button.attr('data-sort-key', 'newst'); 1509 self.$sort_newst_button.text(self.options.newestText); 1510 1511 self.$sort_oldest_button = $('<button />'); 1512 self.$sort_oldest_button.addClass('newst'); 1513 self.$sort_oldest_button.attr('id', 'old'); 1514 self.$sort_oldest_button.attr('data-sort-key', 'oldest'); 1515 self.$sort_oldest_button.text(self.options.oldestText); 1516 1517 //self.$sort_most_replies_button = $('<button />'); 1518 //self.$sort_most_replies_button.addClass('newst'); 1519 //self.$sort_most_replies_button.attr('id', 'most'); 1520 //self.$sort_most_replies_button.attr('data-sort-key', 'most-replies'); 1521 //self.$sort_most_replies_button.text(self.options.mostRepliesText); 1522 1523 self.$sort_buttons = $('<div />'); 1524 self.$sort_buttons.addClass('sort-buttons'); 1525 self.$sort_buttons.append(self.$sort_newst_button); 1526 self.$sort_buttons.append(self.$sort_oldest_button); 1527 //self.$sort_buttons.append(self.$sort_most_replies_button); 1528 1529 1530 //sort data by newst comment id 1531 self.$sort_newst_button.on('click', function (e) { 1532 e.preventDefault(); 1533 1534 var obj = JSON.parse(self.options.settings); 1535 var ps = obj.CommentCountVisibleInFirstLevel * self.options.pageIndex; 1536 self.options.sortOrder = self.options.sortOrderAsc; 1537 self.fetch_(ps, self.options.sortOrderAsc, 1); 1538 }); 1539 1540 //sort data by oldest comment id 1541 self.$sort_oldest_button.click(function (e) { 1542 e.preventDefault(); 1543 var obj = JSON.parse(self.options.settings); 1544 var ps = obj.CommentCountVisibleInFirstLevel * self.options.pageIndex; 1545 self.options.sortOrder = self.options.sortOrderDsc; 1546 self.fetch_(ps, self.options.sortOrderDsc, 1); 1547 }); 1548 1549 //sort data by most replies and childs 1550 //self.$sort_most_replies_button.click(function (e) { 1551 // e.preventDefault(); 1552 // }) 1553 //}); 1554 1555 1556 1557 return self.$sort_buttons; 1558 }, 1559 1560 buildSortPart: function (total_comment) { 1561 var self = this; 1562 1563 var sb = self.buildSortButtons(); 1564 1565 self.$sort_amount_desc = $('<i />'); 1566 self.$sort_amount_desc.addClass('fas fa-sort-amount-down'); 1567 1568 self.$sort_base_on = $('<span />'); 1569 self.$sort_base_on.addClass('sort-base-on'); 1570 self.$sort_base_on.append(self.$sort_amount_desc); 1571 self.$sort_base_on.append(`<span>${DourtalCommentResource.sort.SortBaseOn}</span>`); 1572 1573 self.$sort_box = $('<div />'); 1574 self.$sort_box.addClass('sort-box'); 1575 self.$sort_box.append(self.$sort_base_on); 1576 self.$sort_box.append(sb); 1577 1578 var obj = JSON.parse(self.options.settings); 1579 if (!obj.IsAllowDisplayCommenInInitialLoad) { 1580 self.$sort_box.css({ display: 'none' }) 1581 } 1582 1583 if (self.total_comment == 0) { 1584 self.$sort_box.hide(); 1585 } 1586 1587 return self.$sort_box; 1588 }, 1589 1590 buildShowMore: function (total_comment) { 1591 var self = this; 1592 self.$show_more_link = $('<button />'); 1593 self.$show_more_link.addClass('show-more-button'); 1594 self.$show_more_link.text(DourtalCommentResource.show.ShowMore); 1595 1596 self.$show_more = $('<div />'); 1597 self.$show_more.addClass('show-more');
1598 self.$show_more.append(self.$show_more_link); 1599 1600 var obj = JSON.parse(self.options.settings) 1601 1602 //load more button 1603 $(document).ready(function () { 1604 if (!obj.IsAllowDisplayCommenInInitialLoad) { 1605 self.$show_more.css({ display: 'none' }); 1606 } 1607 self.$show_more_link.on('click', function (e) { 1608 e.preventDefault(); 1609 $('.first-level-comment-box').css({ display: 'block' }); 1610 self.options.pageIndex = self.options.pageIndex + 1; 1611 self.fetch_(obj.CommentCountVisibleInFirstLevel, obj.SortOrder, self.options.pageIndex); 1612 }); 1613 }) 1614 1615 if (self.total_comment == 0) { 1616 self.$show_more.hide(); 1617 } 1618 1619 1620 return self.$show_more 1621 }, 1622 buildPreLoader: function (total_comment) { 1623 var self = this; 1624 1625 self.$preLoader_status = $('<div />'); 1626 self.$preLoader_status.addClass('drt_status'); 1627 1628 self.$preLoader_text = $('<p />'); 1629 self.$preLoader_text.addClass('drt_preLoader_text'); 1630 self.$preLoader_text.text(DourtalCommentResource.loader.PreLoader); 1631 1632 self.$preLoader_box = $('<div />'); 1633 self.$preLoader_box.addClass('drt_preloader'); 1634 self.$preLoader_box.append(self.$preLoader_status); 1635 self.$preLoader_box.append(self.$preLoader_text); 1636 1637 if (self.total_comment == 0) { 1638 self.$preLoader_box.hide(); 1639 } 1640 1641 return self.$preLoader_box; 1642 }, 1643 1644 buildPopupBoxButton: function () { 1645 var self = this; 1646 1647 self.$popup_button = $('<button />'); 1648 self.$popup_button.addClass('drt_popupBox'); 1649 self.$popup_button.text(DourtalCommentResource.button.PopupForm); 1650 1651 $(document).ready(function () { 1652 self.$popup_button.click(function (e) { 1653 e.preventDefault(); 1654 $('.form-wrapper').css({ display: 'block' }) 1655 }) 1656 }) 1657 1658 return self.$popup_button; 1659 }, 1660 1661 display_: function () { 1662 var self = this; 1663 var obj = JSON.parse(self.options.settings) 1664 1665 if (!obj.isActive) { 1666 self.$wrapper_comments = $('<div />'); 1667 self.$wrapper_comments.addClass('wrapper-comments'); 1668 1669 if (!self.options.isAthenticated && obj.IsAllowCommentByGuest && obj.HowDisplayCommentForm == 1) { 1670 var form_elem1 = self.buildForm_(null, null); 1671 self.$wrapper_comments.append(form_elem1); 1672 } 1673 if (self.options.isAthenticated && obj.HowDisplayCommentForm == 1) { 1674 var form_elem1 = self.buildForm_(null, null); 1675 self.$wrapper_comments.append(form_elem1); 1676 } 1677 var tc = self.buildCountList_(self.total_comment); 1678 var sb = self.buildSortPart(self.total_comment); 1679 self.$wrapper_comments.append(tc); 1680 self.$wrapper_comments.append(sb); 1681 1682 self.$rootlist = self.buildUl_(); 1683 self.$rootlist.append(self.comments); 1684 1685 1686 self.$wrapper_comments.append(self.$rootlist); 1687 1688 self.$show_more_part = self.buildShowMore(self.total_comment); 1689 self.$wrapper_comments.append(self.$show_more_part); 1690 1691 1692 1693 if (!self.options.isAthenticated && obj.IsAllowCommentByGuest && obj.HowDisplayCommentForm == 2) { 1694 var form_elem2 = self.buildForm_(null, null); 1695 self.$wrapper_comments.append(form_elem2); 1696 } 1697 if (self.options.isAthenticated && obj.HowDisplayCommentForm == 2) { 1698 var form_elem2 = self.buildForm_(null, null); 1699 self.$wrapper_comments.append(form_elem2); 1700 } 1701 1702 if (!self.options.isAthenticated && obj.IsAllowCommentByGuest && obj.HowDisplayCommentForm == 3) { 1703 var popupBoxForm = self.buildPopupBoxButton(); 1704 self.$wrapper_comments.append(popupBoxForm); 1705 var form_elem3 = self.buildFormPopup_(null, null); 1706 self.$wrapper_comments.append(form_elem3); 1707 } 1708 if (self.options.isAthenticated && obj.HowDisplayCommentForm == 3) { 1709 var form_elem3 = self.buildFormPopup_(null, null); 1710 self.$wrapper_comments.append(form_elem3); 1711 var popupBoxForm = self.buildPopupBoxButton(); 1712 self.$wrapper_comments.append(popupBoxForm); 1713 } 1714 1715 1716 if (self.options.transition === 'none' || !self.options.transition) { 1717 self.$elem.html(self.$wrapper_comments)[self.options.transition](500); 1718 } else { 1719 self.$elem[self.options.transition](500, function () { 1720 self.$elem.html(self.$wrapper_comments)[self.options.transition](500); 1721 }); 1722 } 1723 } 1724 1725 } 1726 }; 1727 1728 $.fn.comment = function (options) { 1729 return this.each(function () { 1730 var comment = Object.create(Comment); 1731 1732 comment.init_(options, this); 1733 1734 $.data(this, 'comment', comment); 1735 1736 }); 1737 }; 1738 1739 // options 1740 $.fn.comment.options = { 1741 url_get: '#',
1742 url_input: '#', 1743 transition: 'fadeToggle', 1744 enableTimeDate: true, 1745 maxRepliesVisible: 2, 1746 maxLoadMore: 1, 1747 sortOrder: 'desc', 1748 sortOrderAsc: 'desc', 1749 sortOrderDsc: 'acs', 1750 newestText: DourtalCommentResource.sort.NewstSort, 1751 oldestText: DourtalCommentResource.sort.OldestSort, 1752 mostRepliesText: 'Ø¨ÛØ´ØªØ±Û٠پاسخ', 1753 firstAndLastName: '', 1754 email: '', 1755 isAthenticated: true, 1756 accessToken: '', 1757 categoryId: '', 1758 categoryParentId: '', 1759 summeryOfPost: '', 1760 categoryType: null, 1761 organizationId: "", 1762 pageIndex: 1, 1763 settings: '{"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6","title": "string","IsActive": true,"isAllowCommentByGuest": true,"isAllowDisplayCommenInInitialLoad": true,"IsAllowDisplayTotalCount": true,"sortOrder": 1,"howDisplayCommentForm": 1,"commentCountVisibleInFirstLevel": 0,"commentCountVisibleInOtherLevel": 0,"isAllowNestedComments": true,"depthOfNestedComments": 0,"depthOfDisplayNestedComments": 0,"minimumOfCommentCharacterCount": 0,"maximumOfCommentCharacterCount": 0,"characterDisplayCount": 0}', 1764 lang: "fa-ir" 1765 }; 1766 1767})(jQuery, window, document);
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.