Pages

Wednesday, 31 August 2011

Upgrading an Existing Master Page to the SharePoint Foundation Master Page

SharePoint 2010

There have been significant changes to the user interface (UI) for Microsoft SharePoint Foundation 2010, including the addition of the Server ribbon. By default, the v4.master page includes the Server ribbon. Many of the commands previously found in menus and toolbars now exist inside of the Server ribbon. As a result, if your existing master page does not contain the Server ribbon, many commands will be unavailable. This topic shows you how to add the Server ribbon along with any new controls or content placeholders that are required for an existing master page to render correctly in SharePoint Foundation 2010.


Microsoft SharePoint Foundation 2010


There are some controls that were previously included with the default master page that have been moved into the new Server ribbon UI. Because these controls now exist inside the Server ribbon, if you plan to update an existing master page with Server ribbon functionality, you need to remove the following controls from your existing master page. These controls will be added when your incorporate the Server ribbon into your master page.

  • Publishing Console - <PublishingConsole:Console>

  • Site Actions Menu - <PublishingSiteAction:SiteActionMenu>

  • Sign-in and Log-in Control


Important note
Important

If you are using a custom sign-in control, you can move the control inside or outside of the Server ribbon, based on your layout.

Add Content Placeholders

You must ensure that the new ContentPlaceHolder controls exist in order to update your master page to be compatible with SharePoint Foundation 2010. The following table lists all of the placeholders required for update your master page to be compatible with SharePoint Foundation 2010.

Important noteImportant

The PlaceHolderTitleAreaClass placeholder is now in the head tag. Any customizations that add a WebPartZone in a content tag to this placeholder will cause an error on the page.



Placeholder Control


Description


New


<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchTop" runat="server">


The top of the Quick Launch menu.


Yes


<asp:ContentPlaceHolder id="PlaceHolderQuickLaunchBottom" runat="server">


The bottom of the Quick Launch menu.


Yes


<asp:ContentPlaceHolder id="PlaceHolderPageTitle" runat="server"/>


The title of the site.


No


<asp:ContentPlaceHolder id="PlaceHolderAdditionalPageHead" runat="server"/>


A placeholder in the head section of the page used to add extra components such as ECMAScript (JavaScript, JScript) and Cascading Style Sheets (CSS) to the page.


No


<asp:ContentPlaceHolder id="PlaceHolderBodyAreaClass" runat="server"/>


The class of the body area.


No


<asp:ContentPlaceHolder ID="SPNavigation" runat="server">


A control used for additional page editing controls.


No


<asp:ContentPlaceHolder id="PlaceHolderSiteName" runat="server">


The name of the site where the current page resides.


No


<asp:ContentPlaceHolder id="PlaceHolderPageTitleInTitleArea" runat="server" />


The title of the page, which appears in the title area on the page.


No


<asp:ContentPlaceHolder id="PlaceHolderPageDescription" runat="server"/>


The description of the current page.


No


<asp:ContentPlaceHolder id="PlaceHolderSearchArea" runat="server">


The section of the page for the search controls.


No


<asp:ContentPlaceHolder id="PlaceHolderGlobalNavigation" runat="server">


The breadcrumb control on the page.


No


<asp:ContentPlaceHolder id="PlaceHolderTitleBreadcrumb" runat="server">


The breadcrumb text for the breadcrumb control.


No


<asp:ContentPlaceHolder id="PlaceHolderGlobalNavigationSiteMap" runat="server">


The list of subsites and sibling sites in the global navigation on the page.


No


<asp:ContentPlaceHolder id="PlaceHolderTopNavBar" runat="server">


The container used to hold the top navigation bar.


No


<asp:ContentPlaceHolder id="PlaceHolderHorizontalNav" runat="server">


The navigation menu that is inside the top navigation bar.


No


<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarDataSource" runat="server" />


The placement of the data source used to populate the left navigation bar.


No


<asp:ContentPlaceHolder id="PlaceHolderCalendarNavigator" runat="server" />


The date picker used when a calendar is visible on the page.


No


