3.19.2014

SharePoint 2010 Force Modal Dialog

The Problem:

You've added a Custom Action to your SharePoint 2010 list to redirect users to a specific edit form.  However, when they click on it, it takes them to a completely separate page, away from the list.  Lets take a look at how we can force SharePoint to open these links in the Modal Dialog similar to how it handles the default edit/create/display forms.

The Solution:

So, in SharePoint Designer, under Lists and Libraries, you have selected the list you're working on.  In the bottom right-hand corner of the List page, you should see a Custom Actions box.  Create your Custom Action if you haven't already.


Now that you've got your Custom Action started, we are going to work off of the default settings in the "Navigate to Form" field.  We will use a simple JavaScript function call to SP.UI.ModalDialog.showModalDialog() which is a built-in JS function included with SharePoint 2010.

Here is an example of the call:

javascript:SP.UI.ModalDialog.showModalDialog({
url: "/sites/<SiteName>/Lists/<ListName>/EditForm.aspx?ID={ItemId}",
title: "Custom Edit Form/Destination",
dialogReturnValueCallback:  function(dialogResult){
SP.UI.ModalDialog.RefreshPage(dialogResult);
location.reload();
 }
});
return false;
After editing the URL & Title, this function call can be placed right into the "Navigate to URL" textbox back on the SharePoint Designer Custom Action screen.

You might notice there is a line called dialogReturnValueCallback.  Here, we specify the behavior to send back to the original page that called the Modal (our list).  For this example, we refresh the original list to reflect any changes that may have been made on the Modal Dialog.



Copy the JavaScript (inline) right into the Custom Action "Navigate to URL" box, click "OK" and test out your custom action!

** UPDATE (6/24/15) - I noticed when using the above code snippet, that SharePoint Designer won't let you copy and paste the code as it is above.  In order to use the code sample above, you must remove all carriage returns and paste the code in as a single line:

javascript:SP.UI.ModalDialog.showModalDialog({ url: "/sites/<SiteName>/Lists/<ListName>/EditForm.aspx?ID={ItemId}", title: "Custom Edit Form/Destination", dialogReturnValueCallback:  function(dialogResult){ SP.UI.ModalDialog.RefreshPage(dialogResult); location.reload(); }});return false;

2.27.2014

Enable Custom Master Pages on SharePoint 2010

The Problem:


You have created a custom master page.  It looks great.

Now, how do you apply it to the Site Collection and all of the Subsites?

*** If you already have a Site Collection with the custom Master Page enabled, and have added a new Subsite that isn't inheriting, please skip to Subsite.

Site Collection:


We need to verify that the master page you wish to enable, is published and approved by visiting:

http://[SharePoint2010SiteCollection]/_catalogs/MasterPage/Forms/AllItems.aspx

Here, you should see a list of all of the master pages and branding pages that are available on the Site Collection, including the out-of-the-box master pages included with SharePoint 2010.


To verify this file is published and approved, make sure it is present in this list, and shows an 'Approval Status' of Approved.  If you need to publish a master page, simply check the page in.

Once we have verified the master page, we need to visit the Change Site Master Page form here:


Here, you will find the Site Master Page Settings, which includes the Site Master Page and System Master Page selections.  After selecting the option to 'Specify a master page to be used by this site and all sites that inherit from it', you should be able to find your custom master page in the dropdown.  After changing both the System and Site master pages, click 'OK' to apply the changes.



Subsite:


Now that your custom master page is activated on your Site Collection, you may have some issues when creating new subsites.  The master page seems to revert back to the default SharePoint 2010 master page.

In order to fix this, we will visit the Change Site Master Page again, this time on the subsite level:


Here you will find the same options as you saw on the Site Collection change page.  We will follow the same steps again:

  • Select the option to 'Specify a master page to be used by this site and all sites that inherit from it
  • Your custom master page should be available in the dropdown.  
  • After changing both the System and Site master pages, click 'OK' to apply the changes.