среда, 12 января 2011 г.

При открытии вновь созданного приложения возникает “Ошибка доступа к БД конфигурации”

Конфигурация. Учетная запись spsfrm используется службами ферми. Учетная запись spsdeploy используется для выполнения работ по развертыванию. Учетная запись spssrv используется для запуска пула приложений рабочего веб-приложения. После создания данного приложения и попытки его открыть выводится ошибка “Ошибка доступа к БД конфигурации”.

В журнале SharePoint ошибка описана так:

01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          880i    High        System.Data.SqlClient.SqlException: Login failed for user 'domain\spssrv'.     в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)     в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)     в System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)     в System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)     в System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)     в System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFail...    
01/12/2011 11:22:56.51*    w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          880i    High        ...over(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)     в System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)     в System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)     в System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)     в System.Data.ProviderBase.DbConnectionF...    
01/12/2011 11:22:56.51*    w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          880i    High        ...actory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)     в System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)     в System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)     в System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)     в System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)     в System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)     в System.Data.SqlClient.SqlConnection.Open()     в Microsoft.SharePoint.Utilities.SqlSession.OpenConnection()    
01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          880k    High           в Microsoft.SharePoint.Utilities.SqlSession.ExecuteReader(SqlCommand command, CommandBehavior behavior, SqlQueryData monitoringData, Boolean retryForDeadLock)     в Microsoft.SharePoint.Utilities.SqlSession.ExecuteReader(SqlCommand command, Boolean retryForDeadLock)     в Microsoft.SharePoint.Utilities.SqlSession.ExecuteReader(SqlCommand command)     в Microsoft.SharePoint.Upgrade.SPDatabaseSequence.GetVersion(SPDatabase database, Guid id, Version defaultVersion, SqlSession session, SPDatabaseSequence sequence)     в Microsoft.SharePoint.Upgrade.SPDatabaseWssSequence.get_BuildVersion()     в Microsoft.SharePoint.Upgrade.SPSequence.get_CanUpgrade()     в Microsoft.SharePoint.Upgrade.SPUpgradeSession.CanUpgrade(Object o)     в Microsoft.SharePoint.Administration.SPPersistedUpgradableObjec...    
01/12/2011 11:22:56.51*    w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          880k    High        ...t.get_CanUpgrade()     в Microsoft.SharePoint.Upgrade.SPUpgradeSession.ReflexiveCanUpgrade(Object o)     в Microsoft.SharePoint.Upgrade.SPUpgradeSession.NeedsUpgrade(Object o, Boolean bRecurse)     в Microsoft.SharePoint.Administration.SPPersistedUpgradableObject.get_NeedsUpgrade()     в Microsoft.SharePoint.Administration.SPPersistedUpgradableObject.ValidateBackwardsCompatibility()     в Microsoft.SharePoint.Administration.SPConfigurationDatabase.Initialize(SqlConnectionStringBuilder connectionString, Boolean enableCaching, Boolean checkCompatibility, Boolean bindRequestGuid)     в Microsoft.SharePoint.Administration.SPConfigurationDatabase.Initialize(SqlConnectionStringBuilder connectionString, Boolean enableCaching, Boolean checkCompatibility)     в Microsoft.SharePoint.Administration.S...    
01/12/2011 11:22:56.51*    w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          880k    High        ...PConfigurationDatabase.get_Local()     в Microsoft.SharePoint.Administration.SPFarm.FindLocal(SPFarm& farm, Boolean& isJoined)     в Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.EnsureInitialize(HttpRequest request)     в Microsoft.SharePoint.ApplicationRuntime.SPRequestModule.BeginRequestHandler(Object oSender, EventArgs ea)     в System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute()     в System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously)     в System.Web.HttpApplication.PipelineStepManager.ResumeSteps(Exception error)     в System.Web.HttpApplication.BeginProcessRequestNotification(HttpContext context, AsyncCallback cb)     в System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7W...    
01/12/2011 11:22:56.51*    w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          880k    High        ...orkerRequest wr, HttpContext context)     в System.Web.Hosting.PipelineRuntime.ProcessRequestNotificationHelper(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)     в System.Web.Hosting.PipelineRuntime.ProcessRequestNotification(IntPtr managedHttpContext, IntPtr nativeRequestContext, IntPtr moduleData, Int32 flags)      
01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          880j    High        SqlError: 'Login failed for user 'domain\spssrv'.'    Source: '.Net SqlClient Data Provider' Number: 18456 State: 1 Class: 14 Procedure: '' LineNumber: 65536 Server: '192.168.10.15'    
01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          3351    Critical    SQL database login for 'SharePoint_Config' on instance '192.168.10.15' failed. Additional error information from SQL Server is included below.  Login failed for user 'domain\spssrv'.    
01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          tzku    High        ConnectionString: 'Data Source=192.168.10.15;Initial Catalog=SharePoint_Config;Integrated Security=True;Enlist=False;Asynchronous Processing=False;Connect Timeout=15'    ConnectionState: Closed ConnectionTimeout: 15    
01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Upgrade                           fbv7    Unexpected    [w3wp] [SPUpgradeSession] [ERROR] [12.01.2011 11:22:56]: CanUpgrade [SPConfigurationDatabase] failed.    
01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Upgrade                           fbv7    Unexpected    [w3wp] [SPUpgradeSession] [ERROR] [12.01.2011 11:22:56]: Exception: Login failed for user 'domain\spssrv'.    
01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Upgrade                           fbv7    Unexpected    [w3wp] [SPUpgradeSession] [ERROR] [12.01.2011 11:22:56]:    в System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)     в System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)     в System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)     в System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK)     в System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)     в System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host,...    
01/12/2011 11:22:56.51*    w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Upgrade                           fbv7    Unexpected    ... String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)     в System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)     в System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)     в System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)     в System.Data.ProviderBase.DbConnectionFactory.CreatePool...    
01/12/2011 11:22:56.51*    w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Upgrade                           fbv7    Unexpected    ...edConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)     в System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)     в System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)     в System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)     в System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)     в System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)     в System.Data.SqlClient.SqlConnection.Open()     в Microsoft.SharePoint.Utilities.SqlSession.OpenConnection()     в Microsoft.SharePoint.Utilities.SqlSession.ExecuteReader(SqlCommand command, CommandB...    
01/12/2011 11:22:56.51*    w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Upgrade                           fbv7    Unexpected    ...ehavior behavior, SqlQueryData monitoringData, Boolean retryForDeadLock)     в Microsoft.SharePoint.Utilities.SqlSession.ExecuteReader(SqlCommand command, Boolean retryForDeadLock)     в Microsoft.SharePoint.Utilities.SqlSession.ExecuteReader(SqlCommand command)     в Microsoft.SharePoint.Upgrade.SPDatabaseSequence.GetVersion(SPDatabase database, Guid id, Version defaultVersion, SqlSession session, SPDatabaseSequence sequence)     в Microsoft.SharePoint.Upgrade.SPDatabaseWssSequence.get_BuildVersion()     в Microsoft.SharePoint.Upgrade.SPSequence.get_CanUpgrade()     в Microsoft.SharePoint.Upgrade.SPUpgradeSession.CanUpgrade(Object o)    
01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Upgrade                           fbv7    Medium      [w3wp] [SPUpgradeSession] [DEBUG] [12.01.2011 11:22:56]: Cannot upgrade [SPConfigurationDatabase].    
01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Upgrade                           fbv7    Medium      [w3wp] [SPUpgradeSession] [DEBUG] [12.01.2011 11:22:56]: Skip [SPConfigurationDatabase] NeedsUpgrade.    
01/12/2011 11:22:56.51     w3wp.exe (0x1D64)                           0x1D90    SharePoint Foundation             Database                          tzku    High        ConnectionString: 'Data Source=192.168.10.15;Initial Catalog=SharePoint_Config;Integrated Security=True;Enlist=False;Asynchronous Processing=False;Connect Timeout=15'    ConnectionState: Closed ConnectionTimeout: 15    

Как и указано в technet, Учетная запись spssrv имеет права на базу данных конфигурации в роли WSS_Content_Application_Pools:

image

а на базу данных содержимого в роли dbowner:

image

Оказывается, в дополнение к требуемым полномочиям учетной записи, описанным в technet, необходимо еще предоставить учетной записи роль сервера public:

image

После этого приложение сразу начинает работать.

воскресенье, 9 января 2011 г.

Брэндинг портала. ч.1. Разработка оформления

Этой статьей я открываю трилогию, в которой опишу один из проверенных подходов к брэндингу портала на SharePoint.

Первая часть посвящена дизайнерам. Конечно, в данной статье я не собираюсь приводить общие рекомендации по графическому дизайну сайтов. Приведу только рекомендации, специфические для разработки сайта, который будет реализован на SharePoint 2010.

Рубрикаторы (меню)

Механизмы SharePoint позволяют реализовать следующие виды рубрикаторов.

Глобальное меню

Например, такое:

clip_image002

Текущее меню

Например, такое:

clip_image003

Облако тегов

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

Зоны веб-частей

Для удобства представления сервисов страницы портала снабжаются зонами веб-частей (портлетов). При разработке дизайна запланируйте размещение этих зон.

При этом учитывайте, что зона веб-частей может иметь либо вертикальную ориентацию:

image

Либо горизонтальную:

image

Заголовки веб-частей

Продумайте, как будет выглядеть заголовок веб-части

clip_image008

Списки

Наиболее распространены веб-части списков. Продумайте, как они будут оформлены:

clip_image010

Лента

Лента инструментов содержит необходима для обеспечения базовой функциональности. Поэтому рекомендую вам сразу заложить в графическом дизайне скрывающуюся ленту редактора:

clip_image012

Пользователям с ограниченным доступом ее не обязательно видеть, поэтому она может быть визуально доступна только избранным.

Под ней имеет смысл расположить панель добавления веб-частей:

clip_image014

А справа – панель настройки веб-частей:

clip_image015

Авторизация

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

Например, можно расположить такой элемент в правом верхнем углу страницы.

Для неавторизованного пользователя:

clip_image016

Для авторизованного можно отобразить имя пользователя, при нажатии на которое выпадает меню:

clip_image017

Хлебные крошки

Одним из удобных элементов навигации по любой иерархии является инструмент «Хлебные крошки» (breadcrumb), помогающие пользователю выбраться из запроектированной Вами непроходимой структуры сайта, как в сказке Гензель и Гретель братьев Гримм. В новой версии SharePoint, инструмент хлебные крошки по умолчанию свернут в кнопку clip_image018. При нажатии ее пользователем открывается путь в ступенчатом виде:

clip_image019

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

Поиск

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

Без выбора областей поиска:

clip_image020

С выбором области поиска:

clip_image021

А так же подумайте, как должны отображаться результаты поиска. По умолчанию в стандартном оформлении портала результаты поиска контента отображаются так:

clip_image022

Выпадающие меню

Некоторые выпадающие меню уже были рассмотрены выше. Продумайте также вид остальных.

Выпадающее меню элемента:

clip_image023

Выпадающее меню веб-части

clip_image024

Кнопки метаданных

Кнопки мета-данных могут быть либо в стандартном:

clip_image025

Либо в уменьшенном:

clip_image026

Продумайте их расположение и вид.

Диалоги

Продумайте внешний вид диалогов, т.е. всплывающих окон.

clip_image027

Заголовок страницы

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

Иконка сайта

Иконка сайта отображается на панели вкладок, в избранном и т.д.:

clip_image029

суббота, 8 января 2011 г.

Уменьшенные кнопки метаданных

А знали ли вы, что можно очень просто в оформлении страницы использовать не стандартные кнопки метаданных

image

а уменьшенные

image

