Я создал кнопку быстрого доступа на панели инструментов редактирования сайта 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";
}
}