<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarTop" runat="server"/>


The top section of the left navigation bar.


No


<asp:ContentPlaceHolder id="PlaceHolderLeftNavBar" runat="server">


The Quick Launch bar.


No


<asp:ContentPlaceHolder id="PlaceHolderLeftActions" runat="server">


The additional objects above the Quick Launch bar.


No


<asp:ContentPlaceHolder id="PlaceHolderMain" runat="server">


The main content of the page.


No


<asp:ContentPlaceHolder id="PlaceHolderFormDigest" runat="server">


The container where the page form digest control is stored.


No


<asp:ContentPlaceHolder id="PlaceHolderUtilityContent" runat="server"/>


The additional content at the bottom of the page. This is outside of the form tag.


No


<asp:ContentPlaceHolder id="PlaceHolderTitleAreaClass" runat="server"/>


The class for the title area. This is now in the head tag. Any customizations that add a WebPartZone in a content tag to this placeholder will cause an error on the page.


No


<asp:ContentPlaceHolder id="PlaceHolderPageImage" runat="server"/>


This placeholder does not appear as part of the UI and must be present for backward compatibility.


No


<asp:ContentPlaceHolder id="PlaceHolderTitleLeftBorder" runat="server">


This placeholder does not appear as part of the UI and must be present for backward compatibility.


No


<asp:ContentPlaceHolder id="PlaceHolderMiniConsole" runat="server"/>


This placeholder does not appear as part of the UI and must be present for backward compatibility.


No


<asp:ContentPlaceHolder id="PlaceHolderTitleRightMargin" runat="server"/>


This placeholder does not appear as part of the UI and must be present for backward compatibility.


No


<asp:ContentPlaceHolder id="PlaceHolderTitleAreaSeparator" runat="server"/>


This placeholder does not appear as part of the UI and must be present for backward compatibility.


No


<asp:ContentPlaceHolder id="PlaceHolderNavSpacer" runat="server">


This placeholder does not appear as part of the UI and must be present for backward compatibility.


No


<asp:ContentPlaceHolder id="PlaceHolderLeftNavBarBorder" runat="server">


This placeholder does not appear as part of the UI and must be present for backward compatibility.


No


<asp:ContentPlaceHolder id="PlaceHolderBodyLeftBorder" runat="server">


This placeholder does not appear as part of the UI and must be present for backward compatibility.


No


<asp:ContentPlaceHolder id="PlaceHolderBodyRightMargin" runat="server">


This placeholder does not appear as part of the UI and must be present for backward compatibility.


No




The Server ribbon is a new addition to the UI for SharePoint Foundation. The SPRibbonPeripheralContent controls in the v4.master page contain content that renders inside the Server ribbon area. This content can be moved outside of the Server ribbon if desired. The following procedure shows the code for adding the Server ribbon to the page.

To add the Server Ribbon

  1. Open your master page file (.master).

  2. Copy and paste the following code inside the form tag to add the Server ribbon to the page.

    Important noteImportant

    The following code sample contains commented sections where you copy and paste controls from your custom master page or from the v4.master page. Any ContentPlaceholder controls inside the Global Navigation section need to be added to the page elsewhere if you do not add them within the Server ribbon.

    <div id="s4-ribbonrow" class="s4-pr s4-ribbonrowhidetitle">
      <div id="s4-ribboncont">
        <SharePoint:SPRibbon
         runat="server"
         PlaceholderElementId="RibbonContainer"
         CssFile="">
          <SharePoint:SPRibbonPeripheralContent
      runat="server"
      Location="TabRowLeft"
      CssClass="ms-siteactionscontainer s4-notdlg">
         <%-- Insert the Site Actions Menu Here --%>
         </SharePoint:SPRibbonPeripheralContent>
     
         <%-- Insert the Global Navigation Here --%>
         <SharePoint:SPRibbonPeripheralContent
           runat="server"
           Location="TabRowRight"
           ID="RibbonTabRowRight"
           CssClass="s4-trc-container s4-notdlg">
         <%-- Insert the Top-Right Corner Controls Here --%>
         </SharePoint:SPRibbonPeripheralContent>
     
        </SharePoint:SPRibbon>
      </div>
      <div id="notificationArea" class="s4-noti">
        <%-- Notifications will appear in this div element. --%> 
      </div>
      <asp:ContentPlaceHolder ID="SPNavigation" runat="server">
        <SharePoint:DelegateControl runat="server" ControlId="PublishingConsole">
        </SharePoint:DelegateControl>
      </asp:ContentPlaceHolder>
      <div id="WebPartAdderUpdatePanelContainer">
        <asp:UpdatePanel
         ID="WebPartAdderUpdatePanel"
         UpdateMode="Conditional"
         ChildrenAsTriggers="false"
         runat="server">
            <ContentTemplate>
              <WebPartPages:WebPartAdder ID="WebPartAdder" runat="server" />
            </ContentTemplate>
            <Triggers>
              <asp:PostBackTrigger ControlID="WebPartAdder" />
            </Triggers>
        </asp:UpdatePanel>
      </div>
    </div>
    
  3. Save your master page file.

