Partager via


Procédure : personnaliser les composants de la barre d'outils Modification de la page

La barre d'outils Modification de la page est un panneau d'éléments de l'interface utilisateur qui fournit des informations sur la page et les façons d'interagir avec celle-ci. Cette rubrique présente deux méthodes permettant de modifier la barre d'outils Modification de la page. Vous pouvez :

  • Modifier les fichiers de sources de données XML.

  • Créer un contrôle serveur personnalisé et référencer un fichier XML personnalisé dans votre contrôle.

La barre d'outils Modification de la page est divisée en trois zones principales ou contrôles d'interface utilisateur.

Contrôle d'interface utilisateur Description

Barre d'état de la page

Fournit des informations sur la version actuelle de la page. Par exemple, des informations sur la version et l'état de la page.

Menu Modification de la page

Permet à un utilisateur d'interagir avec la page en effectuant des actions telles que publier une version, approuver une version en attente et vérifier la page pour partager un brouillon.

Boutons d'accès rapide

Rendent disponibles la plupart des actions, en fonction de l'état de la page et du contexte.

Le menu Modification de la page et les boutons d'accès rapide séparent la source de données du contrôle d'interface utilisateur. En outre, vous pouvez modifier la source de données et le contrôle d'interface utilisateur indépendamment.

Modifier les fichiers de sources de données XML

Les fichiers EditingMenu.xml et QuickAccess.xml sont les sources de données XML du menu Modification de la page et des boutons d'accès rapide, respectivement. Les sources de données spécifiées dans les fichiers XML commandent la configuration et le comportement des éléments de menu dans le menu Modification de la page et les actions associées aux boutons d'accès rapide. Dans cet exemple, nous créons un objet qui remplace la classe ConsoleAction et modifions le fichier CustomQuickAccess.xml pour ajouter un bouton à la barre d'outils Modification de la page. Après la procédure suivante, un nouveau bouton apparaît sur la barre d'outils Modification de la page qui, lorsqu'il est enfoncé, permet aux utilisateurs disposant des autorisations nécessaires d'annuler le statut Extrait de l'utilisateur sur la page spécifiée.

Attention   Pour des raisons de compatibilité, ne modifiez pas le contenu des fichiers EditingMenu.xml et QuickAccess.xml. Pour personnaliser les actions et les éléments contrôlés par ces fichiers, modifiez plutôt les fichiers CustomEditingMenu.xml et CustomQuickAccess.xml files, disponibles dans le dossier Menu Modification de la galerie de pages maîtres.

Notes

Vous pouvez aussi appliquer les personnalisations décrites ici aux boutons d'accès rapide et aux menus Actions du site.

