Instantly share code, notes, and snippets.
Created
September 4, 2016 09:39
-
Star
0
(0)
You must be signed in to star a gist -
Fork
0
(0)
You must be signed in to fork a gist
-
Save dev-kperera/a7de5ea23c0a441f89e66bf119e2688f to your computer and use it in GitHub Desktop.
Updating SharePoint list or library field which consist of MMS (Managed Metadata or Taxonomy) column with Angular JS and JSOM
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
(function () { | |
'use strict'; | |
// define controller | |
var controllerId = "MMSDevCtrl"; | |
angular | |
.module('app') | |
.controller(controllerId, ['$q', mmsDevController]); | |
// create controller | |
function mmsDevController($q) { | |
//global var | |
var vm = this; | |
//value definitions | |
var siteUrl = 'http://win2012/sites/MSSDevTest'; | |
var listName = 'MyDocumentLibrary'; | |
var fieldName = 'MMSColName'; //MMS Column name | |
var itemIdUpdating = 1; // Item to be udated | |
var termLabel = 'IT'; //''; | |
//add metadata column to sharepoint | |
vm.submitMetadata = function () { | |
// function for update managed metadata column | |
SetManagedMetaDataField(); | |
} | |
// Setting managed metadata to SharePoint List or Library | |
function SetManagedMetaDataField() { | |
var context = new SP.ClientContext(siteUrl); | |
//Get item form ID | |
var list = context.get_web().get_lists().getByTitle(listName); //listName | |
var item = list.getItemById(itemIdUpdating); //itemID | |
var field = list.get_fields().getByInternalNameOrTitle(fieldName); //fieldName | |
var txField = context.castTo(field, SP.Taxonomy.TaxonomyField); | |
//loading context | |
context.load(field); | |
context.load(txField); | |
context.load(item); | |
//excute async | |
context.executeQueryAsync( | |
Function.createDelegate(this, function () { | |
var termSetId = txField.get_termSetId().toString(); | |
var termId; | |
getTermIdForTerm(function success(id) { | |
termId = id; | |
var value = item.get_item(fieldName); | |
var terms = new Array(); | |
// If column in multivalued | |
if (txField.get_allowMultipleValues()) { | |
var enumerator = value.getEnumerator(); | |
while (enumerator.moveNext()) { | |
var tv = enumerator.get_current(); | |
terms.push(tv.get_wssId() + ";#" + tv.get_label() + "|" + tv.get_termGuid()); | |
} | |
terms.push("-1;#" + termLabel + "|" + termId); | |
termValueString = terms.join(";#"); | |
termValues = new SP.Taxonomy.TaxonomyFieldValueCollection(context, termValueString, txField); | |
txField.setFieldValueByValueCollection(item, termValues); | |
} | |
else {// If column in single valued | |
var termValue = new SP.Taxonomy.TaxonomyFieldValue(); | |
termValue.set_label(termLabel); | |
termValue.set_termGuid(termId); | |
termValue.set_wssId(-1); | |
txField.setFieldValueByValue(item, termValue); | |
} | |
// Define other columns | |
item.set_item('Title', 'New Item with good hope!'); | |
var dateValue = new Date('28-8-2016'); | |
item.set_item('DateTimeColumn', dateValue); | |
// Update item | |
item.update(); | |
//Execute query | |
context.executeQueryAsync( | |
function () { | |
console.log('field updated with MMS column #TechCentro'); | |
}, function (sender, args) { | |
console.error(args.get_message() + '\n' + args.get_stackTrace()); | |
}); | |
}, function (sender, args) { | |
console.log(args.get_message() + '\n' + args.get_stackTrace()); | |
}, context, termLabel, termSetId); | |
}) | |
, Function.createDelegate(this, function (err) { | |
console.error(err.get_message()); | |
})); | |
} | |
// Getting ID of the Term | |
function getTermIdForTerm(success, error, clientContext, term, termSetId) { | |
var termId = ""; | |
var tSession = SP.Taxonomy.TaxonomySession.getTaxonomySession(clientContext); | |
var ts = tSession.getDefaultSiteCollectionTermStore(); | |
var tset = ts.getTermSet(termSetId); | |
var lmi = new SP.Taxonomy.LabelMatchInformation(clientContext); | |
lmi.set_lcid(1033); | |
lmi.set_trimUnavailable(true); | |
lmi.set_termLabel(term); | |
var termMatches = tset.getTerms(lmi); | |
//contexr loading with taxanomy values | |
clientContext.load(tSession); | |
clientContext.load(ts); | |
clientContext.load(tset); | |
clientContext.load(termMatches); | |
clientContext.executeQueryAsync( | |
function () { | |
if (termMatches && termMatches.get_count() > 0) | |
termId = termMatches.get_item(0).get_id().toString(); | |
success(termId); | |
}, function (sender, args) { | |
error(args); | |
}); | |
} | |
}; | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment