1/* 2 jquery-comments.js 1.3.0 3 4 (c) 2017 Joona Tykkyläinen, Viima Solutions Oy 5 jquery-comments may be freely distributed under the MIT license. 6 For all details and documentation: 7 http://viima.github.io/jquery-comments/ 8 9 Modify by Leon for: 10 add function : replyHandled 11 add attribute : enableCommenting 12*/ 13(function(d){"function"===typeof define&&define.amd?define(["jquery"],d):"object"===typeof module&&module.exports?module.exports=function(B,a){void 0===a&&(a="undefined"!==typeof window?require("jquery"):require("jquery")(B));d(a);return a}:d(jQuery)})(function(d){var B={$el:null,commentsById:{},usersById:{},dataFetched:!1,currentSortKey:"",options:{},events:{click:"closeDropdowns","keydown [contenteditable]":"saveOnKeydown","focus [contenteditable]":"saveEditableContent","keyup [contenteditable]":"checkEditableContentForChange", 14"paste [contenteditable]":"checkEditableContentForChange","input [contenteditable]":"checkEditableContentForChange","blur [contenteditable]":"checkEditableContentForChange","click .navigation li[data-sort-key]":"navigationElementClicked","click .navigation li.title":"toggleNavigationDropdown","click .commenting-field.main .textarea":"showMainCommentingField","click .commenting-field.main .close":"hideMainCommentingField","click .commenting-field .textarea":"increaseTextareaHeight","change .commenting-field .textarea":"increaseTextareaHeight textareaContentChanged", 15"click .commenting-field:not(.main) .close":"removeCommentingField","click .commenting-field .send.enabled":"postComment","click .commenting-field .update.enabled":"putComment","click .commenting-field .delete.enabled":"deleteComment",'change .commenting-field .upload.enabled input[type\x3d"file"]':"fileInputChanged","click li.comment button.upvote":"upvoteComment","click li.comment button.delete.enabled":"deleteComment","click li.comment .hashtag":"hashtagClicked","click li.comment .ping":"pingClicked", 16"click li.comment ul.child-comments .toggle-all":"toggleReplies","click li.comment button.reply":"replyButtonClicked","click li.comment button.edit":"editButtonClicked",dragenter:"showDroppableOverlay","dragenter .droppable-overlay":"handleDragEnter","dragleave .droppable-overlay":"handleDragLeaveForOverlay","dragenter .droppable-overlay .droppable":"handleDragEnter","dragleave .droppable-overlay .droppable":"handleDragLeaveForDroppable","dragover .droppable-overlay":"handleDragOverForOverlay","drop .droppable-overlay":"handleDrop", 17"click .dropdown.autocomplete":"stopPropagation","mousedown .dropdown.autocomplete":"stopPropagation","touchstart .dropdown.autocomplete":"stopPropagation"},getDefaultOptions:function(){return{profilePictureURL:"",currentUserIsAdmin:!1,currentUserId:null,spinnerIconURL:"",upvoteIconURL:"",replyIconURL:"",uploadIconURL:"",attachmentIconURL:"",fileIconURL:"",noCommentsIconURL:"",textareaPlaceholderText:"Add a comment",newestText:"Newest",oldestText:"Oldest",popularText:"Popular",attachmentsText:"Attachments", 18sendText:"Send",replyText:"Reply",editText:"Edit",editedText:"Edited",youText:"You",saveText:"Save",deleteText:"Delete",newText:"New",viewAllRepliesText:"View all __replyCount__ replies",hideRepliesText:"Hide replies",noCommentsText:"No comments",noAttachmentsText:"No attachments",attachmentDropText:"Drop files here",textFormatter:function(a){return a},enableCommenting:!0,enableReplying:!0,enableEditing:!0,enableUpvoting:!0,enableDeleting:!0,enableAttachments:!1,enableHashtags:!1,enablePinging:!1, 19enableDeletingCommentWithReplies:!1,enableNavigation:!0,postCommentOnEnter:!1,forceResponsive:!1,readOnly:!1,defaultNavigationSortKey:"newest",highlightColor:"#2793e6",deleteButtonColor:"#C9302C",scrollContainer:this.$el,roundProfilePictures:!1,textareaRows:2,textareaRowsOnFocus:2,textareaMaxRows:5,maxRepliesVisible:2,fieldMappings:{id:"id",parent:"parent",created:"created",modified:"modified",content:"content",file:"file",fileURL:"file_url",fileMimeType:"file_mime_type",pings:"pings",creator:"creator", 20fullname:"fullname",profileURL:"profile_url",profilePictureURL:"profile_picture_url",isNew:"is_new",createdByAdmin:"created_by_admin",createdByCurrentUser:"created_by_current_user",upvoteCount:"upvote_count",userHasUpvoted:"user_has_upvoted"},getUsers:function(a,b){a([])},getComments:function(a,b){a([])},postComment:function(a,b,c){b(a)},putComment:function(a,b,c){b(a)},deleteComment:function(a,b,c){b()},upvoteComment:function(a,b,c){b(a)},hashtagClicked:function(a){},pingClicked:function(a){},uploadAttachments:function(a, 21b,c){b(a)},refresh:function(){},timeFormatter:function(a){return(new Date(a)).toLocaleDateString()},replyHandled:function(a){return!1}}},init:function(a,b){this.$el=d(b);this.$el.addClass("jquery-comments");this.undelegateEvents();this.delegateEvents();b=navigator.userAgent||navigator.vendor||window.opera;(jQuery.browser=jQuery.browser||{}).mobile=/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(b)|| 22/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|
22sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(b.substr(0, 234));d.browser.mobile&&this.$el.addClass("mobile");this.options=d.extend(!0,{},this.getDefaultOptions(),a);this.options.readOnly&&this.$el.addClass("read-only");this.currentSortKey=this.options.defaultNavigationSortKey;this.createCssDeclarations();this.fetchDataAndRender()},delegateEvents:function(){this.bindEvents(!1)},undelegateEvents:function(){this.bindEvents(!0)},bindEvents:function(a){a=a?"off":"on";for(var b in this.events){var c=b.split(" ")[0],e=b.split(" ").slice(1).join(" "),f=this.events[b].split(" "), 24g;for(g in f)if(f.hasOwnProperty(g)){var h=this[f[g]];h=d.proxy(h,this);if(""==e)this.$el[a](c,h);else this.$el[a](c,e,h)}}},fetchDataAndRender:function(){var a=this;this.commentsById={};this.usersById={};this.$el.empty();this.createHTML();var b=this.after(this.options.enablePinging?2:1,function(){a.dataFetched=!0;a.render()});this.options.getComments(function(c){c=c.map(function(e){return a.createCommentModel(e)});a.sortComments(c,"oldest");d(c).each(function(e,f){a.addCommentToDataModel(f)});b()}, 25b);this.options.enablePinging&&this.options.getUsers(function(c){d(c).each(function(e,f){a.usersById[f.id]=f});b()},b)},fetchNext:function(){var a=this,b=this.createSpinner();this.$el.find("ul#comment-list").append(b);this.options.getComments(function(c){d(c).each(function(e,f){a.createComment(f)});b.remove()},function(){b.remove()})},createCommentModel:function(a){a=this.applyInternalMappings(a);a.childs=[];return a},addCommentToDataModel:function(a){a.id in this.commentsById||(this.commentsById[a.id]= 26a,a.parent&&this.getOutermostParent(a.parent).childs.push(a.id))},updateCommentModel:function(a){d.extend(this.commentsById[a.id],a)},render:function(){this.dataFetched&&(this.showActiveContainer(),this.createComments(),this.options.enableAttachments&&this.createAttachments(),this.$el.find("\x3e .spinner").remove(),this.options.refresh())},showActiveContainer:function(){var a=this.$el.find(".navigation li[data-container-name].active").data("container-name");a=this.$el.find('[data-container\x3d"'+ 27a+'"]');a.siblings("[data-container]").hide();a.show()},createComments:function(){var a=this;this.$el.find("#comment-list").remove();var b=d("\x3cul/\x3e",{id:"comment-list","class":"main"}),c=[],e=[];d(this.getComments()).each(function(f,g){null==g.parent?c.push(g):e.push(g)});this.sortComments(c,this.currentSortKey);c.reverse();d(c).each(function(f,g){a.addComment(g,b)});this.sortComments(e,"oldest");d(e).each(function(f,g){a.addComment(g,b)});this.$el.find('[data-container\x3d"comments"]').prepend(b)}, 28createAttachments:function(){var a=this;this.$el.find("#attachment-list").remove();var b=d("\x3cul/\x3e",{id:"attachment-list","class":"main"}),c=this.getAttachments();this.sortComments(c,"newest");c.reverse();d(c).each(function(e,f){a.addAttachment(f,b)});this.$el.find('[data-container\x3d"attachments"]').prepend(b)},addComment:function(a,b){b=b||this.$el.find("#comment-list");var c=this.createCommentElement(a);if(a.parent){b=b.find('.comment[data-id\x3d"'+a.parent+'"]');this.reRenderCommentActionBar(a.parent); 29a=b.parents(".comment").last();0==a.length&&(a=b);b=a.find(".child-comments");var e=b.find(".commenting-field");e.length?e.before(c):b.append(c);this.updateToggleAllButton(a)}else b.prepend(c)},addAttachment:function(a,b){b=b||this.$el.find("#attachment-list");a=this.createCommentElement(a);b.prepend(a)},removeComment:function(a){var b=this,c=this.commentsById[a],e=this.getChildComments(c.id);d(e).each(function(f,g){b.removeComment(g.id)});c.parent&&(e=this.getOutermostParent(c.parent),c=e.childs.indexOf(c.id), 30e.childs.splice(c,1));delete this.commentsById[a];a=this.$el.find('li.comment[data-id\x3d"'+a+'"]');c=a.parents("li.comment").last();a.remove();this.updateToggleAllButton(c)},uploadAttachments:function(a,b){var c=this;c.commentingField||(b=this.$el.find(".commenting-field.main"));var e=b.find(".upload"),f=!b.hasClass("main"),g=a.length;if(g){var h=b.find(".textarea");e.removeClass("enabled");var n=this.createSpinner(),k=this.createSpinner();this.$el.find("ul#attachment-list").prepend(n);f?b.before(k): 31this.$el.find("ul#comment-list").prepend(k);var l=[];d(a).each(function(m,u){var r=c.createCommentJSON(h);r.id+="-"+m;r.content="";r.file=u;r.fileURL="C:/fakepath/"+u.name;r.fileMimeType=u.type;r=c.applyExternalMappings(r);l.push(r)});c.options.uploadAttachments(l,function(m){d(m).each(function(u,r){u=c.createCommentModel(r);c.addCommentToDataModel(u);c.addComment(u);c.addAttachment(u)});m.length==g&&0==c.getTextareaContent(h).length&&b.find(".close").trigger("click");e.addClass("enabled");k.remove(); 32n.remove()},function(){e.addClass("enabled");k.remove();n.remove()})}e.find("input").val("")}
32,updateToggleAllButton:function(a){if(null!=this.options.maxRepliesVisible){a=a.find(".child-comments");var b=a.find(".comment"),c=a.find("li.toggle-all");b.removeClass("hidden-reply");var e=0===this.options.maxRepliesVisible?b:b.slice(0,-this.options.maxRepliesVisible);e.addClass("hidden-reply");c.find("span.text").text()==this.options.textFormatter(this.options.hideRepliesText)&&e.addClass("visible");b.length> 33this.options.maxRepliesVisible?(c.length||(c=d("\x3cli/\x3e",{"class":"toggle-all highlight-font-bold"}),b=d("\x3cspan/\x3e",{"class":"text"}),e=d("\x3cspan/\x3e",{"class":"caret"}),c.append(b).append(e),a.prepend(c)),this.setToggleAllButtonText(c,!1)):c.remove()}},sortComments:function(a,b){var c=this;"popularity"==b?a.sort(function(e,f){var g=e.childs.length,h=f.childs.length;c.options.enableUpvoting&&(g+=e.upvoteCount,h+=f.upvoteCount);if(h!=g)return h-g;e=(new Date(e.created)).getTime();return(new Date(f.created)).getTime()- 34e}):a.sort(function(e,f){e=(new Date(e.created)).getTime();f=(new Date(f.created)).getTime();return"oldest"==b?e-f:f-e})},sortAndReArrangeComments:function(a){var b=this.$el.find("#comment-list"),c=this.getComments().filter(function(e){return!e.parent});this.sortComments(c,a);d(c).each(function(e,f){e=b.find("\x3e li.comment[data-id\x3d"+f.id+"]");b.append(e)})},showActiveSort:function(){var a=this.$el.find('.navigation li[data-sort-key\x3d"'+this.currentSortKey+'"]');this.$el.find(".navigation li").removeClass("active"); 35a.addClass("active");var b=this.$el.find(".navigation .title");"attachments"!=this.currentSortKey?(b.addClass("active"),b.find("header").html(a.first().html())):(a=this.$el.find(".navigation ul.dropdown").children().first(),b.find("header").html(a.html()));this.showActiveContainer()},forceResponsive:function(){this.$el.addClass("responsive")},closeDropdowns:function(){this.$el.find(".dropdown").hide()},saveOnKeydown:function(a){if(13==a.keyCode){var b=a.metaKey||a.ctrlKey;if(this.options.postCommentOnEnter|| 36b)d(a.currentTarget).siblings(".control-row").find(".save").trigger("click"),a.stopPropagation(),a.preventDefault()}},saveEditableContent:function(a){a=d(a.currentTarget);a.data("before",a.html())},checkEditableContentForChange:function(a){a=d(a.currentTarget);d(a[0].childNodes).each(function(){this.nodeType==Node.TEXT_NODE&&0==this.length&&this.removeNode&&this.removeNode()});a.data("before")!=a.html()&&(a.data("before",a.html()),a.trigger("change"))},navigationElementClicked:function(a){a=d(a.currentTarget).data().sortKey; 37"attachments"!=a&&this.sortAndReArrangeComments(a);this.currentSortKey=a;this.showActiveSort()},toggleNavigationDropdown:function(a){a.stopPropagation();d(a.currentTarget).find("~ .dropdown").toggle()},showMainCommentingField:function(a){a=d(a.currentTarget);a.siblings(".control-row").show();a.parent().find(".close").show();a.parent().find(".upload.inline-button").hide();a.focus()},hideMainCommentingField:function(a){a=d(a.currentTarget);var b=this.$el.find(".commenting-field.main .textarea"),c=this.$el.find(".commenting-field.main .control-row"); 38this.clearTextarea(b);this.adjustTextareaHeight(b,!1);c.hide();a.hide();b.parent().find(".upload.inline-button").show();b.blur()},increaseTextareaHeight:function(a){a=d(a.currentTarget);
38this.adjustTextareaHeight(a,!0)},textareaContentChanged:function(a){var b=d(a.currentTarget);a=b.siblings(".control-row").find(".save");if(!b.find(".reply-to.tag").length)if(b.attr("data-comment")){var c=b.parents("li.comment");1<c.length&&(c=c.last().data("id"),b.attr("data-parent",c))}else c=b.parents("li.comment").last().data("id"), 39b.attr("data-parent",c);c=b.parents(".commenting-field").first();b[0].scrollHeight>b.outerHeight()?c.addClass("scrollable"):c.removeClass("scrollable");var e=!0;c=this.getTextareaContent(b,!0);if(commentModel=this.commentsById[b.attr("data-comment")]){e=c!=commentModel.content;var f;commentModel.parent&&(f=commentModel.parent.toString());f=b.attr("data-parent")!=f;e=e||f}c.length&&e?a.addClass("enabled"):a.removeClass("enabled")},removeCommentingField:function(a){a=d(a.currentTarget);a.siblings(".textarea").attr("data-comment")&& 40a.parents("li.comment").first().removeClass("edit");a.parents(".commenting-field").first().remove()},postComment:function(a){var b=this,c=d(a.currentTarget),e=c.parents(".commenting-field").first();a=e.find(".textarea");c.removeClass("enabled");a=this.createCommentJSON(a);a=this.applyExternalMappings(a);this.options.postComment(a,function(f){b.createComment(f);e.find(".close").trigger("click")},function(){c.addClass("enabled")})},createComment:function(a){a=this.createCommentModel(a);this.addCommentToDataModel(a); 41this.addComment(a)},putComment:function(a){var b=this,c=d(a.currentTarget),e=c.parents(".commenting-field").first();a=e.find(".textarea");c.removeClass("enabled");var f=d.extend({},this.commentsById[a.attr("data-comment")]);d.extend(f,{parent:a.attr("data-parent")||null,content:this.getTextareaContent(a),pings:this.getPings(a),modified:(new Date).getTime()});f=this.applyExternalMappings(f);this.options.putComment(f,function(g){g=b.createCommentModel(g);delete g.childs;b.updateCommentModel(g);e.find(".close").trigger("click"); 42b.reRenderComment(g.id)},function(){c.addClass("enabled")})},deleteComment:function(a){var b=this,c=d(a.currentTarget);a=c.parents(".comment").first();a=d.extend({},this.commentsById[a.attr("data-id")]);var e=a.id,f=a.parent;c.removeClass("enabled");a=this.applyExternalMappings(a);this.options.deleteComment(a,function(){b.removeComment(e);f&&b.reRenderCommentActionBar(f)},function(){c.addClass("enabled")})},hashtagClicked:function(a){a=d(a.currentTarget).attr("data-value");this.options.hashtagClicked(a)}, 43pingClicked:function(a){a=d(a.currentTarget).attr("data-value");this.options.pingClicked(a)},fileInputChanged:function(a,b){b=a.currentTarget.files;a=d(a.currentTarget).parents(".commenting-field").first();this.uploadAttachments(b,a)},upvoteComment:function(a){var b=this,c=d(a.currentTarget).parents("li.comment").first().data().model,e=c.upvoteCount;a=c.userHasUpvoted?e-1:e+1;c.userHasUpvoted=!c.userHasUpvoted;c.upvoteCount=a;this.reRenderUpvotes(c.id);a=d.extend({},c);a=this.applyExternalMappings(a); 44this.options.upvoteComment(a,function(f){f=b.createCommentModel(f);b.updateCommentModel(f);b.reRenderUpvotes(f.id)},function(){c.userHasUpvoted=!c.userHasUpvoted;c.upvoteCount=e;b.reRenderUpvotes(c.id)})},toggleReplies:function(a){a=d(a.currentTarget);a.siblings(".hidden-reply").toggleClass("visible");this.setToggleAllButtonText(a,!0)},replyButtonClicked:function(a){a=d(a.currentTarget);var b=a.parents("li.comment").last(),c=a.parents(".comment").first().data().id;this.options.replyHandled&&this.options.replyHandled(a)|| 45(a=b.find(".child-comments \x3e .commenting-field"),a.length&&a.remove(),a.find(".textarea").attr("data-parent")!=c&&(a=this.createCommentingFieldElement(c),b.find(".child-comments").append(a),b=a.find(".textarea"),this.moveCursorToEnd(b),b=this.options.scrollContainer.scrollTop(),a=b+a.position().top+a.outerHeight(),c=b+this.options.scrollContainer.outerHeight(),a>c&&this.options.scrollContainer.scrollTop(b+(a-c))))},editButtonClicked:function(a){var b=d(a.currentTarget).parents("li.comment").first(); 46a=b.data().model;b.addClass("edit");var c=this.createCommentingFieldElement(a.parent,a.id);b.find(".comment-wrapper").first().append(c);b=c.find(".textarea");b.attr("data-comment",a.id);b.append(this.getFormattedCommentContent(a,!0));this.moveCursorToEnd(b)},showDroppableOverlay:function(a){this.options.enableAttachments&&(this.$el.find(".droppable-overlay").css("top",this.$el[0].scrollTop),this.$el.find(".droppable-overlay").show(),this.$el.addClass("drag-ongoing"))},handleDragEnter:function(a){var b= 47d(a.currentTarget).data("dnd-count")||0;b++;d(a.currentTarget).data("dnd-count",b);d(a.currentTarget).addClass("drag-over")},handleDragLeave:function(a,b){var c=d(a.currentTarget).data("dnd-count");c--;d(a.currentTarget).data("dnd-count",c);0==c&&(d(a.currentTarget).removeClass("drag-over"),b&&b())},handleDragLeaveForOverlay:function(a){var b=this;this.handleDragLeave(a,function(){b.hideDroppableOverlay()})},handleDragLeaveForDroppable:function(a){this.handleDragLeave(a)},handleDragOverForOverlay:function(a){a.stopPropagation(); 48a.preventDefault();a.originalEvent.dataTransfer.dropEffect="copy"},hideDroppableOverlay:function(){this.$el.find(".droppable-overlay").hide();this.$el.removeClass("drag-ongoing")},handleDrop:function(a){a.preventDefault();d(a.target).trigger("dragleave");this.hideDroppableOverlay();this.uploadAttachments(a.originalEvent.dataTransfer.files)},stopPropagation:function(a){a.stopPropagation()},createHTML:function(){if(this.options.enableCommenting){var a=this.createMainCommentingFieldElement();this.$el.append(a); 49a.find(".control-row").hide();a.find(".close").hide()}this.options.enableNavigation&&(this.$el.append(this.createNavigationElement()),this.showActiveSort());a=this.createSpinner();this.$el.append(a);a=d("\x3cdiv/\x3e",{"class":"data-container","data-container":"comments"});this.$el.append(a);var b=d("\x3cdiv/\x3e",{"class":"no-comments no-data",text:this.options.textFormatter(this.options.noCommentsText)}),c=d("\x3ci/\x3e",{"class":"fa fa-comments fa-2x"});this.options.noCommentsIconURL.length&&(c.css("background-image",
50'url("'+this.options.noCommentsIconURL+'")'),c.addClass("image"));b.prepend(d("\x3cbr/\x3e")).prepend(c);a.append(b);if(this.options.enableAttachments){a=d("\x3cdiv/\x3e",{"class":"data-container","data-container":"attachments"});this.$el.append(a);b=d("\x3cdiv/\x3e",{"class":"no-attachments no-data",text:this.options.textFormatter(this.options.noAttachmentsText)});c=d("\x3ci/\x3e",{"class":"fa fa-paperclip fa-2x"});this.options.attachmentIconURL.length&&(c.css("background-image",'url("'+this.options.attachmentIconURL+ 51'")'),c.addClass("image"));b.prepend(d("\x3cbr/\x3e")).prepend(c);a.append(b);a=d("\x3cdiv/\x3e",{"class":"droppable-overlay"});b=d("\x3cdiv/\x3e",{"class":"droppable-container"});c=d("\x3cdiv/\x3e",{"class":"droppable"});var e=d("\x3ci/\x3e",{"class":"fa fa-paperclip fa-4x"});this.options.uploadIconURL.length&&(e.css("background-image",'url("'+this.options.uploadIconURL+'")'),e.addClass("image"));var f=d("\x3cdiv/\x3e",{text:this.options.textFormatter(this.options.attachmentDropText)});c.append(e); 52c.append(f);a.html(b.html(c)).hide();this.$el.append(a)}},createProfilePictureElement:function(a,b){a=a?d("\x3cdiv/\x3e").css({"background-image":"url("+a+")"}):d("\x3ci/\x3e",{"class":"fa fa-user"});a.addClass("profile-picture");a.attr("data-user-id",b);this.options.roundProfilePictures&&a.addClass("round");return a},createMainCommentingFieldElement:function(){return this.createCommentingFieldElement(void 0,void 0,!0)},createCommentingFieldElement:function(a,b,c){var e=this,f=d("\x3cdiv/\x3e",{"class":"commenting-field"}); 53c&&f.addClass("main");if(b)var g=this.commentsById[b].profilePictureURL,h=this.commentsById[b].creator;else g=this.options.profilePictureURL,h=this.options.creator;g=this.createProfilePictureElement(g,h);h=d("\x3cdiv/\x3e",{"class":"textarea-wrapper"});var n=d("\x3cdiv/\x3e",{"class":"control-row"}),k=d("\x3cdiv/\x3e",{"class":"textarea","data-placeholder":this.options.textFormatter(this.options.textareaPlaceholderText),contenteditable:!0});this.adjustTextareaHeight(k,!1);var l=d("\x3cspan/\x3e", 54{"class":"close inline-button"}).append(d('\x3cspan class\x3d"left"/\x3e')).append(d('\x3cspan class\x3d"right"/\x3e'));if(b){var m=this.options.textFormatter(this.options.saveText);c=d("\x3cspan/\x3e",{"class":"delete",text:this.options.textFormatter(this.options.deleteText)}).css("background-color",this.options.deleteButtonColor);n.append(c);this.isAllowedToDelete(b)&&c.addClass("enabled")}else if(m=this.options.textFormatter(this.options.sendText),this.options.enableAttachments){var u=d("\x3cspan/\x3e", 55{"class":"enabled upload"}),r=d("\x3ci/\x3e",{"class":"fa fa-paperclip"}),y=d("\x3cinput/\x3e",{type:"file","data-role":"none"});d.browser.mobile||y.attr("multiple","multiple");this.options.uploadIconURL.length&&(r.css("background-image",'url("'+this.options.uploadIconURL+'")'),r.addClass("image"));u.append(r).append(y);n.append(u.clone());c&&h.append(u.clone().addClass("inline-button"))}b=d("\x3cspan/\x3e",{"class":(b?"update":"send")+" save highlight-background",text:m});n.prepend(b);h.append(l).append(k).append(n); 56f.append(g).append(h);a&&(k.attr("data-parent",a),a=this.commentsById[a],a.parent&&(k.html("\x26nbsp;"),a=this.createTagElement("@"+a.fullname,"reply-to",a.creator,{"data-user-id":a.creator}),k.prepend(a)));this.options.enablePinging&&(k.textcomplete([{match:/(^|\s)@([^@]*)$/i,index:2,search:function(p,t){p=e.normalizeSpaces(p);var x=e.getPings(k),w=e.getUsers().filter(function(q){var v=q.id==e.options.currentUserId;q=-1!=x.indexOf(q.id);return!v&&!q});0==p.length?w.sort(function(q,v){q=q.fullname.toLowerCase().trim(); 57v=v.fullname.toLowerCase().trim();return q<v?-1:q>v?1:0}):(w=d.map(w,function(q){q.points=0;var v=p.split(" "),z=q.fullname.split(" ");z.splice(1,0,z.splice(z.length-1,1)[0]);var C=!0;d(v).each(function(H,G){var D=G.toLowerCase().trim(),E=!1;d(z).each(function(F,A){A=A.toLowerCase().trim();0==A.indexOf(D)&&(E=!0,q.points+=D.length/A.length*(0==F?.5:1==F?.4:.1))});E||(C=!1)});return C?q:null}),w.sort(function(q,v){return v.points-q.points}));t(w)},template:function(p){var t=d("\x3cdiv/\x3e"),x=e.createProfilePictureElement(p.profile_picture_url), 58w=d("\x3cdiv/\x3e",{"class":"details"}),q=d("\x3cdiv/\x3e",{"class":"name"}).html(p.fullname),v=d("\x3cdiv/\x3e",{"class":"email"}).html(p.email);p.email?w.append(q).append(v):(w.addClass("no-email"),w.append(q));t.append(x).append(w);return t.html()},replace:function(p){return" "+e.createTagElement("@"+p.fullname,"ping",p.id,{"data-user-id":p.id})[0].outerHTML+" "}}],{appendTo:".jquery-comments",dropdownClassName:"dropdown autocomplete",maxCount:5,rightEdgeOffset:0}),d.fn.textcomplete.Dropdown.prototype.render= 59function(p){var t=this._buildContents(p),x=d.map(p,function(w){return w.value});p.length?(p=p[0].strategy,p.id?this.$el.attr("data-strategy",p.id):this.$el.removeAttr("data-strategy"),this._renderHeader(x),this._renderFooter(x),t&&(this._renderContents(t),this._fitToBottom(),this._fitToRight(),this._activateIndexedItem()),this._setScroll()):this.noResultsMessage?this._renderNoResultsMessage(x):this.shown&&this.deactivate();t=parseInt(this.$el.css("top"))+e.options.scrollContainer.scrollTop();this.$el.css("top", 60t);t=this.$el.css("left");this.$el.css("left",0);x=e.$el.width()-this.$el.outerWidth();t=Math.min(x,parseInt(t));this.$el.css("left",t)});return f},createNavigationElement:function(){var a=d("\x3cul/\x3e",{"class":"navigation"}),b=d("\x3cdiv/\x3e",{"class":"navigation-wrapper"});a.append(b);var c=d("\x3cli/\x3e",{text:this.options.textFormatter(this.options.newestText),"data-sort-key":"newest","data-container-name":"comments"}),e=d("\x3cli/\x3e",{text:this.options.textFormatter(this.options.oldestText), 61"data-sort-key":"oldest","data-container-name":"comments"}),f=d("\x3cli/\x3e",{text:this.options.textFormatter(this.options.popularText),"data-sort-key":"popularity","data-container-name":"comments"}),g=d("\x3cli/\x3e",{text:this.options.textFormatter(this.options.attachmentsText),"data-sort-key":"attachments","data-container-name":"attachments"}),h=d("\x3ci/\x3e",{"class":"fa fa-paperclip"});this.options.attachmentIconURL.length&&(h.css("background-image",'url("'+this.options.attachmentIconURL+'")'), 62h.addClass("image"));g.prepend(h);h=d("\x3cdiv/\x3e",{"class":"navigation-wrapper responsive"});var n=d("\x3cul/\x3e",{"class":"dropdown"}),k=d("\x3cli/\x3e",{"class":"title"}),l=d("\x3cheader/\x3e");k.append(l);h.append(k);h.append(n);a.append(h);b.append(c).append(e);n.append(c.clone()).append(e.clone());if(this.options.enableReplying||this.options.enableUpvoting)b.append(f),n.append(f.clone());this.options.enableAttachments&&(b.append(g),h.append(g.clone()));this.options.forceResponsive&&this.forceResponsive(); 63return a},createSpinner:function(){var a=d("\x3cdiv/\x3e",{"class":"spinner"}),b=d("\x3ci/\x3e",{"class":"fa fa-spinner fa-spin"});this.options.spinnerIconURL.length&&(b.css("background-image",'url("'+this.options.spinnerIconURL+'")'),b.addClass("image"));a.html(b);return a},createCommentElement:function(a){var b=d("\x3cli/\x3e",{"data-id":a.id,"class":"comment"}).data("model",a);a.createdByCurrentUser&&b.addClass("by-current-user");a.createdByAdmin&&b.addClass("by-admin");var c=d("\x3cul/\x3e",{"class":"child-comments"}), 64e=this.createCommentWrapperElement(a);b.append(e);null==a.parent&&b.append(c);return b},createCommentWrapperElement:function(a){var b=d("\x3cdiv/\x3e",{"class":"comment-wrapper"}),c=this.createProfilePictureElement(a.profilePictureURL,a.creator),e=d("\x3ctime/\x3e",{text:this.options.timeFormatter(a.created),"data-original":a.created}),f=d("\x3cspan/\x3e",{"data-user-id":a.creator,text:a.createdByCurrentUser?this.options.textFormatter(this.options.youText):a.fullname});a.profileURL&&(f=d("\x3ca/\x3e", 65{href:a.profileURL,html:f}));f=d("\x3cdiv/\x3e",{"class":"name",html:f});a.createdByAdmin&&f.addClass("highlight-font-bold");if(a.parent){var g=this.commentsById[a.parent];if(g.parent){g=d("\x3cspan/\x3e",{"class":"reply-to",text:g.fullname,"data-user-id":g.creator});var h=d("\x3ci/\x3e",{"class":"fa fa-share"});this.options.replyIconURL.length&&(h.css("background-image",'url("'+this.options.replyIconURL+'")'),h.addClass("image"));g.prepend(h);f.append(g)}}a.isNew&&(g=d("\x3cspan/\x3e",{"class":"new highlight-background", 66text:this.options.textFormatter(this.options.newText)}),f.append(g));g=d("\x3cdiv/\x3e",{"class":"wrapper"});h=d("\x3cdiv/\x3e",{"class":"content"});var n=void 0!=a.fileURL;if(n){var k=null,l=null;if(a.fileMimeType){var m=a.fileMimeType.split("/");2==m.length&&(k=m[1],l=m[0])}m=d("\x3ca/\x3e",{"class":"attachment",href:a.fileURL,target:"_blank"});if("image"==l)k=d("\x3cimg/\x3e",{src:a.fileURL}),m.html(k);else if("video"==l)k=d("\x3cvideo/\x3e",{src:a.fileURL,type:a.fileMimeType,controls:"controls"}), 67m.html(k);else{var u="archive audio code excel image movie pdf photo picture powerpoint sound video word zip".split(" "),r="fa fa-file-o";0<u.indexOf(k)?r="fa fa-file-"+k+"-o":0<u.indexOf(l)&&(r="fa fa-file-"+l+"-o");k=d("\x3ci/\x3e",{"class":r});
67this.options.fileIconURL.length&&(k.css("background-image",'url("'+this.options.fileIconURL+'")'),k.addClass("image"));l=a.fileURL.split("/");l=l[l.length-1];l=l.split("?")[0];l=decodeURIComponent(l);m.text(l);m.prepend(k)}h.html(m)}else h.html(a.content); 68a.modified&&a.modified!=a.created&&(m=this.options.timeFormatter(a.modified),m=d("\x3ctime/\x3e",{"class":"edited",text:this.options.textFormatter(this.options.editedText)+" "+m,"data-original":a.modified}),h.append(m));m=d("\x3cspan/\x3e",{"class":"actions"});var y=d("\x3cspan/\x3e",{"class":"separator",text:"\u00b7"});k=d("\x3cbutton/\x3e",{"class":"action reply",type:"button",text:this.options.textFormatter(this.options.replyText)});l=d("\x3ci/\x3e",{"class":"fa fa-thumbs-up"});this.options.upvoteIconURL.length&& 69(l.css("background-image",'url("'+this.options.upvoteIconURL+'")'),l.addClass("image"));l=this.createUpvoteElement(a);this.options.enableReplying&&m.append(k);this.options.enableUpvoting&&m.append(l);if(a.createdByCurrentUser||this.options.currentUserIsAdmin)n&&this.isAllowedToDelete(a.id)?(a=d("\x3cbutton/\x3e",{"class":"action delete enabled",text:this.options.textFormatter(this.options.deleteText)}),m.append(a)):!n&&this.options.enableEditing&&(a=d("\x3cbutton/\x3e",{"class":"action edit",text:this.options.textFormatter(this.options.editText)}), 70m.append(a));m.children().each(function(p,t){d(t).is(":last-child")||d(t).after(y.clone())});g.append(h);g.append(m);b.append(c).append(e).append(f).append(g);return b},createUpvoteElement:function(a){var b=d("\x3ci/\x3e",{"class":"fa fa-thumbs-up"});this.options.upvoteIconURL.length&&(b.css("background-image",'url("'+this.options.upvoteIconURL+'")'),b.addClass("image"));return d("\x3cbutton/\x3e",{"class":"action upvote"+(a.userHasUpvoted?" highlight-font":"")}).append(d("\x3cspan/\x3e",{text:a.upvoteCount, 71"class":"upvote-count"})).append(b)},createTagElement:function(a,b,c,e){var f=d("\x3cinput/\x3e",{"class":"tag",type:"button","data-role":"none"});b&&f.addClass(b);f.val(a);f.attr("data-value",c);e&&f.attr(e);return f},reRenderComment:function(a){var b=this.commentsById[a],c=this;this.$el.find('li.comment[data-id\x3d"'+b.id+'"]').each(function(e,f){e=c.createCommentWrapperElement(b);d(f).find(".comment-wrapper").first().replaceWith(e)})},reRenderCommentActionBar:function(a){var b=this.commentsById[a], 72c=this;this.$el.find('li.comment[data-id\x3d"'+b.id+'"]').each(function(e,f){e=c.createCommentWrapperElement(b);d(f).find(".actions").first().replaceWith(e.find(".actions"))})},reRenderUpvotes:function(a){var b=this.commentsById[a],c=this;this.$el.find('li.comment[data-id\x3d"'+b.id+'"]').each(function(e,f){e=c.createUpvoteElement(b);d(f).find(".upvote").first().replaceWith(e)})},createCssDeclarations:function(){d("head style.jquery-comments-css").remove();this.createCss(".jquery-comments ul.navigation li.active:after {background: "+ 73this.options.highlightColor+" !important;",NaN);this.createCss(".jquery-comments ul.navigation ul.dropdown li.active {background: "+this.options.highlightColor+" !important;",NaN);this.createCss(".jquery-comments .highlight-background {background: "+this.options.highlightColor+" !important;",NaN);this.createCss(".jquery-comments .highlight-font {color: "+this.options.highlightColor+" !important;}");this.createCss(".jquery-comments .highlight-font-bold {color: "+this.options.highlightColor+" !important;font-weight: bold;}")}, 74createCss:function(a){a=d("\x3cstyle/\x3e",{type:"text/css","class":"jquery-comments-css",text:a});d("head").append(a)},getComments:function(){var a=this;return Object.keys(this.commentsById).map(function(b){return a.commentsById[b]})},getUsers:function(){var a=this;return Object.keys(this.usersById).map(function(b){return a.usersById[b]})},getChildComments:function(a){return this.getComments().filter(function(b){return b.parent==a})},getAttachments:function(){return this.getComments().filter(function(a){return void 0!= 75a.fileURL})},getOutermostParent:function(a){do{var b=this.commentsById[a];a=b.parent}while(null!=b.parent);return b},createCommentJSON:function(a){var b=(new Date).toISOString();return{id:"c"+(this.getComments().length+1),parent:a.attr("data-parent")||null,created:b,modified:b,content:this.getTextareaContent(a),pings:this.getPings(a),fullname:this.options.textFormatter(this.options.youText),profilePictureURL:this.options.profilePictureURL,createdByCurrentUser:!0,upvoteCount:0,userHasUpvoted:!1}},
76isAllowedToDelete:function(a){if(this.options.enableDeleting){var b=!0;this.options.enableDeletingCommentWithReplies||d(this.getComments()).each(function(c,e){e.parent==a&&(b=!1)});return b}return!1},setToggleAllButtonText:function(a,b){var c=this,e=a.find("span.text"),f=a.find(".caret"),g=function(){var n=c.options.textFormatter(c.options.viewAllRepliesText),k=a.siblings(".comment").length;n=n.replace("__replyCount__",k);e.text(n)},h=this.options.textFormatter(this.options.hideRepliesText);b?(e.text()== 77h?g():e.text(h),f.toggleClass("up")):e.text()!=h&&g()},adjustTextareaHeight:function(a,b){a=d(a);b=1==b?this.options.textareaRowsOnFocus:this.options.textareaRows;do{a.css("height",2.2+1.45*(b-1)+"em");b++;var c=a[0].scrollHeight>a.outerHeight(),e=0==this.options.textareaMaxRows?!1:b>this.options.textareaMaxRows}while(c&&!e)},clearTextarea:function(a){a.empty().trigger("input")},getTextareaContent:function(a,b){a=a.clone();a.find(".reply-to.tag").remove();a.find(".tag.hashtag").replaceWith(function(){return b? 78d(this).val():"#"+d(this).attr("data-value")});a.find(".tag.ping").replaceWith(function(){return b?d(this).val():"@"+d(this).attr("data-value")});a=d("\x3cpre/\x3e").html(a.html());a.find("div, p, br").replaceWith(function(){return"\n"+this.innerHTML});a=a.text().replace(/^\s+/g,"");return a=this.normalizeSpaces(a)},getFormattedCommentContent:function(a,b){var c=this.escape(a.content);c=this.linkify(c);c=this.highlightTags(a,c);b&&(c=c.replace(/(?:\n)/g,"\x3cbr\x3e"));return c},getPings:function(a){return d.map(a.find(".ping"), 79function(b){return parseInt(d(b).attr("data-value"))})},moveCursorToEnd:function(a){a=d(a)[0];d(a).trigger("input");d(a).scrollTop(a.scrollHeight);if("undefined"!=typeof window.getSelection&&"undefined"!=typeof document.createRange){var b=document.createRange();b.selectNodeContents(a);b.collapse(!1);var c=window.getSelection();c.removeAllRanges();c.addRange(b)}else"undefined"!=typeof document.body.createTextRange&&(b=document.body.createTextRange(),b.moveToElementText(a),b.collapse(!1),b.select()); 80a.focus()},escape:function(a){return d("\x3cpre/\x3e").text(this.normalizeSpaces(a)).html()},normalizeSpaces:function(a){return a.replace(RegExp("\u00a0","g")," ")},after:function(a,b){var c=this;return function(){a--;if(0==a)return b.apply(c,arguments)}},highlightTags:function(a,b){this.options.enableHashtags&&(b=this.highlightHashtags(a,b));this.options.enablePinging&&(b=this.highlightPings(a,b));return b},highlightHashtags:function(a,b){var c=this;-1!=b.indexOf("#")&&(b=b.replace(/(^|\s)#([a-z\u00e4\u00f6\u00fc\u00df\d-_]+)/gim, 81function(e,f,g){e=g;e=c.createTagElement("#"+e,"hashtag",e);return f+e[0].outerHTML}));return b},highlightPings:function(a,b){var c=this;if(-1!=b.indexOf("@")){var e="";d(a.pings).each(function(f,g){if(g in c.usersById){var h=c.usersById[g];f="@"+h.fullname;g=b.indexOf(f)+f.length;var n=b.slice(0,g),k=e,l=n.replace;h=c.createTagElement("@"+h.fullname,"ping",h.id,{"data-user-id":h.id})[0].outerHTML;e=k+l.call(n,f,h);b=b.slice(g)}});return e+=b}return b},linkify:function(a){var b=/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;
82var c=a.replace(b,'\x3ca href\x3d"$1" target\x3d"_blank"\x3e$1\x3c/a\x3e');var e=/(^|[^\/f])(www\.[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/gim;c=c.replace(e,'$1\x3ca href\x3d"http://$2" target\x3d"_blank"\x3e$2\x3c/a\x3e');var f=/(([a-zA-Z0-9\-_\.])+@[a-zA-Z_]+?(\.[a-zA-Z]{2,6})+)/gim;c=c.replace(f,'\x3ca href\x3d"mailto:$1"\x3e$1\x3c/a\x3e');if(0<(a.match(/<a href/g)||[]).length){a=a.split(/(<\/a>)/g);for(c=0;c<a.length;c++)null==a[c].match(/<a href/g)&&(a[c]=a[c].replace(b,'\x3ca href\x3d"$1" target\x3d"_blank"\x3e$1\x3c/a\x3e').replace(e, 83'$1\x3ca href\x3d"http://$2" target\x3d"_blank"\x3e$2\x3c/a\x3e').replace(f,'\x3ca href\x3d"mailto:$1"\x3e$1\x3c/a\x3e'));return a.join("")}return c},waitUntil:function(a,b){var c=this;a()?b():setTimeout(function(){c.waitUntil(a,b)},100)},applyInternalMappings:function(a){var b={},c=this.options.fieldMappings,e;for(e in c)c.hasOwnProperty(e)&&(b[c[e]]=e);return this.applyMappings(b,a)},applyExternalMappings:function(a){return this.applyMappings(this.options.fieldMappings,a)},applyMappings:function(a, 84b){var c={},e;for(e in b)e in a&&(c[a[e]]=b[e]);return c}};d.fn.comments=function(a){return this.each(function(){var b=Object.create(B);d.data(this,"comments",b);b.init(a||{},this)})}});
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.