Pour créer un contrôle serveur personnalisé qui permet de modifier la configuration des boutons d'accès rapide

  1. Ouvrez Microsoft Visual Studio.

  2. Dans le menu Fichier, cliquez sur Nouveau, puis sur Site Web ASP.NET.

  3. Créez un projet.

  4. Copiez et collez le code suivant dans un fichier .cs du projet.

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Text;
    using System.Web;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    using Microsoft.SharePoint.Publishing;
    using Microsoft.SharePoint.Publishing.WebControls.EditingMenuActions;
    using Microsoft.SharePoint.Publishing.WebControls;
    using Microsoft.SharePoint;
    using Microsoft.SharePoint.Utilities;
    namespace PageEditingToolbarMenuItemControls
    {
        /// <remarks>
        /// Adds to the Quick Access toolbar a button that checks in
        /// a document that is checked out by another user.
        /// </remarks>
        public sealed class DiscardOtherUserCheckoutAction : ConsoleAction
        {
            /// <summary>
            /// This is the constructor of the specific ConsoleAction
            /// </summary>
            public DiscardOtherUserCheckoutAction() : base()
            {
                this.DisplayText = "Discard Other User's Checkout";
            }
            /// <summary>
            /// SPBasePermissions are required to use this Action.
            /// </summary>
            /// <value></value>
            public override SPBasePermissions UserRights
            {
                get { return SPBasePermissions.CancelCheckout; }
            }
            /// <summary>
            /// Checks for the AuthoringStates required for the button to be enabled.
            /// </summary>
            /// <value></value>
            public override AuthoringStates RequiredStates
            {
                get
                {
                    return AuthoringStates.CheckedOutVersionExistsTrue | AuthoringStates.IsCheckedOutToCurrentUserFalse | AuthoringStates.IsDocLibListItemTrue;
                }
            }
            /// <summary>
            /// Defines the PostBack behavior when the URL for this control is clicked.
            /// </summary>
            /// <param name="eventArgument"></param>
            public override void RaisePostBackEvent(string eventArgument)
            {
                if (eventArgument == DiscardOtherUserCheckoutAction.DiscardCheckOutPostBackEventArgument)
                {
                    try
                    {
                        SPFile myFile = SPContext.Current.File;
                        myFile.UndoCheckOut();
                    }
                    catch (SPException e)
                    {
                        ConsoleNode actionsNode = new ConsoleNode();
                        ConsoleNode exitNoSaveNode = new ConsoleNode(actionsNode);
                        exitNoSaveNode.Action = new ExitWithoutSavingAction();
                        exitNoSaveNode.Action.ID = "checkOutDiscardErrorActionExitNoSave";
                        actionsNode.ChildConsoleNodes.Add(exitNoSaveNode);
                        this.ShowError(e, new ConsoleError(e.Message, actionsNode));
                    }
                    finally
                    {
                        SPUtility.Redirect(SPContext.Current.ListItemServerRelativeUrl, SPRedirectFlags.Default, Context);
                    }
                }
            }
            /// <summary>
            /// Specifies the URL for this Action.
            /// </summary>
            /// <value></value>
            public override string NavigateUrl
            {
                get
                {
                    return "javascript:" + Page.ClientScript.GetPostBackEventReference(this, DiscardOtherUserCheckoutAction.DiscardCheckOutPostBackEventArgument);
                }
            }
           private const string DiscardCheckOutPostBackEventArgument = "discardUserCheckout";
        }
    }
    
  5. Enregistrez les modifications.

  6. Créez le projet en tant que nouvel assembly, enregistrez l'assembly dans le general assembly cache, et ajoutez une entrée <SafeControl> dans votre fichier web.config qui correspond à l'assembly et à l'espace de noms de votre contrôle personnalisé (PageEditingToolbarMenuItemControls).

  7. Redémarrez Internet Information Services (IIS).

  8. Accédez au dossier \Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\EditingMenu.

  9. Copiez et collez le fichier QuickAccess.xml, puis renommez le doublon CustomQuickAccess.xml.

  10. Modifiez le fichier CustomQuickAccess.xml et remplacez son contenu par les balises suivantes :

    <Console>
      <references>
      ///The following tag must refer to the assembly you created
      ///and compiled in step 3.
        <reference TagPrefix="demo" assembly="WebControlLibrary1, Version=1.0.11.876, Culture=neutral, PublicKeyToken=b3795d44e71a79a4" namespace="PageEditingToolbarMenuItemControls" /> 
      </references>
      <structure>
        <ConsoleNode Action="demo:DiscardOtherUserCheckoutAction" DisplayText="Discard Checkout" ConfigMenu="Add" UseResourceFile="false" Sequence="1700" RequiredRightsMode="Any" ImageUrl="/_layouts/images/ActionsSettings.gif" ID="DiscardCheckedout" />
      </structure>
    </Console>
    
  11. Enregistrez et fermez le fichier CustomQuickAccess.xml.

Créer un contrôle serveur personnalisé et un fichier XML de référence

Vous pouvez développer par programme le contenu du fichier CustomEditingMenu.xml et remplacer les paramètres contenus dans son fichier parent EditingMenu.xml. La balise incluse dans la procédure suivante contient un exemple de code pour le fichier CustomEditingMenu.xml qui ajoute un menu Liens et deux éléments, ainsi qu'une galerie Afficher les pages et une galerie Afficher les pages maîtres, au menu Modification de la page.

Pour modifier le menu Modification de la page et les boutons d'accès rapide, créez un contrôle serveur Web personnalisé. L'exemple de code ci-après montre comment créer un contrôle serveur personnalisé qui rétablit l'état archivé d'un document extrait.

Vous pouvez modifier la configuration de l'interface utilisateur de la barre d'outils Modification de la page ou des boutons d'accès rapide en modifiant directement la source de données XML ou en écrivant et déployant un contrôle serveur personnalisé. Cependant, si les sources de données sont personnalisées et qu'un contrôle serveur personnalisé est en cours d'exécution, le contrôle serveur personnalisé est toujours prioritaire et remplace les sources de données XML.

