/** * Like button * * @author Pierre HUBERT */ ComunicWeb.components.like.button = { /** * Display like button * * @param {String} kind The kind of like component * @param {int} id The ID of the component * @param {int} count The current number of likes * @param {Boolean} liking Specify wether user is liking the content or not * @param {HTMLElement} target The target for the button */ display: function(kind, id, count, liking, target){ //Empty target emptyElem(target); //Display like button var likeRoot = createElem2({ type: "div", appendTo: target, }); var likeLink = createElem2({ appendTo: likeRoot, type: "a", class: "link-black text-sm" }); createElem2({ appendTo: likeLink, type: "i", class: "fa fa-thumbs-o-up margin-r-5" }); var likeMsg = createElem2({ appendTo: likeLink, type: "span", }); //Check if user can like or not the component if(!signed_in()){ //Remove link effect likeLink.style.cursor = "default"; if(count == 0){ //Hide like component likeRoot.style.visibility = "hidden"; } else { //Update message if(count == 1){ likeMsg.innerHTML = "1 like"; } else likeMsg.innerHTML = count + " likes"; } } else { //Update the message if(liking == true){ likeMsg.innerHTML = "Liking" } else { likeMsg.innerHTML = "Like"; } //Add total count if possible if(count > 0) likeMsg.innerHTML += " (" + count + ")"; //Set onclick behaviour likeLink.onclick = function(){ //Get the new status var newliking = liking == true ? false : true; count = newliking ? count + 1 : count - 1; //Update liking status on the API ComunicWeb.components.like.interface.update(kind, id, newliking); //Display liking element again ComunicWeb.components.like.button.display(kind, id, count, newliking, target); } } }, };