Ocultar un botón de acceso rápido personalizado en Sharepoint 2007 mediante programación

Creé un botón de acceso rápido en la barra de herramientas de edición de un sitio de Sharepoint 2007, modifiqué el archivo CustomQuickAccess.xml para incluir mis botones

Escribí el código detrás para manejar la devolución de datos, etc. Lo que quiero hacer es ocultar el botón para ciertos tipos de contenido o según los metadatos del documento. Anulo la propiedad visible, etc.en mi código detrás e intento ocultarme, pero el botón aún se muestra. Gracias de antemano por tu ayuda. A continuación se muestra el código subyacente para la acción del botón / consola (así como el marcado CustomQuickAccess.xml):

<?xml version="1.0" encoding="utf-8" ?>
    <Console>
    <references>
        <reference TagPrefix="myToolbar"
        assembly="MyCustom_PageEditToolbarQuickAccess, Version=1.0.0.0, 
        Culture=neutral, PublicKeyToken=f3a1dd21f335f2ad"
        namespace="MyCustom_PageEditToolbarQuickAccess" />
    </references>
    <structure>
        <ConsoleNode 
            Action="myToolbar:PageEditingToolbarArchive"
            DisplayText="Archive Item" 
            ConfigMenu="Add"
            UseResourceFile="false" 
            Sequence="1900" 
            RequiredRightsMode="Any"
            HideIfDisabled="true"
            ID="ArchiveItem" />
        <ConsoleNode 
            Action="MyToolbar:PageEditingToolbarRetain"
            DisplayText="Keep Item" 
            ConfigMenu="Add"
            UseResourceFile="false" 
            Sequence="1901" 
            RequiredRightsMode="Any"
            HideIfDisabled="true"
            ID="KeepItem" />
    </structure>
    </Console>

using System;
using System.Collections.Generic;
using System.Text;
using System.ComponentModel;
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 MyCustom_PageEditToolbarQuickAccess
{
    public sealed class PageEditingToolbarArchive : ConsoleAction
    {

    SPListItem _item;

    /// <summary>
    /// constructor
    /// </summary>
    public PageEditingToolbarArchive()
        : base()
    {
        _item = SPContext.Current.ListItem;
        this.DisplayText = "Archive Item";
        //this.ImageUrl = "/_layouts/images/bdc1tom.gif";

    }


//HERE IS MY INTENT--------
    //public override bool Visible
    //{
    //    get
    //    {
    //        SPListItem item = SPContext.Current.ListItem;
    //        if (MySPutility.Content.doesContentTypeExpire(item)
    //            return false;
    //        else
    //            return base.Visible;
    //    }
    //    set
    //    {
    //        base.Visible = value;
    //    }
    //}

    /// <summary>
    /// returns the permissions required to use this action, 
    /// otherwise button is disabled
    /// </summary>
    public override SPBasePermissions UserRights
    {
        get {
            if (_item != null && MySPutility.Content.doesContentTypeExpire(_item))
            {
                return SPBasePermissions.EditListItems;
            } else {
                return SPBasePermissions.EmptyMask;
            }
            //return SPBasePermissions.FullMask;
            //return SPBasePermissions.BrowseUserInfo;

        }
    }


    /// <summary>
    /// Page must be published to archive
    /// </summary>
    public override AuthoringStates RequiredStates
    {
        get
        {
            return AuthoringStates.IsPublishingPageTrue;

        }
    }

    public override void RaisePostBackEvent(string eventArgument)
    {
        string destinationListName = MySPutility.PropertyBag.PropertyBagValue("ArchiveLocation", SPContext.Current.ListItem.Web.Site.WebApplication);
        string archivedFileLocation = "";

        if (eventArgument == PageEditingToolbarArchive.ArchivePostBackEventArgument)
        {
            try
            {
                SPListItem item = SPContext.Current.ListItem;
                archivedFileLocation = MySPutility.Site.ArchiveItem(item, ((SPDocumentLibrary)item.Web.Lists[destinationListName]).RootFolder.Url, item.Web);
            }
            catch (Exception ex)
            {
                ConsoleNode actionsNode = new ConsoleNode();
                ConsoleNode exitNoArchive = new ConsoleNode(actionsNode);

                exitNoArchive.Action = new ExitWithoutSavingAction();
                exitNoArchive.Action.ID = "archiveDocumentErrorActionNeSave";
                actionsNode.ChildConsoleNodes.Add(exitNoArchive);
                this.ShowError(ex, new ConsoleError(ex.Message, actionsNode));
            }
            finally
            {
                SPUtility.Redirect(archivedFileLocation,
                    SPRedirectFlags.Default, Context);
            }


        }
        //base.RaisePostBackEvent(eventArgument);
    }

    public override string NavigateUrl
    {
        get
        {
            return "javascript:" +
                Page.ClientScript.GetPostBackEventReference(this, 
                PageEditingToolbarArchive.ArchivePostBackEventArgument);
        }
        set
        {
            base.NavigateUrl = value;
        }
    }

    private const string ArchivePostBackEventArgument = "archiveDocumentItem";
}

}

preguntado el 10 de mayo de 11 a las 13:05

0 Respuestas

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.