Переместить термин в другую ветвь — JSOM

Мне нужно сделать что-то вроде этого. Ниже на изображении есть 3 термина, мне нужно переместить My Term 3 в My Term 1 (тогда My Term 3 станет подтермином для My Term 1.

введите здесь описание изображения

Как я могу добиться этого с помощью JSOM, 2013 Sharepoint. Здесь я использовал код, который использовал для повторного использования термина, но повторное использование означает просто совместное использование. Хотя я повторно использую этот термин и удаляю его позже, но он удаляет оба. Мне просто нужно переехать, есть идеи? MSDN не предоставляет метод для moveTerm..

function reuseTerm() {

    alert('check reuse');
    var sourceTermId = 'c0351a3d-5eec-454d-8bc6-4f3ac0992a84'; //Id of source Term
    var destTermId = '2085753f-2804-44c4-b16d-5b93cbbc989d';  //Id of Term below which a reused term will be created 

    var ctx = SP.ClientContext.get_current();
    var taxonomySession = SP.Taxonomy.TaxonomySession.getTaxonomySession(ctx);
    var sourceTerm = taxonomySession.getTerm(sourceTermId);
    var destTerm = taxonomySession.getTerm(destTermId);
    
    destTerm.reuseTerm(sourceTerm, true);//I need something like destTerm.moveTerm(sourceTerm, true);
   
    ctx.executeQueryAsync(
        function () {
            alert('Reused term has been created');
        },
        function (sender, args) {
            alert(args.get_message());
        });



}


person Chathura    schedule 12.03.2015    source источник


Ответы (1)


Используйте метод SP.Taxonomy.Term.move, чтобы переместить текущий Объект Term должен быть дочерним по отношению к другому Term.

Пример

function moveTerm(sourceTermId,targetTermId,success,error)
{
    var ctx = SP.ClientContext.get_current();
    var ts = SP.Taxonomy.TaxonomySession.getTaxonomySession(ctx);
    var termStore = ts.getDefaultSiteCollectionTermStore();
    var sourceTerm = termStore.getTerm(sourceTermId);
    var targetTerm = termStore.getTerm(targetTermId);
    sourceTerm.move(targetTerm);
    ctx.executeQueryAsync(success,error);
}

Использование

SP.SOD.registerSod('SP.ClientContext', SP.Utilities.Utility.getLayoutsPageUrl('sp.js'));
SP.SOD.registerSod('SP.Taxonomy.TaxonomySession', SP.Utilities.Utility.getLayoutsPageUrl('sp.taxonomy.js'));
SP.SOD.loadMultiple(['SP.ClientContext', 'SP.Taxonomy.TaxonomySession'], function(){

   var sourceTermId = 'source-term-guid';
   var targetTermId = 'target-term-guid';

   moveTerm(sourceTermId,targetTermId,
     function(){
        console.log(String.format('Term {0} has been moved under Term {0}',sourceTermId,targetTermId));
     },
     function(sender,args){
        console.log(args.get_message());
     });
});
person Vadim Gremyachev    schedule 12.03.2015
comment
Это работает, большое спасибо. Очень сложно найти ресурсы для таксономии в sharepoint 2013. Этим вы внесли большой вклад. - person Chathura; 12.03.2015