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}