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

Скрыть меню выбора календаря

В календарном представлении слева отображаются дополнительные элементы управления:

image

Один для навигации по датам, а другой (имеющийся только в списке, созданном по шаблону календаря) для навигации по дополнительным календарям (внешние календари, подключенные с помощью функции “Объединение календарей”). Конечно, далеко не каждое календарное представление имеет дополнительные календари. Как же скрыть лишний элемент управления?

Для этого просто нужно добавить на страницу следующий код:

<style>

.ms-acal-apanel

{

      display:none;

}

</style>

Добавить этот код можно, разместив веб-часть редактора содержимого и вставив этот код в режиме редактирования исходного текста HTML:

image

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

image

Это происходит т.к. на странице отображается более одной веб-части. Теперь, чтобы закладки появились, необходимо щелкнуть на представлении календаря. Эту проблему можно исправить, прописывая код не в веб-части, а в коде страницы, открыв ее в SharePoint Designer.

четверг, 20 января 2011 г.

Ошибка “В настоящее время хранилище метаданных службы подключения к бизнес-данным недоступно”

image

В журнале SharePoint никаких подозрительных записей.

Возможных причин возникновения данного симптома много. Можете погуглить “The business data connectivity metadata store is currently unavailable”. У меня проблема была в том, что приложение-служба “Служба подключения к бизнес-данным” не была сопоставлена с приложением, на котором я пытался создать внешний тип контента.

Заходим в центр администрирования, открываем раздел “Управление приложениями”, переходим по ссылке “Сопоставление приложений-служб”. Выбираем нужное нам приложение и убеждаемся что галочка напротив службы подключения к бизнес-данным установлена:

image

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

Ошибка “Отсутствуют зависимости на стороне сервера”

В разделе “Обзор проблем и решений” центра администрирования появляется ошибка “Отсутствуют зависимости на стороне сервера”.

[MissingWebPart] База данных [SharePoint_AdminContent_b824913a-334c-428d-8580-8d03d0c8380e] содержит [6] ссылок на класс веб-части [8d6034c4-a416-e535-281a-6b714894e1aa], но он не установлен в текущей ферме. Установите компонент или решение, содержащее эту веб-часть. Одна или несколько веб-частей, на которые имеются ссылки в базе данных [SharePoint_AdminContent_b824913a-334c-428d-8580-8d03d0c8380e], не установлены на текущей ферме. Установите все компоненты или решения, содержащие эти веб-части.

image

Решается эта проблема интересно:

  1. В центре администрирования переходим по ссылке “Общие параметры приложения”.
  2. Переходим по ссылке “Администрирование поиска в ферме”.
  3. Переходим по ссылке “Приложение службы поиска”.
  4. Запускаем в командной строке iisreset.
  5. Возвращаемся в “Обзор решений и проблем”.
  6. Переходим по ссылке на данную ошибку.
  7. Нажимаем “Повторить анализ”:

image

Через некоторое время проблема исчезает из списка. У меня это произошло в течение одной минуты.

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

Возвращение панели быстрого запуска на страницу веб-частей

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

Почему-то на странице, созданной из типа содержимого“Страница веб-частей”

image

Панель быстрого запуска отсутствует.

Вернуть панель на конкретную страницу можно следующим образом.

Открыть страницу в SharePoint Designer:

image

Перейти в расширенный режим.

Убрать блоки

<style type="text/css">
body #s4-leftpanel {
    display:none;
}
.s4-ca {
    margin-left:0px;
}
</style>

и

<asp:Content ContentPlaceHolderId="PlaceHolderLeftNavBar" runat="server"></asp:Content>

Сохраняем - готово.

Вернуть панель на все страницы можно аналогичным образом, отредактировав файлы spstdX в папке C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\1049\STS\DOCTEMP\SMARTPGS

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

Настройка темы сайта

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

image

Создание главной страницы с применяемыми темами

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

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

  • Начертание шрифта
  • Расцветка

Для этого в теме предполагается настройка образцов цветов и шрифтов:

image

Для обозначения в CSS-документах заменяемых атрибутов используются следующие ключи ReplaceColor, RecolorImage и ReplaceFont. Для обозначения цветов используются следующие переменные:

•Dark1, Dark2

•Light1, Light2

•Accent1, Accent2, Accent3, Accent4, Accent5, Accent6

•Hyperlink

•Followed Hyperlink

Движок тем работает с этими цветами и их оттенками: Lightest, Lighter, Medium, Darker, and Darkest.

Задача

Ключ

Примеры

Замена цвета (кроме картинок)

ReplaceColor

/* [ReplaceColor(themeColor:"Light2-Darkest")] */ background-color:#707070;

Замена цвета картинки

RecolorImage

/* [RecolorImage(themeColor:"Dark1",method:"Tinting")] */ background: url(/_layouts/images/hero-bg.jpg) no-repeat;

/* [RecolorImage(themeColor:"Dark1",method:"Blending")] */ background: url(/_layouts/images/hero-bg.jpg) no-repeat;

/* [RecolorImage(themeColor:"Dark1",method:"Filling")] */ background: url(/_layouts/images/hero-bg.jpg) no-repeat;

Замена шрифта

ReplaceFont

/* [ReplaceFont(themeFont: "MinorFont")] */ font-family:Verdana;

/* [ReplaceFont(themeFont: "MajorFont")] */ font-family:Verdana;

Если требуется применение к одному стилю сразу нескольких замен, используйте следующий пример:

/* [RecolorImage(themeColor:"Dark1",method:"Tinting")] */ /* [ReplaceColor(themeColor:"Dark1")] */ background: url(/_layouts/images/hero-bg.jpg) no-repeat 0px 0px rgb(128, 128, 128);