Pour modifier la source de données XML et la configuration de l'interface utilisateur de la barre d'outils Modification de la page

  1. Ouvrez un éditeur XML.

  2. Accédez au dossier \Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\TEMPLATE\LAYOUTS\EditingMenu folder.

  3. Copiez et collez les fichiers EditingMenu.xml et QuickAccess.xml pour créer des doublons. Renommez les doublons CustomEditingMenu.xml et CustomQuickAccess.xml.

  4. Copiez et collez le code suivant dans les fichiers CustomEditingMenu.xml et CustomQuickAccess.xml.

    <?xml version="1.0" encoding="utf-8" ?> 
    <Console>
      <references>
        <reference TagPrefix="cms" assembly="Microsoft.SharePoint.Publishing, Version=12.0.0.0, Culture=neutral,
          PublicKeyToken=93de0004b6e3fcc5" namespace="Microsoft.SharePoint.Publishing.WebControls.EditingMenuActions" />
      </references>
      <structure>
        <ConsoleNode ConfigMenu="Add" Sequence="600"
          NavigateUrl="javascript:" AccessKey="L" DisplayText="Links" 
          UserRights="EmptyMask" UseResourceFile="false" 
          RequiredStates="InSharedView" ID="LinksMenu" >
          <ConsoleNode 
            DisplayText="View Pages Library"
            UseResourceFile="false"
            ImageUrl="/_layouts/images/ActionsSettings.gif"
            UserRights="BrowseDirectories|ManageLists"  
            RequiredRightsMode="Any"
            PermissionContext="CurrentSite"
            IsSiteRelative="true"  
            NavigateUrl="Pages/forms/allitems.aspx"  
            ChangedNodeID="ViewPagesList">             
          </ConsoleNode>
          <ConsoleNode IsSeparatorImage="True" UserRights="EmptyMask" />
          <ConsoleNode 
            DisplayText="View Master Page Gallery" 
            UseResourceFile="false" 
            ImageUrl="/_layouts/images/ActionsSettings.gif"
            UserRights="BrowseDirectories|ManageLists"  
            RequiredRightsMode="Any"
            PermissionContext="CurrentSite"
            IsSiteRelative="false"  
            NavigateUrl="/_catalogs/masterpage/Forms/AllItems.aspx" 
            ChangedNodeID="ViewPagesLibSettings">
          </ConsoleNode>
        </ConsoleNode>
      </structure>
    </Console>
    
  5. Modifiez les éléments clés dans l'exemple de code. Le tableau suivant présente un exemple des éléments clés et des attributs du fichier d'exemple XML.

    Balise Description

    References

    Contient les références des assemblys dans la section ConsoleNode. Vous pouvez ajouter vos assemblys pour les actions personnalisées dans le menu.

    Notes

    Dans l'exemple de code, la balise <references> est facultative. Affectez la valeur True à ce paramètre si vous souhaitez prendre en charge la localisation. En outre, la balise <references> doit être présente avec un attribut PublicKeyToken qui correspond à la version de l'application utilisée.

    ConsoleNode

    Contient les éléments du menu Modification de la page. Chaque menu peut contenir les propriétés DisplayText, UserRights, RequiredRightsMode et l'énumération PermissionContext dans laquelle le menu est visible. Le menu peut être une action mappée sur un contrôle serveur dans l'assembly ou une URL.

    Vous pouvez aussi remplacer ou supprimer les entrées existantes en spécifiant l'ID du nœud existant.

    Structure

    Indique la structure du menu.

    1. Utilisez une expression booléenne pour configurer des attributs de masque de bits facultatifs. Chaque ConsoleNode dispose de deux attributs de masque de bits facultatifs pouvant être définis pour contrôler des conditions, telles que quand et où ConsoleNode est visible pour l'utilisateur.

      Type Nom de l'attribut Description

      Contexte

      RequiredStates

      Statut requis de la page ou du mode de modification avant que le nœud ne soit activé ou désactivé. Exemples de statut : InEditModeTrue, InEditModeFalse et IsCheckedOutToCurrentUserTrue.

      Droits de l'utilisateur

      UserRights

      Responsables du découpage d'accès à ConsoleNode en fonction des autorisations Windows SharePoint Services.

      Cet exemple d'expression booléenne, UserRights="BrowseDirectories|ManageLists, permet aux utilisateurs disposant de l'autorisation BrowseDirectories ou ManageLists d'accéder à ConsoleNode.

    2. Enregistrez le fichier CustomEditingMenu.xml.