Для этого в главной странице вместо тега <SharePoint:DelegateControl ControlId="GlobalSiteLink3" Scope="Farm" runat="server"/> нужно вставить <SharePoint:DelegateControl ControlId="GlobalSiteLink3-mini" Scope="Farm" runat="server"/>

среда, 5 января 2011 г.

При создании столбца система не реагирует

На странице fldNew.aspx при нажатии на кнопку ОК система не реагирует.

При этом наблюдаются ошибки Javacript. В журнале SharePoint, естественно, никаких ошибок.

Возможно, ошибка происходит потому, что не хватает некоторых скриптов и HTML-объектов.

Заполнитель PlaceHolderAdditionalPageHead разместите в теге <head>, убедившись, что для атрибута Visible не установлено значение false:

<asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server"/>

Заполнитель PlaceHolderUtilityContent разместите после закрытия тега </form>, убедившись, что для атрибута Visible не установлено значение false:

<asp:ContentPlaceHolder id="PlaceHolderUtilityContent" runat="server"/>

вторник, 4 января 2011 г.

Отображение ленты твиттера на странице SharePoint через RSS-канал

Например, для отражения микроблога компании или команды на странице портала, может потребоваться отображение ленты твиттера на странице SharePoint.

Для этого сначала узнайте rss-адрес твиттер-ленты: Перейдите на старый профиль:

image

image

Для моего микроблога это адрес: http://twitter.com/statuses/user_timeline/97246548.rss

Теперь добавьте не страницу SharePoint веб часть “Средство просмотра XML”.

В параметрах веб-части в поле XML-ссылка введите адрес rss-ленты и нажмите “Редактор XSL”:

image

В открывшееся окно введите XSL код

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
exclude-result-prefixes="xsl">
<xsl:output method="xml" omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="/">
<div>
<xsl:apply-templates select="rss/channel"/>
</div>
</xsl:template>
<xsl:template match="rss/channel">
<xsl:variable name="link" select="link"/>
<xsl:variable name="description" select="description"/>
<xsl:apply-templates select="item"/>
</xsl:template>
<xsl:template match="item">
<xsl:variable name="owner">
<xsl:value-of select="substring(/rss/channel/title,11)" />
</xsl:variable>
<xsl:variable name="item_link" select="link"/>
<xsl:variable name="item_title" select="substring(description,string-length($owner)+3)"/> 
<xsl:call-template name="getDate">
<xsl:with-param name="dateTime" select="pubDate" />
</xsl:call-template> |
<a href="{$item_link}" title="{$item_title}">
<xsl:value-of select="$item_title"/>
</a>
<br/>
</xsl:template>
<xsl:template name="getDate">
<xsl:param name="dateTime" />
<xsl:variable name="monthName">
<xsl:value-of select="substring($dateTime,9,3)" />
</xsl:variable>
<xsl:variable name="day">
<xsl:value-of select="substring($dateTime,6,2)" />
</xsl:variable>
<xsl:variable name="month">
<xsl:choose>
<xsl:when test="$monthName = 'Jan'">01</xsl:when>
<xsl:when test="$monthName = 'Feb'">02</xsl:when>
<xsl:when test="$monthName = 'Mar'">03</xsl:when>
<xsl:when test="$monthName = 'Apr'">04</xsl:when>
<xsl:when test="$monthName = 'May'">05</xsl:when>
<xsl:when test="$monthName = 'Jun'">06</xsl:when>
<xsl:when test="$monthName = 'Jul'">07</xsl:when>
<xsl:when test="$monthName = 'Aug'">08</xsl:when>
<xsl:when test="$monthName = 'Sep'">09</xsl:when>
<xsl:when test="$monthName = 'Oct'">10</xsl:when>
<xsl:when test="$monthName = 'Nov'">11</xsl:when>
<xsl:when test="$monthName = 'Dec'">12</xsl:when>
</xsl:choose>
</xsl:variable>
<xsl:variable name="year">
<xsl:value-of select="substring($dateTime,13,4)" />
</xsl:variable>
<xsl:variable name="time">
<xsl:value-of select="substring($dateTime,18,8)" />
</xsl:variable>
<xsl:value-of select="concat($day,'.',$month,'.',$year,' ',$time)" />
</xsl:template>
</xsl:stylesheet>

