Статья написана в продолжение предыдущей. Советую сперва её прочитать, чтобы сложилось полная картина о всем написанном в данной статье.
Итак, предположим, что вы создаете решение для SharePoint 2010, часть которого представляет собой пользовательскую группу (CustomActionGroup) с ссылками на соответсвующие страницы (CustomAction). Предположим, что вы хотите отобразить эту группу ни в одной из расположений по-умолчанию, а вообще на отдельной странице (на разработанной вами!). Всё намного проще, чем предполагалось и не надо всё самому рисовать, разбирать xml...
Рис. 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 комментарий:
Отправить комментарий