Всемогущий, Google, найди мне чего-нибудь!

среда, 9 ноября 2011 г.

Пользовательская ссылка и Central Administration (SharePoint 2010)

Мда, запустил я свой блог.
У меня есть пару черновиков статей, но сейчас не могу никак найти время, чтобы довести их до ума. Поэтому сейчас коротенькая запись и опять на работу.
На данный момент работаю над проектом под SharePoint Server 2010 и вчера возникла необходимость добавить custom link на панель быстрого запуска в Central Administration (далее, CA). Сперва поискал ("погуглил") на эту тему в интрнете, ничего внятного не нашел. Некоторые разработчики говорили, что это возможно, но сложно, а некоторые - невозможно вообще.
Теперь я вам докажу, что это возоможно! :)


Итак, предположим, что нам нужно поместить CustomActionGroup с кучей CustomAction в ней на главную страницу CA. Но при этом хотелось бы, чтобы она добавилась на панель быстрого запуска. Nintex смог такое сделать, почему и мы не можем сделать то же самое? Даже несмотря на то, что в Nintex работают бывшие разработчики SharePoint.
Итак прошу взглянуть на elements.xml файл, в котором описана CustomActionGroup:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">  
  <CustomActionGroup Id="CAG_Front"
                     Title="$Resources:CAG_Front;"
                     Description="$Resources:CAG_FrontDescription;"
                     Location="Microsoft.SharePoint.Administration.Default"
                     ImageUrl="/_layouts/images/SiteSettings_Galleries_48x48.png"
                     Sequence="100">
    <UrlAction Url="/_admin/TenantsManager/Management.aspx" />
  </CustomActionGroup>
  <CustomAction Id="CA_FrontTenantsAction"
                Title="$Resources:CA_FrontTenants;"                
                Sequence="1"
                Location="Microsoft.SharePoint.Administration.Default"
                GroupId="CAG_Front">
    <UrlAction Url="/_admin/TenantsManager/Tenants.aspx" />
  </CustomAction>
  <CustomAction Id="CA_TMFrontFeaturePacksAction"
                Title="$Resources:CA_FrontFeaturePacks;"                
                Sequence="2"
                Location="Microsoft.SharePoint.Administration.Default"
                GroupId="CAG_Front">
    <UrlAction Url="/_admin/TenantsManager/FeaturePacks.aspx" />
  </CustomAction>
</Elements>
Как видите, ничего сложного. Описание группы и привязка действий к данной группе. Теперь самое интресное творится в файле feature.xml:
<Feature xmlns="http://schemas.microsoft.com/sharepoint/" 
         AlwaysForceInstall="TRUE" 
         AutoActivateInCentralAdmin="TRUE" 
         DefaultResourceFile="TenantsManager"
         Description="$Resources:FeaturesTenantsManagerDescription;" 
         Hidden="TRUE" 
         Id="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx" 
         ImageUrl="TenantsManager/CompanyLogo.png" 
         Scope="Web" 
         Title="$Resources:FeaturesTenantsManagerTitle;">
  <ElementManifests>
    <ElementManifest Location="TenantsManagerActions\Elements.xml" />
    <ElementManifest Location="SafeControls\Elements.xml" />
    <ElementManifest Location="TenantsManagerRibbons\Elements.xml" />
  </ElementManifests>
</Feature>
Итак, основной момент в описании данной фичи это то, что она имеет область действия: Web. Если фича будет иметь другую облать действия, то данная группа не появится на панели быстрого запуска. Данный метод был протестирован и опробован при установке его непосредственно на CA. При установке на другую коллекцию сайтов данное решение не тестировалось.

Вот результат:

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