Home
Manage Your Code
Snippet: SiteActionsSubMenuCustomizer.cs (C#)
Title: SiteActionsSubMenuCustomizer.cs Language: C#
Description: Site Actions SubMenu Customizer adds items imperatively. Views: 428
Author: Tony Bierman Date Added: 7/19/2008
Copy Code  
1using System;
2using System.Collections.Generic;
3using System.Text;
4using Microsoft.SharePoint;
5using Microsoft.SharePoint.WebControls;
6using Microsoft.SharePoint.Administration;
7using System.Web.UI.WebControls;
8
9namespace SiteActionsSubMenuDemo
10{
11    public class SiteActionsSubMenuCustomizer : WebControl
12    {
13        string m_urlPrefix = "";
14
15        protected override void OnLoad(EventArgs e)
16        {
17            this.EnsureChildControls();
18            base.OnLoad(e);
19        }
20
21        protected override void CreateChildControls()
22        {
23            SPWeb web1 = SPContext.Current.Web;
24
25            if (web1.IsRootWeb)
26                m_urlPrefix = "/";
27
28            SubMenuTemplate quickSiteSettings = new SubMenuTemplate();
29            quickSiteSettings.Text = "Quick Site Settings";
30            quickSiteSettings.ID = "QuickSiteSettings";
31            quickSiteSettings.Description = "Quick access to site settings";
32            quickSiteSettings.Sequence = 400;
33
34            // Build submenus

35            quickSiteSettings.Controls.Add(BuildSubMenuUsersAndPermissions()); 
36            quickSiteSettings.Controls.Add(BuildSubMenuLookAndFeel());
37            quickSiteSettings.Controls.Add(BuildSubMenuGalleries());
38            quickSiteSettings.Controls.Add(BuildSubMenuAdmin());
39
40            // Link to WSS Central Admin

41            MenuItemTemplate wssCentralAdmin = new MenuItemTemplate();
42            wssCentralAdmin.Text = "WSS Central Administration";
43            wssCentralAdmin.ID = "SiteActionsSubMenuItem1";
44            wssCentralAdmin.Description = "View WSS Central Administration";
45            wssCentralAdmin.ImageUrl = "/_layouts/images/admintitlegraphic.gif";
46            wssCentralAdmin.Sequence = 400;
47            string url = SPAdministrationWebApplication.Local.GetResponseUri(SPUrlZone.Default).ToString();
48            wssCentralAdmin.ClientOnClickNavigateUrl = url;
49            quickSiteSettings.Controls.Add(wssCentralAdmin);
50
51            this.Controls.Add(quickSiteSettings);
52        }
53
54        private SubMenuTemplate BuildSubMenuAdmin()
55        {
56            // Site admin submenu

57            SubMenuTemplate siteAdmin = new SubMenuTemplate();
58            siteAdmin.Text = "Site Administration";
59            siteAdmin.ID = "SiteAdminstration";
60            siteAdmin.Description = "Administration functions for this site";
61            siteAdmin.Sequence = 400;
62
63            // Site libraries and lists menu item

64            MenuItemTemplate siteLists = new MenuItemTemplate();
65            siteLists.Text = "Site libraries and lists";
66            siteLists.ID = "siteLists";
67            siteLists.Description = "Manage site libraries and lists";
68            siteLists.Sequence = 400;
69            siteLists.ClientOnClickNavigateUrl = m_urlPrefix + 
70                "_layouts/mcontent.aspx";
71            siteAdmin.Controls.Add(siteLists);
72
73            // Site usage menu item

74            MenuItemTemplate siteUsage = new MenuItemTemplate();
75            siteUsage.Text = "Site usage";
76            siteUsage.ID = "siteUsage";
77            siteUsage.Description = "View site usage statistics";
78            siteUsage.Sequence = 400;
79            siteUsage.ClientOnClickNavigateUrl = m_urlPrefix + 
80                "_layouts/SpUsageWeb.aspx";
81            siteAdmin.Controls.Add(siteUsage);
82
83            // User alerts menu item

84            MenuItemTemplate userAlerts = new MenuItemTemplate();
85            userAlerts.Text = "User alerts";
86            userAlerts.ID = "userAlerts";
87            userAlerts.Description = "Manage user alerts";
88            userAlerts.Sequence = 400;
89            userAlerts.ClientOnClickNavigateUrl = m_urlPrefix + 
90                "_layouts/sitesubs.aspx";
91            siteAdmin.Controls.Add(userAlerts);
92
93            // RSS feeds menu item

94            MenuItemTemplate rssFeeds = new MenuItemTemplate();
95            rssFeeds.Text = "RSS feeds";
96            rssFeeds.ID = "rssFeeds";
97            rssFeeds.Description = "Enable/disable RSS feeds";
98            rssFeeds.Sequence = 400;
99            rssFeeds.ClientOnClickNavigateUrl = m_urlPrefix + 
100                "_layouts/siterss.aspx";
101            siteAdmin.Controls.Add(rssFeeds);
102
103            // Site features menu item

104            MenuItemTemplate siteFeatures = new MenuItemTemplate();
105            siteFeatures.Text = "Site features";
106            siteFeatures.ID = "siteFeatures";
107            siteFeatures.Description = "Manage site features";
108            siteFeatures.Sequence = 400;
109            siteFeatures.ClientOnClickNavigateUrl = m_urlPrefix + 
110                "_layouts/ManageFeatures.aspx";
111            siteAdmin.Controls.Add(siteFeatures);
112
113            // Site structure menu item

114            MenuItemTemplate siteStructure = new MenuItemTemplate();
115            siteStructure.Text = "Site structure";
116            siteStructure.ID = "siteStructure";
117            siteStructure.Description = "Site content and structure";
118            siteStructure.Sequence = 400;
119            siteStructure.ClientOnClickNavigateUrl = m_urlPrefix + 
120                "_Layouts/sitemanager.aspx?Source=/_layouts/settings.aspx";
121            siteAdmin.Controls.Add(siteStructure);
122
123            return siteAdmin;
124        }
125
126        private SubMenuTemplate BuildSubMenuGalleries()
127        {
128            // Galleries submenu

129            SubMenuTemplate galleries = new SubMenuTemplate();
130            galleries.Text = "Galleries";
131            galleries.ID = "galleries";
132            galleries.Description = "View this site's galleries";
133            galleries.Sequence = 400;
134
135            // Master pages gallery menu item

136            MenuItemTemplate masterPagesGallery = new MenuItemTemplate();
137            masterPagesGallery.Text = "Master pages";
138            masterPagesGallery.ID = "masterPagesGallery";
139            masterPagesGallery.Description = "View the master pages gallery";
140            masterPagesGallery.Sequence = 400;
141            masterPagesGallery.ClientOnClickNavigateUrl = m_urlPrefix + 
142                "_catalogs/masterpage/Forms/AllItems.aspx";
143            galleries.Controls.Add(masterPagesGallery);
144
145            // Site content types gallery menu item

146            MenuItemTemplate siteContentTypesGallery = new MenuItemTemplate();
147            siteContentTypesGallery.Text = "Site content types";
148            siteContentTypesGallery.ID = "siteContentTypesGallery";
149            siteContentTypesGallery.Description = "View the site content types gallery";
150            siteContentTypesGallery.Sequence = 400;
151            siteContentTypesGallery.ClientOnClickNavigateUrl = m_urlPrefix + 
152                "_layouts/mngctype.aspx";
153            galleries.Controls.Add(siteContentTypesGallery);
154
155            // Site columns gallery menu item

156            MenuItemTemplate siteColumnsGallery = new MenuItemTemplate();
157            siteColumnsGallery.Text = "Site columns";
158            siteColumnsGallery.ID = "siteColumnsGallery";
159            siteColumnsGallery.Description = "View the site columns gallery";
160            siteColumnsGallery.Sequence = 400;
161            siteColumnsGallery.ClientOnClickNavigateUrl = m_urlPrefix + 
162                "_layouts/mngfield.aspx";
163            galleries.Controls.Add(siteColumnsGallery);
164
165            return galleries;
166        }
167
168        private SubMenuTemplate BuildSubMenuLookAndFeel()
169        {
170            // Look and feel submenu

171            SubMenuTemplate lookAndFeel = new SubMenuTemplate();
172            lookAndFeel.Text = "Look and Feel";
173            lookAndFeel.ID = "lookAndFeel";
174            lookAndFeel.Description = "Modify this site's look and feel";
175            lookAndFeel.Sequence = 400;
176
177            // Title, description and icon menu item

178            MenuItemTemplate titleDescIcon = new MenuItemTemplate();
179            titleDescIcon.Text = "Title, description and icon";
180            titleDescIcon.ID = "titleDescIcon";
181            titleDescIcon.Description = "Set this site's title, description, icon";
182            titleDescIcon.Sequence = 400;
183            titleDescIcon.ClientOnClickNavigateUrl = m_urlPrefix + 
184                "_layouts/prjsetng.aspx";
185            lookAndFeel.Controls.Add(titleDescIcon);
186
187            // Change master page menu item

188            MenuItemTemplate masterPage = new MenuItemTemplate();
189            masterPage.Text = "Master page";
190            masterPage.ID = "masterPage";
191            masterPage.Description = "Change this site's master page";
192            masterPage.Sequence = 400;
193            masterPage.ClientOnClickNavigateUrl = m_urlPrefix + 
194                "_layouts/changesitemasterpage.aspx";
195            lookAndFeel.Controls.Add(masterPage);
196
197            // Navigation settings menu item

198            MenuItemTemplate navSettings = new MenuItemTemplate();
199            navSettings.Text = "Navigation";
200            navSettings.ID = "navSettings";
201            navSettings.Description = "Navigation settings";
202            navSettings.Sequence = 400;
203
204            navSettings.ClientOnClickNavigateUrl = m_urlPrefix + 
205                "_layouts/areanavigationsettings.aspx";
206            lookAndFeel.Controls.Add(navSettings);
207
208            // More navigation options menu item

209            MenuItemTemplate navOptions = new MenuItemTemplate();
210            navOptions.Text = "Navigation options";
211            navOptions.ID = "navOptions";
212            navOptions.Description = "More navigation options";
213            navOptions.Sequence = 400;
214            navOptions.ClientOnClickNavigateUrl = m_urlPrefix + 
215                "_layouts/navoptions.aspx";
216            lookAndFeel.Controls.Add(navOptions);
217
218            // Site theme menu item

219            MenuItemTemplate siteTheme = new MenuItemTemplate();
220            siteTheme.Text = "Site theme";
221            siteTheme.ID = "siteTheme";
222            siteTheme.Description = "Change site theme";
223            siteTheme.Sequence = 400;
224            siteTheme.ClientOnClickNavigateUrl = m_urlPrefix + 
225                "_layouts/themeweb.aspx";
226            lookAndFeel.Controls.Add(siteTheme);
227
228            // Save site as template menu item

229            MenuItemTemplate saveTemplate = new MenuItemTemplate();
230            saveTemplate.Text = "Save site template";
231            saveTemplate.ID = "saveTemplate";
232            saveTemplate.Description = "Save this site as template";
233            saveTemplate.Sequence = 400;
234            saveTemplate.ClientOnClickNavigateUrl = m_urlPrefix + 
235                "_layouts/savetmpl.aspx";
236            lookAndFeel.Controls.Add(saveTemplate);
237
238            return lookAndFeel;
239        }
240
241        private SubMenuTemplate BuildSubMenuUsersAndPermissions()
242        {
243            // Users and permissions submenu

244            SubMenuTemplate usersAndPermissions = new SubMenuTemplate();
245            usersAndPermissions.Text = "User and Permissions";
246            usersAndPermissions.ID = "usersAndPermissions";
247            usersAndPermissions.Description = "Set this site's users and permissions";
248            usersAndPermissions.Sequence = 400;
249
250            // People and Groups menu item

251            MenuItemTemplate peopleAndGroups = new MenuItemTemplate();
252            peopleAndGroups.Text = "People and groups";
253            peopleAndGroups.ID = "PeopleAndGroups";
254            peopleAndGroups.Description = "Manage people and groups";
255            peopleAndGroups.Sequence = 400;
256            peopleAndGroups.ClientOnClickNavigateUrl = m_urlPrefix + 
257                "_layouts/people.aspx";
258            usersAndPermissions.Controls.Add(peopleAndGroups);
259
260            // Advanced permissions menu item

261            MenuItemTemplate advancedPermissions = new MenuItemTemplate();
262            advancedPermissions.Text = "Advanced permissions";
263            advancedPermissions.ID = "advancedPermissions";
264            advancedPermissions.Description = "Manage advanced permissions";
265            advancedPermissions.Sequence = 400;
266            advancedPermissions.ClientOnClickNavigateUrl = m_urlPrefix + 
267                "_layouts/user.aspx";
268            usersAndPermissions.Controls.Add(advancedPermissions);
269
270            return usersAndPermissions;
271        }
272    }
273}