вторник, 10 сентября 2013 г.

Работа с SharePoint 2010 Client Side Object Model через Javascript

Про SharePoint 2010 Client Side Object Model (CSOM)  уже написано и съедено немало.
Я лишь постараюсь каснуться вопроса применения Javascript для работы с CSOM на ASPX-странице, расположенной в библиотеке на портале SharePoint (Site page).

Создание новой aspx-страницы в SharePoint Designer 2010

Для начала нам потребуется создать пустую aspx-страницу без мастерпейджа. Для этого открываем SharePoint Designer 2010, выбираем нужную библиотеку, в которой наша страница будет расположена (например "Страницы сайта), и через ленту добавляем новую страницу, как показано на рисунке ниже. Отмечу, что страница уже будет содержать минимальную html-разметку.

Дополнительная разметка

В начало страницы нам также нужно добавить секции Import и Register:

<%@ Import Namespace="Microsoft.SharePoint" %> <%@ Register Tagprefix="SharePoint" Namespace="Microsoft.SharePoint.WebControls" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Register Tagprefix="Utilities" Namespace="Microsoft.SharePoint.Utilities" Assembly="Microsoft.SharePoint, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>      
<%@ Register Tagprefix="asp" Namespace="System.Web.UI" Assembly="System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" %>      

Минимальный набор js-файлов для работы с CSOM

В заголовок страницы нужно добавить самый главный файл - "core.js":
 
<SharePoint:ScriptLink ID="ScriptLink1" Language="javascript" Name="core.js" OnDemand="true" runat="server"/>

Далее в заголовок добавляем ссылки на остальные js-файлы для корректной работы CSOM:
 

<script type="text/javascript" src="/_layouts/MicrosoftAjax.js"></script>
<script type="text/javascript" src="/_layouts/sp.core.debug.js"></script>
<script type="text/javascript" src="/_layouts/sp.runtime.debug.js"></script>
<script type="text/javascript" src="/_layouts/sp.debug.js"></script>


Напишем простой метод, в котором реализуем отображение логина текущего пользователя.
 
    <script type="text/javascript">
        var currentUser;
        function getWebProperties() {
            var userContext1 = new SP.ClientContext.get_current();
            currentUser = userContext1.get_web().get_currentUser();
            userContext1.load(currentUser);
            userContext1.executeQueryAsync(Function.createDelegate(this, this.onSuccess),
            Function.createDelegate(this, this.onFail));
        }
        function onSuccess(sender, args) {
            alert('current user: ' + currentUser.get_loginName().toLowerCase());
        }
        function onFail(sender, args) {
            alert('failed to current user. Error: ' + args.get_message());
        }
    </script>

В итоге исходный код страницы принимает вид:

Результат

После сохранения страницы открываем её в веб-браузере и видим пустую страницу с кнопкой "Get user".
Нажимаем на кнопку и видим сообщение, отображающее логин текущего пользователя!

Пример страницы можно загрузить отсюда.

Полезные ссылки


Комментариев нет:

Отправить комментарий