Скрытие пользовательской кнопки быстрого доступа в Sharepoint 2007 программным путем - PullRequest
2 голосов
/ 10 мая 2011

Я создал кнопку быстрого доступа на панели инструментов редактирования сайта Sharepoint 2007, изменил файл CustomQuickAccess.xml, добавив в него мои кнопки

Написал код для обработки обратной передачи и т. Д. Я хочу скрыть кнопку для определенных типов содержимого или на основе метаданных для документа. Я переопределяю свойство visible и т. Д. В своем коде и пытаюсь скрыть, но кнопка все равно отображается. Заранее спасибо за помощь. Ниже приведен код для действия кнопки / консоли (а также разметки 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";
}

}

...