REFERENCE

Major functional areas of a SharePoint interface



Figure Label

Functional Area

Description of Functionality

A


Server ribbon


The entire top portion of the UI is part of the ribbon. What is displayed depends on the user's current context.


B


Site Actions


The main menu for interacting with SharePoint, used primarily by content authors and administrators.


C


Global breadcrumbs control


A new implementation of the global breadcrumbs control that was first introduced in Microsoft Office SharePoint Server 2007. When clicked, the icon displays a dynamic HTML that shows a hierarchical view of the site. Use it to navigate up levels of the hierarchy from the current location in the hierarchy.


D


Page State Action button


The button used to control the page state, and that typically displays a shortcut to edit or save the current page.


E


Ribbon contextual tabs


Tabs present menus that are specific to the functions of the SharePoint site. What is displayed changes based on what the user is interacting with on the page. Some of the items will not be used on every site.


F


Welcome menu


This menu shows the welcome message and enables the user to view their profile, to sign out, and to sign in as a different user. If other language packs are installed, the functionality to change the user's language is also available here. When the user is not logged on, the Welcome menu also shows the Sign In link.


G


Developer Dashboard button


The button that opens the Developer Dashboard that typically appears at the bottom of the screen. The Developer Dashboard contains statistics about the page rendering and queries. This icon is shown when the Developer Dashboard's display level is set to OnDemand (other options include On and Off). Administrators can set the Developer Dashboard display level by using Windows PowerShell or by using the SharePoint API.


H


Title logo


Sometimes referred to as site icon. It typically shows the SharePoint site icon, but can display a user-defined logo instead.


I


Breadcrumb


This is a breadcrumb-like control that is specific to the v4.master master page. It includes the Site Title and the placeholder for Title in Title Area, which typically contains the Page Title. The Site Title is linked to the top level of the site.


J


Social buttons


Used for marking items as liked and for adding tags and notes to content.


K


Global navigation


Sometimes referred to as the Top Link Bar or Top Navigation Bar, it is the primary horizontal navigation mechanism for the site.


L


Search area


The search box is used to enter terms for performing searches on the site.


M


Help button


The help button links to the SharePoint 2010 help documents.


N


Quick Launch


Provides current navigation. Sometimes referred to as the Left Navigation. It is the secondary or vertical navigation mechanism of the pages related to the current location.


O


Tree View


Provides a Windows Explorer–style representation of the site. Because of its appearance, the tree view is often better suited for intranet sites.


P


Recycle Bin


Provides a link to the Recycle Bin for the site, which is the area where items are stored when deleted. Typically, this is better suited for intranet sites.


Q


All Site Content


A link to the All Site Content page. This was the View All Site Content link in Office SharePoint Server 2007. Typically, this is better suited for intranet sites.


R


Body area


Represents the main content placeholder that includes all of the content that is specific to the page. Required for rendering the content of the page.


REFERENCE

SharePoint 2010 Base CSS Classes

