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

Oversized buttons in IE

Yeah ... just another problem with IE. Lucky for all of us there are some people that can hack their way through the IE bugs. Here is a fix for this problem: input.button {   padding: 0.25em;   width: 0;   overflow:visible; } input.button[class] { /*ie ignores [class]*/   width: auto; }

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...