Tuesday, August 15, 2017

Autocomplete textbox using Managed Metatdata and Likes/NotLike implementation in Sharepoint 2013 List.

function termSetIDS(TermSetID1) { var dfrd1 = $.Deferred(); var dfrd2 = $.Deferred(); setTimeout(function() { //Doing async stuff context = new SP.ClientContext.get_current(); session = SP.Taxonomy.TaxonomySession.getTaxonomySession(context); termStore = session.getDefaultSiteCollectionTermStore(); RawTermSet = termStore.getTermSet(TermSetID1); RawTerms = RawTermSet.getAllTerms(); context.load(session); context.load(termStore); context.load(RawTermSet); context.load(RawTerms); context.executeQueryAsync(onTaxonomySession, onTaxonomyFailed); dfrd1.resolve(); function onTaxonomySession() { var Name = null; Name = RawTermSet.get_name(); var terms = RawTermSet.get_terms(); context.load(terms); context.executeQueryAsync( function () { var termsEnum = terms.getEnumerator(); while (termsEnum.moveNext()) { var currentTerm = termsEnum.get_current(); var termName = currentTerm.get_name(); var termId = currentTerm.get_id(); termsList += termName + ": " + termId; //Check if term has child terms if (currentTerm.get_termsCount() > 0) { //Term has sub terms. recursiveTerms(currentTerm, 1,Name); } //alert(termList); //console.log(termList); } }, function () { //failure to load terms. }); } function recursiveTerms(currentTerm, nestedLoop,Name) { //Loop count for formatting purpose. var loop = nestedLoop + 1; //Get Term child terms var terms = currentTerm.get_terms(); context.load(terms); context.executeQueryAsync( function () { var termsEnum = terms.getEnumerator(); while (termsEnum.moveNext()) { var newCurrentTerm = termsEnum.get_current(); var termName = newCurrentTerm.get_name(); termId = newCurrentTerm.get_id(); //Tab Out format. for (var i = 0; i < loop; i++) { termsList += "\t"; //alert(termsList); } termsList += termName + ": " + termId; //console.log("termset retrieving now"); console.log(termName + "First"); termsArray.push(termName); $("#autocompleteTextBoxTeamArea").autocomplete({ source: termsArray }); //alert(termsList); //Check if term has child terms. if (currentTerm.get_termsCount() > 0) { //Term has sub terms. recursiveTerms(newCurrentTerm, loop); } } }, function () { //failure to load terms } ); //termSetIDS(TermSetID2); } function onTaxonomyFailed(sender, args) { alert('Taxonomy Error:' + args.get_message()); } }, 750); setTimeout(function() { // doing async stuff context = new SP.ClientContext.get_current(); session = SP.Taxonomy.TaxonomySession.getTaxonomySession(context); termStore = session.getDefaultSiteCollectionTermStore(); RawTermSet = termStore.getTermSet(TermSetID2); RawTerms = RawTermSet.getAllTerms(); context.load(session); context.load(termStore); context.load(RawTermSet); context.load(RawTerms); context.executeQueryAsync(onTaxonomySession, onTaxonomyFailed); dfrd2.resolve(); function onTaxonomySession() { var Name = null; Name = RawTermSet.get_name(); var terms = RawTermSet.get_terms(); context.load(terms); context.executeQueryAsync( function () { var termsEnum = terms.getEnumerator(); while (termsEnum.moveNext()) { var currentTerm = termsEnum.get_current(); var termName = currentTerm.get_name(); var termId = currentTerm.get_id(); termsList += termName + ": " + termId; //Check if term has child terms if (currentTerm.get_termsCount() > 0) { //Term has sub terms. recursiveTerms(currentTerm, 1,Name); } //alert(termList); //console.log(termList); } }, function () { //failure to load terms. }); } function recursiveTerms(currentTerm, nestedLoop,Name) { //Loop count for formatting purpose. var loop = nestedLoop + 1; //Get Term child terms var terms = currentTerm.get_terms(); context.load(terms); context.executeQueryAsync( function () { var termsEnum = terms.getEnumerator(); while (termsEnum.moveNext()) { var newCurrentTerm = termsEnum.get_current(); var termName = newCurrentTerm.get_name(); termId = newCurrentTerm.get_id(); //Tab Out format. for (var i = 0; i < loop; i++) { termsList += "\t"; //alert(termsList); } termsList += termName + ": " + termId; //console.log("termset retrieving now"); console.log(termName); sArray.push(termName); $("#autocompleteTextProcessArea").autocomplete({ source: sArray }); //alert(termsList); //Check if term has child terms. if (currentTerm.get_termsCount() > 0) { //Term has sub terms. recursiveTerms(newCurrentTerm, loop); } } }, function () { //failure to load terms } ); } function onTaxonomyFailed(sender, args) { alert('Taxonomy Error:' + args.get_message()); } }, 2000); return $.when(dfrd1, dfrd2).done(function() { // Both asyncs tasks are done //console.log('Both are Done.'); }).promise(); } function bindCategories() { $.ajax({ url: _siteUrlContext + "/_api/web/lists/getbytitle('Categories')/items", type: "GET", async:false, headers: { "Accept": "application/json;odata=verbose", "Content-Type": "application/json;odata=verbose" //"X-RequestDigest": $("#__REQUESTDIGEST").val() }, success: function(data){ var count = data.d.results.length; for(var i = 0;i < count; i++) cArray.push(data.d.results[i].Title); $("#autocompleteTextBoxCategories").autocomplete({ source: cArray }); }, error: function (err){ alert("Failed to get list items."); console.log(JSON.stringify(err)); } }); } spApp = angular.module('spng-App', ['ngSanitize']); //Create a Controller spApp.controller('spng-WebCtrl', function($scope, $http) { $scope.getListDetails = function() { var termsArrayDisplay = []; var strTeamArea = "Guideline [AGP]"; var Title = "June 2017"; var clientContext = new SP.ClientContext(siteUrl); var oList = clientContext.get_web().get_lists().getByTitle('Posts'); //Microsoft.Office.Server.ReputationModel.Reputation.setLike(clientContext, listId, itemId, isLike); var camlQuery = new SP.CamlQuery(); //var viewXml ="" + strTeamArea + "" + Title + ""; var viewXml =""; camlQuery.set_viewXml(viewXml); collListItem = oList.getItems(camlQuery); //clientContext.load(collListItem,'Title', 'Id','Body'); clientContext.load(collListItem); //clientContext.executeQueryAsync(Function.createDelegate(this, this.onQueryTfSucceeded), Function.createDelegate(this, this.onQueryTfFailed)); clientContext.executeQueryAsync(function () { var idArr = []; var listItemInfo = ''; var listItemEnumerator = collListItem.getEnumerator(); while (listItemEnumerator.moveNext()) { var oListItem = listItemEnumerator.get_current(); //alert(oListItem.get_id()); //termsArray.push(oListItem.get_id()); var ItemTitle=oListItem.get_item('Title'); var ID=oListItem.get_id(); var PublishedDate=oListItem.get_item('PublishedDate'); var Body=oListItem.get_item('Body'); var LC = oListItem.get_item("LikesCount") == null ? "0" : String(oListItem.get_item("LikesCount")); likedByy = oListItem.get_item('LikedBy'); var Isliked = false; if(likedByy != null) { if(LC !=null && LC != undefined) { for(var i=0;i $scope.LikePage = function() { var layoutsRoot = '/_layouts/15/'; $(function() { $.getScript(layoutsRoot + "MicrosoftAjax.js", function () { $.getScript(layoutsRoot + "SP.core.js", function () { $.getScript(layoutsRoot + "SP.Runtime.js", function () { $.getScript(layoutsRoot + "SP.js", function () { $.getScript(layoutsRoot + "SP.Publishing.js", function () { $.getScript(layoutsRoot + "Reputation.js", GetLikeCount) }); }); }); }); }); }); var clientContext = new SP.ClientContext(siteUrl); var oList = clientContext.get_web().get_lists().getByTitle('Posts'); EnsureScriptFunc('reputation.js', 'Microsoft.Office.Server.ReputationModel.Reputation', function () { Microsoft.Office.Server.ReputationModel.Reputation.setLike(clientContext,sList,sItem); context.executeQueryAsync(function () { GetLikeCount(); }, function (sender, args) { alert('Failed to like this. Error:' + args.get_message()); }); }); } function GetLikeCount() //Check to see if liked, get liked count, and if current user likes the item { context = new SP.ClientContext(siteUrl); list = context.get_web().get_lists().getById(sList); thisItem = list.getItemById(sItem); context.load(thisItem,"Title","ID","LikesCount","LikedBy"); context.executeQueryAsync(Function.createDelegate(this,onSuccess),Function.createDelegate(this,onFailure)); } function onFailure(sender, args) { alert('Failed to get lists items. Error:' + args.get_message()); } function onSuccess(sender, args) { var itemc = thisItem.get_item('LikesCount'); var likedBy = thisItem.get_item('LikedBy'); var ID = thisItem.get_item('ID'); console.log("ID="+ID); if(itemc == null) { itemc = 0; } var isliked = getisLiked(likedBy); if(isliked == true) { likeDisplay = true; itemc = itemc-1; } else { likeDisplay = false; itemc = itemc+1; } if(itemc < 0) itemc = 0; thisItem.set_item('LikesCount',itemc); //thisItem.set_item('LikedBy','Saroj.Panda@shell.com'); //thisItem.set_item(SP.FieldLookupValue.set_lookupId(44)); thisItem.set_item('LikedBy',44); //item.update(); thisItem.update(); context.executeQueryAsync(function () { alert('Like Updated in Posts List.'); }, function (sender, args) { console.log(args.get_message()); } ); ChangeLikeText(ID,likeDisplay,itemc); } function ChangeLikeText(ID,likeDisplay, count) { //Manage the DOM elements and presentation var text0 = ""; if (likeDisplay == true) { $("#fldr"+ID+" a.IdLike").text('Unlike'); text0 = 'Like'; } else { $("#fldr"+ID+" a.IdLike").text('Like'); text0 = 'Unlike'; } var htmlstring = "" + " " + text0 + " "; if (count > 0) { $("#fldr"+ID+" a.IdLike").html(htmlstring); $("#fldr"+ID+" .LikesCounts").html(String(count)); } else { $("#fldr"+ID+" a.IdLike").html(""); } } var getisLiked = function (likedby) { var isliked = false; if (likedby !== null && likedby !== undefined) { for (var i = 0; i < likedby.length; i++) { var like = likedby[i]; if (like.get_lookupId() === _spPageContextInfo.userId) { isliked = true; break; } } } return isliked; }; });