Получить контактный адрес электронной почты владельца страницы и отобразить его на главной странице SharePoint 2010

Я разработал решение с несколькими эталонными страницами/макетами страниц в качестве функций для набора коллекций сайтов публикации SharePoint 2010.

Одним из последовательных запросов является возможность получить контактный адрес электронной почты владельца страницы и отобразить его в нижнем колонтитуле мастер-страницы. Если контактный адрес электронной почты страницы не введен, мне нужно получить данные владельца страницы из средства выбора людей и получить контактный адрес электронной почты оттуда.

Я не хочу добавлять каждый отдельный макет страницы публикации в свое решение и вручную добавлять столбец «Контактный адрес электронной почты» в заполнитель, что кажется мне безумием. Я полагаю, что должен быть способ получить данные о владельце страницы из мастер-страницы, но я не могу этого понять. Я начал искать библиотеку jQuery SPServices, но пока не смог разобраться и там.

Есть ли у кого-нибудь опыт добавления контактного адреса электронной почты с использованием предоставленной контактной информации владельца страницы на главной странице?


person Will Lanni    schedule 30.11.2012    source источник


Ответы (1)


ОК, для решения этой проблемы вам потребуется jQuery 1.7.x+ и библиотека jQuery SPServices версии 0.7.2 или установлено на вашем сайте.

Используйте GetListItems в качестве операции из SPServices.

Я ищу страницы в каталоге Pages, поэтому listName — «Страницы».

Поля представления CAML — это в основном столбцы для PublishingContactEmail и PublishingContact. Я нашел тех, кто использует версию компоновщика CAML u2u 4.0.0.0.

Переменные ows_ можно найти в представлении xml объекта POST в firebug.

ows_PublishingContact возвращает длинную неприятную строку информации о контакте. К счастью, адрес электронной почты окружен ,#, что упростило его разбиение на массив, а затем поиск по электронной почте @, но именно поэтому он там.

function get_page_contact_email() {    
    var thisPageID = _spPageContextInfo.pageItemId;    
    var e;    
    $().SPServices({    
        operation: "GetListItems",    
        async: false,    
        listName: "Pages",    
        CAMLViewFields: "<ViewFields><FieldRef Name='PublishingContactEmail' /><FieldRef Name='PublishingContact' /></ViewFields>",    
        CAMLQueryOptions: "<QueryOptions><ExpandUserField>True</ExpandUserField></QueryOptions>",    
        completefunc: function (xData, Status) {    
            $(xData.responseXML).SPFilterNode("z:row").each(function () {    
                if (thisPageID == $(this).attr("ows_ID")) {    
                    if ($(this).attr("ows_PublishingContactEmail")) { // if page email is set    
                        e = $(this).attr("ows_PublishingContactEmail");    
                    } else if ($(this).attr("ows_PublishingContact")) { //otherwise use contact info    
                        var contact = $(this).attr("ows_PublishingContact").split(",#");    
                        for (var c = 0; c < contact.length; c++) {    
                            if (contact[c].indexOf("@") != -1) {    
                                e = contact[c];    
                            }    
                        }    
                    } else { //or nothing is set.    
                        e = false;    
                    }    
                }    
            });    
        }    
    });    
    return e;    
}
person Will Lanni    schedule 03.12.2012