Welcome to MSDN Blogs Sign in | Join | Help

Paul Andrew

Microsoft Technical Product Manager for the SharePoint Developer Platform
Module 10 - Code Snippets: Creating Dialogs and Ribbon Controls for SharePoint 2010

The following markup is a simple example of how to add a control to the Site Actions menu. This example adds a menu item that navigates the user directly to the Solutions Gallery, without requiring them to go to the Site Settings page first: 

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <CustomAction Id="NewUIActionsMenu"
    GroupId="SiteActions"
    Location="Microsoft.SharePoint.StandardMenu"
    Sequence="1970"
    Title="Manage Solutions">
    <UrlAction Url="/_catalogs/solutions/Forms/AllItems.aspx" />
  </CustomAction>
</Elements> 

 

The following markup shows how to add a control to the server ribbon. This example adds a 'Help' button to the ribbon in the same group as the built-in 'New Document', 'New Folder', and 'Upload Document' ribbon controls:

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <CustomAction
    Id="NewUIRibbonControl"
    RegistrationType="List"
    RegistrationId="101"
    Location="CommandUI.Ribbon">
    <CommandUIExtension>
      <CommandUIDefinitions>
        <CommandUIDefinition
           Location="Ribbon.Documents.New.Controls._children">
          <Button
             Id="NewUIRibbonControl.ShowHelp"
             Alt="Help"
             Sequence="1981"
             Command="ShowHelp"
             Image32by32="/_layouts/images/newui/dochelp.png"
             LabelText="Help"
             TemplateAlias="o1"/>
          </CommandUIDefinition>
        </CommandUIDefinitions>
        <CommandUIHandlers>
          <CommandUIHandler
           Command="ShowHelp"
           CommandAction="javascript:window.open('http://office.microsoft.com/training/training.aspx?AssetID=RC102345091033');" />
        </CommandUIHandlers>
      </CommandUIExtension>
    </CustomAction>
  </Elements> 

 

The following code is the source for a Visual Web Part that includes a dialog control that enables the user to change the site title. The JavaScript code uses the client object model to make the changes requested by the user.
Note: The code shows good practice by only showing the hyperlink for changing the site title after the client object model has loaded the Web object.

<a href="javascript:showTitleChanger();" href="javascript:showTitleChanger();" id="linkChanger" style="display:none;">
  Change Site Title
</a>
<div id="divEditSiteTitle" style="display:none; padding:5px">
  <b>Site Title Changer</b>
  <input type="text" id="siteTitle" />
  <br />
  <input type="button" value="Update Site Title" onclick="changeTitle()" />

</div>
<SharePoint:ScriptLink ID="showDialog" runat="server" Name="sp.js" Localizable="false" LoadAfterUI="true" />
<script language="ecmascript" type="text/ecmascript">
  var clientCtx;
  var thisWeb;
  var thisDialog;
  _spBodyOnLoadFunctionNames.push("Initialize()");
  function Initialize() {
    clientCtx = SP.ClientContext.get_current();
    thisWeb = clientCtx.get_web();
    clientCtx.load(thisWeb);
    clientCtx.executeQueryAsync(onWebLoaded,null);
  }
  function onWebLoaded() {
    var linkChanger = document.getElementById("linkChanger");
    linkChanger.style.display = "inline";
  }
  function showTitleChanger() {
    var divEditSiteTitle = document.getElementById("divEditSiteTitle");
    divEditSiteTitle.style.display = "block";
    var dialog = { html: divEditSiteTitle, width: 200, height: 200};
    thisDialog = SP.UI.ModalDialog.showModalDialog(dialog);
  }
  function hideTitleChanger() {
    thisDialog.close();
  }
  function changeTitle() {
    thisWeb.set_title(siteTitle.value);
    thisWeb.update();
    clientCtx.executeQueryAsync(onTitleUdated, null);
  }
  function onTitleUdated() {
      hideTitleChanger();
  }
</script>

Posted: Friday, October 16, 2009 2:00 PM by pandrew

Comments

No Comments

Leave a Comment

(required) 

(required) 

(optional)

(required) 

  
Enter Code Here: Required

Comment Notification

If you would like to receive an email when updates are made to this post, please register here

Subscribe to this post's comments using RSS

Page view tracker