Использование клиентского элемента управления хрома в надстройках SharePoint
Элемент управления хрома в SharePoint позволяет использовать стиль заголовка определенного сайта SharePoint в надстройке, не регистрируя серверную библиотеку и не применяя специальные технологии или средства. Чтобы использовать эту функцию, необходимо зарегистрировать библиотеку JavaScript SharePoint с помощью стандартного <script>
тега. Вы можете указать заполнитель с помощью HTML-элемента div, а затем настроить этот элемент управления, используя доступные параметры. Этот элемент управления наследует внешний вид от указанного веб-сайта SharePoint.
Предварительные требования для использования примеров в этой статье
Для выполнения действий, описанных в этом примере, вам необходимо следующее:
- Visual Studio 2015.
- среда разработки SharePoint (для локальных сценариев необходимо изолировать надстройку).
Инструкции по настройке подходящей вам среды разработки см. в разделе Два типа надстроек SharePoint (с размещением в SharePoint и у поставщика).
Ключевые понятия, с которыми необходимо ознакомиться перед использованием элемента управления хрома
Ниже перечислены полезные статьи, в которых описано, как использовать элемент управления хрома.
Название статьи | Описание |
---|---|
Надстройки SharePoint | Сведения о новой модели надстроек в SharePoint, с помощью которой можно создавать надстройки — небольшие и удобные в использовании решения для пользователей. |
Разработка пользовательского интерфейса для надстроек SharePoint | Сведения о параметрах и вариантах построения пользовательского интерфейса при создании надстроек SharePoint. |
Хост-сайты, сайты надстроек и компоненты SharePoint в SharePoint | Узнайте, в чем разница между хост-сайтами и сайтами надстроек. Узнайте, какие компоненты SharePoint можно включать в надстройку SharePoint, какие компоненты развертываются на хост-сайте, а какие на сайте надстройки и как развертывается сайт надстройки в изолированном домене. |
Пример кода. Использование элемента управления хрома в надстройке, размещенной в облаке
Размещенная в облаке надстройка включает по крайней мере один удаленный компонент. Дополнительные сведения см. в статье Выбор шаблонов для разработки и размещения надстройки SharePoint. Чтобы использовать элемент управления хрома в надстройке, размещенной в облаке, сделайте вот что:
- Создайте надстройку SharePoint и удаленные веб-проекты.
- Отправьте параметры конфигурации по умолчанию в строке запроса.
- Добавьте в веб-проект веб-страницу.
На следующем рисунке показана удаленная веб-страница с элементом управления хрома.
Удаленная веб-страница с элементом управления хрома
Создание надстройки SharePoint и удаленных веб-проектов
Откройте Visual Studio 2015 от имени администратора. Для этого щелкните правой кнопкой мыши значок Visual Studio 2015 в меню Пуск и выберите Запуск от имени администратора.
Создайте проект, используя шаблон Надстройка SharePoint.
На следующем рисунке показано расположение шаблона Надстройка SharePoint в Visual Studio 2015: Шаблоны>Visual C#>Office/SharePoint>Надстройки Office.
Шаблон надстройки SharePoint в Visual Studio
Укажите URL-адрес веб-сайта SharePoint, который планируется использовать для отладки.
Выберите Размещено у поставщика в качестве варианта размещения надстройки. Пример кода с размещением в SharePoint: SharePoint-Add-in-JSOM-BasicDataOperations.
Когда мастер завершит работу, структура в обозревателе решений будет напоминать структуру, показанную на следующем рисунке.
Проекты "Надстройка для SharePoint" в обозревателе решений
Отправка параметров конфигурации по умолчанию в строке запроса
Откройте файл Appmanifest.xml в редакторе манифеста.
Добавьте в строку запроса маркер {StandardTokens} и дополнительный параметр SPHostTitle. На следующем рисунке показан редактор манифеста с настроенными параметрами строки запроса.
Редактор манифеста с параметрами строки запроса для элемента управления хрома
Элемент управления хрома автоматически принимает из строки запроса следующие значения:
- SPHostUrl;
- SPHostTitle;
- SPAppWebUrl;
- SPLanguage.
Маркер {StandardTokens} включает маркеры SPHostUrl и SPAppWebUrl.
Добавление в веб-проект страницы с элементом управления хрома
Щелкните правой кнопкой мыши веб-проект и добавьте новую веб-форму.
Скопируйте следующие исправления и вставьте их на страницу ASPX. Исправления выполняют следующие действия:
загружает библиотеку AJAX из сети доставки содержимого Майкрософт (CDN);
Загружает библиотеку jQuery из сети CDN Майкрософт.
загружает файл SP.UI.Controls.js с помощью функции jQuery getScript;
определяет функцию обратного вызова для события onCssLoaded;
подготавливает параметры для элемента управления хрома;
инициализирует элемент управления хрома.
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Chrome control host page</title> <script src="//ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js" type="text/javascript"> </script> <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"> </script> <script type="text/javascript" src="ChromeLoader.js"> </script> <script type="text/javascript"> "use strict"; var hostweburl; //load the SharePoint resources $(document).ready(function () { //Get the URI decoded URL. hostweburl = decodeURIComponent( getQueryStringParameter("SPHostUrl") ); // The SharePoint js files URL are in the form: // web_url/_layouts/15/resource var scriptbase = hostweburl + "/_layouts/15/"; // Load the js file and continue to the // success handler $.getScript(scriptbase + "SP.UI.Controls.js", renderChrome) }); // Callback for the onCssLoaded event defined // in the options object of the chrome control function chromeLoaded() { // When the page has loaded the required // resources for the chrome control, // display the page body. $("body").show(); } //Function to prepare the options and render the control function renderChrome() { // The Help, Account and Contact pages receive the // same query string parameters as the main page var options = { "appIconUrl": "siteicon.png", "appTitle": "Chrome control add-in", "appHelpPageUrl": "Help.html?" + document.URL.split("?")[1], // The onCssLoaded event allows you to // specify a callback to execute when the // chrome resources have been loaded. "onCssLoaded": "chromeLoaded()", "settingsLinks": [ { "linkUrl": "Account.html?" + document.URL.split("?")[1], "displayName": "Account settings" }, { "linkUrl": "Contact.html?" + document.URL.split("?")[1], "displayName": "Contact us" } ] }; var nav = new SP.UI.Controls.Navigation( "chrome_ctrl_placeholder", options ); nav.setVisible(true); } // Function to retrieve a query string value. // For production purposes you may want to use // a library to handle the query string. function getQueryStringParameter(paramToRetrieve) { var params = document.URL.split("?")[1].split("&"); var strParams = ""; for (var i = 0; i < params.length; i = i + 1) { var singleParam = params[i].split("="); if (singleParam[0] == paramToRetrieve) return singleParam[1]; } } </script> </head> <!-- The body is initally hidden. The onCssLoaded callback allows you to display the content after the required resources for the chrome control have been loaded. --> <body style="display: none"> <!-- Chrome control placeholder --> <div id="chrome_ctrl_placeholder"></div> <!-- The chrome control also makes the SharePoint Website stylesheet available to your page --> <h1 class="ms-accentText">Main content</h1> <h2 class="ms-accentText">The chrome control</h2> <div id="MainContent"> This is the page's main content. You can use the links in the header to go to the help, account or contact pages. </div> </body> </html>
Элемент управления хрома также можно использовать декларативным способом. В следующем примере кода в разметке HTML элемент управления объявляется без использования кода JavaScript для его настройки и инициализации. Эта разметка выполняет следующие задачи:
предоставляет заполнитель для файла JavaScript SP.UI.Controls.js;
динамически загружает файл SP.UI.Controls.js;
предоставляет заполнитель для элемента управления хрома и задает его параметры (разметку HTML).
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Chrome control host page</title> <script src="http://ajax.aspnetcdn.com/ajax/4.0/1/MicrosoftAjax.js" type="text/javascript"> </script> <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"> </script> <script type="text/javascript"> var hostweburl; // Load the SharePoint resources. $(document).ready(function () { // Get the URI decoded add-in web URL. hostweburl = decodeURIComponent( getQueryStringParameter("SPHostUrl") ); // The SharePoint js files URL are in the form: // web_url/_layouts/15/resource.js var scriptbase = hostweburl + "/_layouts/15/"; // Load the js file and continue to the // success handler. $.getScript(scriptbase + "SP.UI.Controls.js") }); // Function to retrieve a query string value. // For production purposes you may want to use // a library to handle the query string. function getQueryStringParameter(paramToRetrieve) { var params = document.URL.split("?")[1].split("&"); var strParams = ""; for (var i = 0; i < params.length; i = i + 1) { var singleParam = params[i].split("="); if (singleParam[0] == paramToRetrieve) return singleParam[1]; } } </script> </head> <body> <!-- Chrome control placeholder Options are declared inline. --> <div id="chrome_ctrl_container" data-ms-control="SP.UI.Controls.Navigation" data-ms-options= '{ "appHelpPageUrl" : "Help.html", "appIconUrl" : "siteIcon.png", "appTitle" : "Chrome control add-in", "settingsLinks" : [ { "linkUrl" : "Account.html", "displayName" : "Account settings" }, { "linkUrl" : "Contact.html", "displayName" : "Contact us" } ] }'> </div> <!-- The chrome control also makes the SharePoint Website style sheet available to your page. --> <h1 class="ms-accentText">Main content</h1> <h2 class="ms-accentText">The chrome control</h2> <div id="MainContent"> This is the page's main content. You can use the links in the header to go to the help, account or contact pages. </div> </body> </html>
Библиотека SP.UI.Controls.js автоматически отображает элемент управления, если обнаруживает атрибут data-ms-control="SP.UI.Controls.Navigation" в элементе div.
Изменение элемента StartPage в манифесте надстройки
Дважды щелкните файл AppManifest.xml в обозревателе решений.
В раскрывающемся меню Начальная страница выберите веб-страницу, на которой используется элемент управления хрома.
Сборка и запуск решения
Убедитесь, что проект надстройки SharePoint выбран как запускаемый проект.
Нажмите клавишу F5. (Обратите внимание, что после нажатия клавиши F5 Visual Studio выполняет сборку решения, развертывает надстройку и открывает для нее страницу разрешений.)
Нажмите кнопку Доверять.
Выберите значок надстройки ChromeControlCloudhosted.
При использовании элемента управления хрома на веб-страницах вы также можете использовать таблицу стилей веб-сайта SharePoint, как показано на следующем рисунке.
Таблица стилей веб-сайта SharePoint на странице
Устранение неполадок в решении
Проблема | Решение |
---|---|
Необработанное исключение SP не определен. | Убедитесь, что в браузере загружается файл SP.UI.Controls.js. |
Элемент управления хрома не выполняет обработку должным образом. | Элемент управления хрома поддерживает только режимы документов Internet Explorer 8 и более поздних версий. Убедитесь, что браузер отображает страницу в режиме документов Internet Explorer 8 или более поздних версий. |
Ошибка сертификата. | Установите для свойства SSL включен веб-проекта значение false. В проекте надстройки SharePoint задайте для свойства Веб-проект значение None (Нет), а затем снова укажите в нем имя веб-проекта. |
См. также
- Пример кода. Использование элемента управления хрома в надстройке, размещенной в облаке
- Пример кода. Использование элемента управления хрома и междоменной библиотеки (CSOM)
- Пример кода. Использование элемента управления хрома и междоменной библиотеки (REST)
- Создание компонентов взаимодействия с пользователем в SharePoint