This will be the first of many SharePoint 2010 posts. I will be focusing on a few of the main CSS classes used for SharePoint 2010 Public Beta. As the product becomes more final there might be some changes to the class names but I will be sure to create a new post if that happens. This will be quite a lengthy but it should be helpful. The default CSS given below are just highlights of the full CSS attributes for that class.

I will be using a basic team site as my base for the screenshots.

image

Here is a basic structure of the main areas that I will cover.

  1. Ribbon Row
    • Table Row Left
      • Site Actions
      • Navigate Up
      • Edit
    • Tab List
      • Browse
      • Page
    • Table Row Right
      • Give Feedback
      • Welcome Menu
  2. Workspace
    • Body Container
      • Title Row
        • Title
          • Title Logo
          • Title Text / Breadcrumb
            • Page Description
          • Social Data
            • Separator
            • I like It
            • Tags/Notes
        • Top Header 2/Top Links
          • li Static-Selected
          • li Static
          • Search
          • Help
      • Status Bar Container
      • Main Area
        • Left Panel
          • Navigation Manager
            • li Static (Header)
            • ul li Static (Link)
          • Special Navigation Links List
            • Recycle Bin
            • View All Site Content
        • Content Table / Body Area
          • Web Part Cell
            • Web Part Header
              • WP Title
              • WP Header TD
              • WP Header Menu
              • WP Header Selection
            • Web Part Content

Ribbon Row:
Class/ID = “body #s4-ribbonrow”
Default CSS:
min-height:43px;
background-color:#21374c;
Comments: This is the container for all of the items in the top ribbon
image

Table Row Left:
Class/ID = “ms-cui-TabRowLeft”
Default CSS:
float:left;
margin-top:20px;
Comments: This is the container Site Actions, Navigate Up and Edit
image

Site Actions:
Class/ID = “ms-siteactionsmenuinner”
Default CSS:
border-color:#21374C;
border-top-color:#394f63;
background:url("/_layouts/images/bgximg.png") repeat-x -0px -467px;
background-color:#21374c;
Comments: Main Style for Site Actions menu
image

Navigate Up:
Class/ID = “.s4-breadcrumb-anchor,.ms-qatbutton”
Default CSS:
margin:0px 3px 0px 0px;
padding:2px 5px 0px;
Comments: There is an image “fgimg.png” that sits within an “A” hyperlink Tag. This image is large and has many icons in it. It uses inline absolute positioning to show the correct Icon.
”position: absolute; top: -112px !important;”
image

Here is what the “fgimg.png” image looks like:

FGIMG

Edit:
Class/ID = “.s4-breadcrumb-anchor,.ms-qatbutton” (Same as Above)
Default CSS:
Same As Above
Comments: Same as above except that the background image position is different. “position: absolute; top: -235px;”
image 

Browse:
Class/ID = “.ms-cui-tt-s > .ms-cui-tt-a”
Default CSS:
border-color:#b6babf;
background-color:#fff;
color:#23272c !important;
Comments: This is the selected state of the browse button. Note the “s” at the end of the class.
image

Page:
Class/ID = “.ms-cui-tt-span”
Default CSS:
padding:4px 10px 4px;
border-top:1px solid transparent;
text-align:center;
Comments: This is the non-selected state of the page button.
image

Give Feedback:
Class/ID = “No Class Or ID Specified, See below”
Default CSS:
Inline CSS and Image
Comments: If you would like to remove this icon via CSS, use the following:
.ms-cui-TabRowRight a img{
display: none;
}

image

Welcome Menu:
Class/ID = “.ms-welcomeMenu”
Default CSS:
padding:2px 5px 3px;
margin:0px 3px;
font-size:1em;
font-family:Verdana,sans-serif;
border:1px solid transparent;
Comments: The class for the arrow is “.ms-viewselector-arrow”
image 


Workspace:
Class/ID = “body #s4-workspace”
Default CSS:
overflow:visible !important;
overflow-y:scroll;
overflow-x:auto;
position:relative;
left:0px;
Comments: This is the container and scroll area for the site. 
image

