Skip to main content

SharePoint 2010 Customizing default application pages


Customizing an SharePoint 2010 Application Page. 

In this example I'm customizing the /_layouts/MWS.aspx, the new meeting workspace page. 

These steps can be followed for any of Application Page.

1. Create the custom application page and deploy it into the _layouts folder.

2. Create an IHttpModule to redirect all requests that come to MWS.aspx and redirect them to customMWS.aspx:

class RedirectModule : IHttpModule { public void Dispose(){ } public void Init(HttpApplication context) { // add event handler context.PreRequestHandlerExecute += context_PreRequestHandlerExecute; } void context_PreRequestHandlerExecute(object sender, EventArgs e) { HttpApplication httpApp = sender as HttpApplication; HttpContext context = httpApp.Context; string httpUrl = context.Request.RawUrl.ToString(); //compare our URL and redirect it to custom one if (httpUrl.ToLower().Contains("/_layouts/customMWS.aspx")) { HttpContext.Current.Server.ClearError(); HttpContext.Current.Response.Clear(); HttpContext.Current.Response.Redirect(Regex.Replace(httpUrl, "/_layouts/newMWS.aspx", "/_layouts/customMWS.aspx", RegexOptions.IgnoreCase)); } } }

3. Add a new element in the web.config configuration/system.webServer/modules section to enable this IHttpModule. To do this create an web application feature to add this change in the web.config of the application. 


public class MWSRedirectModuleFeature : SPFeatureReceiver {
 SPWebConfigModification webConfigModification = new SPWebConfigModification
 {
  Name = "add[@name='MWSRedirectModule']",
  Path = "configuration/system.webServer/modules",
  Owner = "CustomOwner",
  Sequence = 100,
  Type = SPWebConfigModification.SPWebConfigModificationType.EnsureChildNode,
  Value = "Class Name, Assembly Full Name"/>"
 };

 // Add config changes
 public override void FeatureActivated(SPFeatureReceiverProperties properties)
 {
  SPWebApplication parent = (SPWebApplication)properties.Feature.Parent;

  if (parent == null)
   return;

  try
  {
   parent.WebConfigModifications.Add(webConfigModification);
   parent.Update(true);
   parent.WebService.ApplyWebConfigModifications();
  }
  catch (Exception exception)
  {
   // log error
  }
 }

 // Remove config changes
 public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
 {
  SPWebApplication parent = (SPWebApplication)properties.Feature.Parent;

  if (parent == null)
   return;

  try
  {
   parent.WebConfigModifications.Remove(webConfigModification);
   parent.Update(true);
   parent.WebService.ApplyWebConfigModifications();
  }
  catch (Exception exception)
  {
   // log error
  }
 }
}


Comments

Popular posts from this blog

Emmet in Visual Studio Code | cheat sheet link

Support for   Emmet   snippets and expansion is built right into Visual Studio Code,   no extension required .   Emmet 2.0   has support for the majority of the   Emmet Actions   including expanding   Emmet abbreviations and snippets .   Emmet is a web-developer’s toolkit that can greatly improve your HTML & CSS workflow   Links: Emmet in Visual Studio Code   Cheat Sheet (emmet.io)  

How to deloy InfoPath 2010 "Administrator-approved form template" to SharePoint 2010 programaticaly

Scenario: you've developed and InfoPath 2010 form. This form contains code that requires full trust, so you need to deploy it as a administrator-approved form template. This requires an farm administrator to check, upload and activate the form for the site collection. Solution:  to automate this operation I  created a farm level feature - w hen the feature is activated upload the form  programmatically and w hen the feature is deactivated remove the form  programmatically. Here is how I did it: 1. Create an Empty SharePoint Project and set it to be deployed as a farm solution 2. Add an Empty element item - EmptyElement1 . This will also generate a feature - Feature1 3. Delete the Elements.xml file of the EmptyElement1 4. Copy/Paste the InfoPath 2010 form into the EmptyElement1 5. Right click on the added form and click Properties:  - Deployment Type: ElementFile  - Deployment Location> Path: set it to blank 6. Open the generated featu...

SharePoint 2010 put back the "Set Up Groups for this Site" link

The " Set Up Groups for this Site " page has been, for some unknown reason, hidden in SharePoint 2010. The page is still there and it can be accessed here : /_layouts/permsetup.aspx . To make this generally available I created a custom action to add this to the " People and Groups: All Groups " ( /_layouts/groups.aspx ) page, in the Settings dropdown menu: xml version = "1.0" encoding = "utf-8" ?> < Elements xmlns = "http://schemas.microsoft.com/sharepoint/" > < CustomAction Id = "64f25e2b-f9fb-4e37-b848-5949603b03ab" Title = "Set Up Groups for this Site" Description = "Use this page to specify who can access your site. You can create new SharePoint groups or re-use existing SharePoint groups." Location = "Microsoft.SharePoint.GroupsPage" GroupId = "SettingsMenu" Sequence = ...