CSS-файлы должны размещаться в папке

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS\1049\STYLES\Themable

Подключать CSS к странице требуется особым образом:

<SharePoint:CssRegistration name="<% $SPUrl:/_layouts/1049/STYLES/Themable/css(1).css %>" After="corev4.css" runat="server"/>

Картинки необходимо расположить в папке

C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\IMAGES

В CSS следует указывать относительный путь. Например, background: url(/_layouts/images/hero-bg.jpg)

Я пробовал использовать jpg и png. Уверен, что спектр совместимых форматов намного шире.

При применении темы к узлу в папке _themes (а если на семействе узлов активирована фича инфраструктуры публикации, то _catalogs/theme/Themed) создается папка, куда сохраняются переработанные CSS и картинки, указанные в этих CSS.

Более подробно создание главных страниц с возможностью применения тем можно рассмотреть в следующих статьях:

http://blogs.msdn.com/b/sharepointdesigner/archive/2010/04/09/working-with-the-sharepoint-theming-engine.aspx

http://www.sharepointbits.com/blog/2010/1/4/how-themes-work-in-sharepoint-2010.html

Сами темы можно настраивать в настройках узла (если активирована возможность публикации на семействе сайтов), либо с использованием PowerPoint.

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

Конфигурация. Учетная запись 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">.

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

Магический квадрант социального программного обеспечения на рабочем месте (ч. 2)

Значительные отсутствия

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

Alfresco лучше всего известен за его построенную на Java предложение по документообороту с открытым кодом. Alfresco content management suite включает Alfresco Share, который сочетает мощный набор возможностей для виртуальных команд, профилей, лент активности и библиотек документов.

Box.net это онлайн сервис по разделению контента, который нацелен в первую очередь на малый и средний бизнес и департаменты более крупного бизнеса. Он сочетает удобные пользователю документо-ориентированные возможности (включая онлайн-просмотрщики, веб-документы и синхронизацию с рабочими местами) с сотрудничеством и сетью (включая дискуссии, комментарии, задачи, теги и ленты активности). Он также интегрируется с дополнениями от сервисов третьих сторон, таких как Google Apps, NetSuite, SAP StreamWork, Zoho, eFax, FedEx и salesforce.com.

BroadVision запустил Clearvale, SaaS предложение бизнес-сети. На одном уровне он предлагает исчерпывающий набор возможностей для организации сотрудничества и социальных сетей в организации. Более того, Clearvale также может быть использован для построения сетей из сетей, работающих между несколькими бизнесами. BroadVision исследует модель франшизы, которая может предоставлять третьим лицам использование Clearvale как облачно-ориентированную оболочку для комбинирования социальных сетей с другими специальными/дополнительными приложениями.

Cisco Quad это модульная платформа для социального сотрудничества. Она сочетает широкий выбор возможностей, включая богатые профили, социальные метаданные и разделение видео, все на основе общего хранилища контента и «подключаемого» каркаса, интегрирующегося с другими сервисами сообщений, голоса, конференций и видео. На октябрь 2010го доступность была ограничена.

Cornerstone OnDemand предлагает Cornerstone Connect с широким набором возможностей сотрудничества и бизнес социальных сетей. Чаще всего оно развертывается как часть их SaaS-решения управления талантом, за который Cornerstone OnDemand лучше всего известен, интегрированная среда, сочетающая управление производительностью, обучение и сотрудничество.

FatWire Software предлагает TeamUp как отдельный продукт командного сотрудничества, получивший некоторую поддержку среди креативных маркетинговых команд и медиа-агентств, имеющих дело с насыщенным контентом. В дополнение FatWire представил новое сообщество, генерируемый пользователями контент, гаджеты и возможности социальной аналитики в 2010 в его флагманской платформе Web Experience Management.

KickApps держит главный фокус на внешне-ориентированных развертываниях заказчиков, но также признает синергию и возможности для приватных сетей и сотрудничества, особенно при поддержке с социальным CRM. Сотрудники продаж и маркетинга, обслуживания и поддержки клиентов могут использовать службы KickApps для совместной работы в общей среде, которая несет информацию и оценки, подобранные из сообществ заказчиков, поддерживаемых на этой же платформе (или собранных с публичных социальных веб). В то же время, их продукты могут быть интегрированы с внутренней рабочей средой или транзакционными бизнес-приложениями (такими как Microsoft's SharePoint, salesforce.com или IBM WebSphere Commerce).

Moxie Software (ранее известная как nGenera) предлагает решения для взаимодействия с сотрудниками и заказчиками, построенные на платформе социального сотрудничества Spaces. Вдали от технологий у Moxie есть достижения в стратегическом консалтинге по инновациям, сотрудничеству и человеко-ориентированному дизайну.

Oracle WebCenter Suite 11g включает несколько компонентов, связанных с контекстом данного отчета, в дополнение к поддержке портала, управления бизнес-процессами, управления контентом, поиска и разработки mashup/приложений. Два из этих компонентов для социального сотрудничества - WebCenter Spaces с социальной сетью, виками, блогами и социальными тегами; и WebCenter Intelligent Collaboration для поиска экспертизы и установки связи – распространяющиеся по отдельности.

Salesforce.com Salesforce Chatter это слой сотрудничества и социальных сетей между инфраструктурными сервисами Force.com и salesforce.com для продаж и обслуживания клиентов. Он смоделирован на Facebook и Twitter, с упором на профили пользователей, микроблоггинг и лентах активности, которые люди используют для отслеживания того, что их интересует. Статусные сообщения могут создаваться не только людьми, но также другими приложениями Force.com.

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