Body Container:
Class/ID = “body #s4-bodyContainer”
Default CSS:
min-width:760px;
Comments: This class controls the minimum width. 

Title Row:
Class/ID = “body #s4-titlerow”
Default CSS:
display:block !important;
Comments: This is the container for the Title, Tags, Ribbon, Main navigation, Search and Help.
image

Title Row:
Class/ID = “.s4-title”
Default CSS:
padding:0px 0px 0px 10px;
margin:0px;
min-height:64px;
background:url("/_layouts/images/bgximg.png") repeat-x -0px -1013px;
background-color:#f9f9f9;
word-wrap:break-word;
-ms-word-wrap:break-word;
overflow-x:hidden;
Comments: Notice that there is a min height of 64px and a background image is applied by default.
image Title Logo:
Class/ID = “.s4-titlelogo”
Default CSS:
padding:12px 10px 12px 0px;
text-align:center;
vertical-align:middle;
Comments: The logo can be changed via the Admin UI. Default Image size is 35x35px
image

Title Text:
Class/ID = “.s4-titletext”
Default CSS:
width:100%;
Comments: The title text is also the bread crumb.
image 

Page Description:
Class/ID = “.s4-title .s4-pagedescription,.s4-title .s4uniqpermdescription”
Default CSS:
margin-top:6px;
font-size:1em;
color:#5d6878;
font-weight:normal;
Comments: This only shows up if you have specified a description of the site.
image

Social Data:
Class/ID = “ms-socialNotif-Container”
Default CSS:
width:120px;
overflow-x:auto;
overflow-y:hidden;
padding:0px 3px;
Comments: This is the container that holds both I Like It and Notes.
image 

Social Separator:
Class/ID = “.ms-socialNotif-groupSeparator”
Default CSS:
height:60px;
position:relative;
top:4px;
margin:0px 3px;
border-right:1px solid;
border-right-color:#e7e7e8;
Comments: This is the slight line on the left of the social tags.
image

I Like It:
Class/ID = “.ms-socialNotif”
Default CSS:
width:48px;
height:60px;
overflow:hidden;
margin:0px 1px;
padding:0px 2px;
border:1px solid transparent;
Comments: This class is shared with the tags and notes. The text uses the class “.ms-socialNotif-text” and the image “mossfgimg.png” with inline style of
position: absolute; top: -132px !important;

Here is what the “mossfgimg.png” image looks like:

MOSSFGIMG

Tags & Notes:
Class/ID = “.ms-socialNotif”
Default CSS: 
Same As “I Like It” above 
Comments: This class is shared with the I like It Feature. The image “mossfgimg.png” with inline style of
position: absolute; top: -300px !important;

Top Header 2:
Class/ID = “body #s4-topheader2”
Default CSS: 
background:url("/_layouts/images/selbg.png") repeat-x left top;
background-color:#f6f6f6;
vertical-align:middle;
min-height:25px;
border-top:1px solid #e0e0e0;
border-bottom:1px solid #b8babd; 
Comments: This class makes up the majority of the navigation row style.

Top Links:
Class/ID = “.s4-toplinks”
Default CSS: 
padding:0px; 
Comments: This is the container for the main navigation, search and help.
image

Top Link Selected:
Class/ID = “.s4-toplinks .s4-tn a.selected”
Default CSS: 
border-color:#91cdf2;
border-bottom-color:#addbf7;
border-top-color:#c6e5f8;
background:url("/_layouts/images/selbg.png") repeat-x left top;
background-color:#ccebff;
color:#003759;
padding:4px 5px;
margin:0px 5px; 
Comments: The hover class is “.s4-toplinks .s4-tn a.selected:hover”
image 

Top Link Static:
Class/ID = “.s4-tn li.static > .menu-item”
Default CSS: 
color:#3b4f65;
white-space:nowrap;
border:1px solid transparent;
padding:4px 10px;
height:15px; 
Comments: The hover class is “.s4-tn li.static > a:hover”
image 

Search:
Class/ID = “.s4-search table”
Default CSS: 
width: 212px;
margin-right: 17px;  
Comments: This is the container for the search box. The class resides in the Search.css file.
image 