image

После применения параметров увидите следующего вида веб-часть:

image

Сообщение с веб-страницы о необходимости ввести значение обязательного поля

image

You must specify a value for this required field

Необходимо задать значение для этого обязательного поля

В журнале SharePoint все чисто.

Такое, наверняка, произошло по причине установки атрибута Visible="false" для заполнителя PlaceHolderPageTitleInTitleArea:

<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server" Visible="false"/>

Вместо этого просто скройте заполнитель:

<div style="display:none">
<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server"/>
</div>

понедельник, 3 января 2011 г.

Брендинг ленты

Брэндинг страниц на SharePoint 2010 в целом выполняется так же, как и брендинг страниц на SharePoint 2007. Главным существенным отличием этих процессов является брендинг ленты. Поэтому, расскажу об этом поподробнее.

Лента состоит из двух частей, верхняя и нижняя:

image

С точки зрения HTML верхняя часть представлена тегом <div class="s4-pr " id="s4-ribbonrow">. Нижняя часть представлена тегом <div class="s4-pr s4-notdlg " id="s4-titlerow" style="display: block;">, если открыта закладка “Обзор” (Browse). Если же открыта одна из других закладок, (например, “Страница”, “Page”) то тег верхней части превращается в <div class="s4-pr " id="s4-ribbonrow" style="height: 135px;"> (вырастает в высоту) и представляет уже обе части. При этом нижняя часть внутри данного тега представлена тегом <div class="ms-cui-tabContainer" unselectable="on">.

Ссылка каждой закладки имеет атрибут вида onclick="_ribbonStartInit('Ribbon.Read',false, event);", где вместо Ribbon.Read подставляются идентификаторы закладок. Скрипты обеспечивают все поведение переключения между закладками на стороне клиента без необходимости перезагрузки страницы.

Верхняя часть ленты содержит три блока. <div class="ms-cui-TabRowLeft ms-siteactionscontainer s4-notdlg" id="RibbonContainer-TabRowLeft" unselectable="on"> это левая периферийная часть верхней полосы ленты, содержащая меню сайта и хлебные крошки. <ul class="ms-cui-tts" role="tablist" unselectable="on" _scaleStep="0"> это блок закладок. <div class="ms-cui-TabRowRight s4-trc-container s4-notdlg" id="RibbonContainer-TabRowRight" style="display: block;" unselectable="on"> это правая периферийная часть верхней полосы ленты, содержащая меню пользователя и кнопки социальных возможностей.

При оформлении, конечно, желательно обходиться просто настройкой CSS. Но если это не помогает, можно разработать и свою главную страницу.

При настройке CSS обратите внимание на то, что закладки могут быть многоуровневыми:

image

Простым редактированием HTML-кода главной страницы менять оформление можно только для следующих блоков ленты:

  1. периферийные части верхней полосы
  2. нижняя часть на закладке “Обзор”

Остальные части не поддаются прямому редактированию и если вам требуется их поменять, видимо, придется прибегнуть к тем же java-скриптам:

  1. блок закладок
  2. нижняя часть инструментальных закладок, таких как “Страница”, “Список” и т.п.

Для того чтобы поменять содержимое левой периферийной части, в главной странице следует менять содержимое тега <SharePoint:SPRibbonPeripheralContent runat="server" Location="TabRowLeft" CssClass="ms-siteactionscontainer s4-notdlg">

Для того чтобы поменять содержимое правой периферийной части, в главной странице следует менять содержимое тега <SharePoint:SPRibbonPeripheralContent runat="server" Location="TabRowRight" ID="RibbonTabRowRight" CssClass="s4-trc-container s4-notdlg">

Для того чтобы поменять содержимое закладки “Обзор”, в главной странице следует менять содержимое тега <div id="s4-titlerow" class="s4-pr s4-notdlg s4-titlerowhidetitle">.