среда, 31 августа 2011 г.

Видео доклада SharePoint Ribbon и Office 365

Видеозапись моего доклада с SharePoint Conference Russia наконец-то опубликована (как, впрочем, и видеозаписи докладов всех других участников)!

Те, кто еще не смотрел, могут посмотреть.

вторник, 30 августа 2011 г.

Метаданные для SPField на стороне клиента

В недавнем посте я предлагал способ для запоминания метаданных SPField. И вот сегодня еще раз убедился, что пошел правильным путем.

Возникла задача, получить метаданные поля на стороне клиента, используя SharePoint Client Object Model. Конкретно, нужно было получить все поля, помеченные как содержащие E-mail - у пользователей для простановки этих отметок есть соответствующий интерфейс.

В итоге, пришел вот к такой простейшей функции:

function getFieldAttribute(field, metadataKey) {
    /// <summary>
    /// This function gets metadata key
    /// </summary>
    var xml = field.get_schemaXml();
    var domElement = CUI.NativeUtility.createXMLDocFromString(xml);
 
    var attribute;
 
    if (domElement.firstChild.getAttributeNS != null && domElement.firstChild.getAttributeNS != undefined)
        attribute = domElement.firstChild.getAttributeNS('my', metadataKey);
    else
        attribute = domElement.firstChild.getAttribute('p1:' + metadataKey);
 
    return attribute;
}
 

Как видите, всё довольно просто. Когда расширять и интегрировать созданное решение просто - это хороший признак того, что делаешь правильно.

Использовать - примерно так:

var ctx = new SP.ClientContext.get_current();
var list = ctx.get_web().get_lists().getById(SP.ListOperation.Selection.getSelectedList());
 
var fields = list.get_fields();
ctx.load(fields);
 
// ... load items or whatever you need here
 
ctx.executeQueryAsync(onSuccess, onFailure);
 
function onSuccess() {
    var emailFields = new Array();
 
    var fieldEnumerator = fields.getEnumerator();
    while (fieldEnumerator.moveNext()) {
 
        var field = fieldEnumerator.get_current();
        var attribute = getFieldAttribute(field,'MyFieldType');
        if (attribute == 'Email')
            emailFields.push(field.get_internalName());
    }
}
 

среда, 10 августа 2011 г.

SharePoint и XSLT: содержание книги

Думаю о возможности написания книги про XsltListViewWebPart. Материала уже набирается немало, ниже приведено примерное содержание того, что я уже могу написать.