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

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

Группа ссылок на пользовательской странице. (CustomActionGroup на LayoutsPageBase).

Статья написана в продолжение предыдущей. Советую сперва её прочитать, чтобы сложилось полная картина о всем написанном в данной статье.
Итак, предположим, что вы создаете решение для SharePoint 2010, часть которого представляет собой пользовательскую группу (CustomActionGroup) с ссылками на соответсвующие страницы (CustomAction). Предположим, что вы хотите отобразить эту группу ни в одной из расположений по-умолчанию, а вообще на отдельной странице (на разработанной вами!). Всё намного проще, чем предполагалось и не надо всё самому рисовать, разбирать xml...
Понеслась. Я буду использовать наработки из предыдущей статьи. Конечный результат можно посмотреть на рис. 1.
Рис. 1. Конечный результат.

Итак, сперва опишем группу действий, которая будет отображаться на нашей странице:
<CustomActionGroup Id="CAG_Settings"
                     Title="$Resources:CAG_Settings;"
                     Location="TenantsManager.Administration.Default"
                     ImageUrl="/_layouts/images/SiteSettings_Galleries_48x48.png"
                     Sequence="100" />
  <CustomAction Id="CA_SettingsNewTenant"
                Title="$Resources:CA_SettingsNewTenant;"
                Sequence="10"
                Location="TenantsManager.Administration.Default"
                GroupId="CAG_Settings">
    <UrlAction Url="/_admin/TenantsManager/Tenant.aspx?Type=New" />
  </CustomAction>
  <CustomAction Id="CA_SettingsNewFeaturePack"
                Title="$Resources:CA_SettingsNewFeaturePack"
                Sequence="20"
                Location="TenantsManager.Administration.Default"
                GroupId="CAG_Settings">
    <UrlAction Url="/_admin/TenantsManager/FeaturePack.aspx?Type=New" />
  </CustomAction>
  <CustomAction Id="CA_SettingsTenants"
                Title="$Resources:CA_SettingsTenants;"
                Sequence="30"
                Location="TenantsManager.Administration.Default"
                GroupId="CAG_Settings">
    <UrlAction Url="/_admin/TenantsManager/Tenants.aspx" />
  </CustomAction>
  <CustomAction Id="CA_SettingsFeaturePacks"
                Title="$Resources:CA_SettingsFeaturePacks;"
                Sequence="40"
                Location="TenantsManager.Administration.Default"
                GroupId="CAG_Settings">
    <UrlAction Url="/_admin/TenantsManager/FeaturePacks.aspx" />
  </CustomAction>
Как видим, ничего сложного, но основной момент в описании: указать несущесвующее расположение, в нашем случае TenantsManager.Administration.Default. SharePoint не "наругает" нас за это и не выдаст никаких ошибок (что очень кстати). Просто зарегистрирует их, но отображать нигде не будет.

Теперь самое интересное. Существует специальный класс AdminControlPanel в пространстве имен Microsoft.SharePoint.WebControls в сборке Microsoft.SharePoint.ApplicationPages.Administration*, который сделает за нас всю работу. Документации по нему я найти не смог (возможно, плохо искал), но наткнулся на него, когда разбирал исходники Nintex Workflow 2010. Давайте не терять времени и разместим данный контрол на нашу страницу:
Рис. 2. Регистрация контролов из сборки Microsoft.SharePoint.ApplicationPages.Administration
Рис. 3. Размещение контрола на странице.
Обратите внимание на рис. 3 и установленное свойство Location. Это уникальный идентификатор несуществующего расположения, которую мы описали выше (TenantsManager.Administration.Default). Теперь установливаем наш маленький проект и видим, что всё получилось в точности, как на рис. 1.

* Сборка находится тут: "C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\CONFIG\ADMINBIN\".

1 комментарий:

PImboden комментирует...
Этот комментарий был удален автором.