Search Input:
Class/ID = “.s4-search input”
Default CSS: 
width: 212px;
margin-right: 17px;  
Comments: Note that this class does not change width, border color or height. You could use this to change the background color.

Search Image:
Class/ID = “.s4-search .ms-searchimage”
Default CSS: 
background-color:#fff;
border:1px solid #e3e3e3 !important;
height:16px;
padding:2px 3px 1px;
border-left:none !important;
margin-top:3px;  
Comments: This class controls the border around the go image.
image

Help:
Class/ID = “.s4-help”
Default CSS: 
margin:4px;  
Comments: This uses the “fgimg.png” with inline style of:
position: absolute; top: -293px !important;
image


Status Bar Container:
Class/ID = “.s4-statusbarcontainer”
Default CSS: 
None  
Comments: I am not 100% sure where or how this is used. I can only imagine that this is a publishing class.

Main Area:
Class/ID = “body #s4-mainarea”
Default CSS: 
float:left;
clear:both;  
Comments: This includes both left navigation and content
imageLeft Panel:
Class/ID = “body #s4-leftpanel”
Default CSS: 
width:155px;
float:left;  
Comments: This is the left navigation
image 

Left Panel Headers:
Class/ID = “.s4-ql ul.root > li > .menu-item,.s4-qlheader,.s4-qlheader:visited”
Default CSS: 
font-size:1.2em;
color:#0072bc;
margin:0px;
padding:3px 4px 3px 10px;
word-wrap:break-word;
overflow-x:hidden;  
Comments: This class controls the look of the header text
image

Left Panel Links:
Class/ID = “.s4-ql ul.root ul > li > a”
Default CSS: 
padding:3px 4px 4px 10px;
color:#3b4f65;
word-wrap:break-word;
overflow-x:hidden;
zoom:1;  
Comments: This class controls the look of the link text
image 

Special Navigation Links List:
Class/ID = “.s4-specialNavLinkList”
Default CSS: 
margin:0px;
border-top:1px solid #dbddde;
padding-top:5px; 
Comments: This class makes the line above the recycle bin
image 

Recycle Bin:
Class/ID = “.s4-specialNavLinkList a”
Default CSS: 
padding:3px 4px 3px 10px;
color:#3b4f65; 
Comments: This is a shared class with view all site content
image

View All Site Content:
Class/ID = “.s4-specialNavLinkList a”
Default CSS: 
Same As Above
Comments: This is a shared class with Recycle Bin
image 

Content Table Body Area:
Class/ID = “.s4-ca”
Default CSS: 
margin-left:155px;
margin-right:0px;
min-height:324px;
Comments: This is main class for the body content. Notice the 155px margin to the left. This basically moves the content over so that it does not overlap the left navigation.
image

Web Part Cell:
Class/ID = “.s4-wpcell”
Default CSS: 
border:1px solid transparent;
Comments: This would be a good class to define a pixel line around web parts.
image
Web Part Header:
Class/ID = “.ms-WPHeader”
Default CSS: 
background-color:#FFFFFF;
Comments: This controls the background color of the wp header.

Web Part Header TD:
Class/ID = “.ms-WPHeader td”
Default CSS: 
border-bottom:1px solid #EBEBEB;
Comments: This controls the border color of the wp header.

Web Part Header Menu:
Class/ID = “.ms-WPHeaderTdMenu”
Default CSS: 
width:21px;
border:1px solid transparent;
Comments: This class is for the web part menu spacing.
image 

Web Part Header Selection:
Class/ID = “.ms-WPHeaderTdSelection”
Default CSS: 
width:21px;
Comments: This class is for the web part selector spacing.
image 

Web Part Content:
Class/ID = “.ms-wpContentDivSpace”
Default CSS: 
margin-left:5px;
margin-right:5px;
Comments: This class adds marginal space left and right for the web part content.

There are many many many more classes that I could cover but these are some of the main ones to get you going. I will cover more in future posts.

Please leave a comment!

Popular Posts