Как использовать функцию javascript getPeerUrl() в клиентской объектной модели Sharepoint 2013?

Я хочу использовать эту функцию https://msdn.microsoft.com/en-us/library/office/jj954403.aspx, чтобы получить французский URL-адрес из английского URL-адреса (я не могу просто изменить en на fr и наоборот).

Но у меня проблемы с функцией. Кажется, он дает мне 0 вместо фактического URL-адреса.

это мой код

function VariationHandler2() {


    var ctx = SP.ClientContext.get_current();
    var site = ctx.get_site();
    var rootWeb = site.get_rootWeb();
    var webProperties = rootWeb.get_allProperties();

    ctx.load(site);
    ctx.load(rootWeb);
    ctx.load(webProperties);
    ctx.executeQueryAsync(

        function() {
            var varLabelsListId = webProperties.get_item('_VarLabelsListId');

            var labelsList = rootWeb.get_lists().getById(varLabelsListId);
            var labelItems = labelsList.getItems(SP.CamlQuery.createAllItemsQuery());

            ctx.load(labelItems);
            ctx.executeQueryAsync(

                function() {
                    var url = rootWeb.get_serverRelativeUrl();

                    var object = SP.Publishing.Variations.getPeerUrl(ctx, "/en/Pages/default.aspx", "fr");
                    alert(object);
                    alert(object.get_value());
                    alert(JSON.stringify(object));

                },
                function() {
                }
            );
        },
        function() {
        }
    );  
}

но я не получаю никаких полезных результатов. Кто-нибудь знает, как заставить его работать?

Спасибо


person omega    schedule 03.07.2015    source источник


Ответы (1)


Я добавил следующий код в редактор контента на странице публикации на сайте с вариантами, и это сработало:

<script src="/_layouts/15/sp.publishing.js" type="text/javascript"></script> 
<script type="text/javascript">
$(document).ready(function() {
    ExecuteOrDelayUntilScriptLoaded(VariationHandler, "sp.js"); 
});

function VariationHandler() {
    ExecuteOrDelayUntilScriptLoaded(VariationHandler2, "SP.publishing.js"); 
}


function VariationHandler2() {
        var ctx = SP.ClientContext.get_current();
        var object = SP.Publishing.Variations.getPeerUrl(ctx, "/en/Pages/default.aspx", "fr");
        ctx.executeQueryAsync(

            function() {
                alert(object.get_value());
            }
        );  
    }
</script>
person Patrick Clarke    schedule 03.07.2015
comment
да, я получил решение из своего поста здесь sharepoint.stackexchange.com/questions/148078/ - person omega; 03.07.2015