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

SharePoint 2010 retrieving lookup values using ECMAScript

Script to retrieve single and multiple value lookup fields values using SharePoint 2010 Client Object Model for JavaScript (ECMAScript): var listName = "list name here" ; var listItemId = 23 ; // id here function retrieveLookupValues () { var clientContext = new SP . ClientContext . get_current (); var oList = clientContext . get_web (). get_lists (). getByTitle ( listName ); var selectedItems = SP . ListOperation . Selection . getSelectedItems (); var camlQuery = new SP . CamlQuery (); camlQuery . set_viewXml ( "< View >< Query >< Where >< Eq >< FieldRef Name='ID' / >< Value Type='Counter'>" + listItemId + "< /Value>< /Eq>< /Where>< /Query>< RowLimit>100< /RowLimit>< /View>" ); this . collListItem = oList . getItems ( camlQuery ); clientContext . load ( collListItem , 'Include(CustomSingelLookup...

SharePoint 2010 Custom List / Library Template: Custom Action are not displayed in the Ribbon

Issue: We have Custom List / Document Library Template - the Custom Action are not displayed in the Ribbon. Solution: Check that all views in the list template have the Toolbar tag inside it with type "Standard": < Toolbar Type="Standard" / > To fix for existing lists / libraries: 1. Change the source file in the Visual Studio solution and redeploy it. OR 2. If the solution cannot be redeployed then to fix existing lists / libraries follow these steps: - Open the site in SharePoint Designer - Open the Views in Edit Mode and add/update the following tag inside the View tag: