整体隐藏site actions有很多方法,可以从后台代码中隐藏,也可以在UI上使用JS隐藏,这篇文章写的是在UI上整体隐藏site actions的方法,针对的情形是:在SharePoint的开发中,有的时候会在site actions上添加隐藏的custom action,来实现一些功能。如果在后台代码中隐藏了site actions,那么自定义的action会失效;而在UI上隐藏,就不会有这样的问题。
首先,创建工程,添加一个自定义的custom action:
<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
<CustomAction
Id="HideSiteActions.SiteActionAddPoint"
GroupId="SiteActions"
Location="Microsoft.SharePoint.StandardMenu"
Sequence="1003"
ControlAssembly="$SharePoint.Project.AssemblyFullName$"
ControlClass="HideSiteActions.SiteActionAddPoint"/>
</Elements>
然后再添加一个文件,即ControlClass指向的类:
namespace HideSiteActions
{
public class SiteActionAddPoint : Control
{
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
bool HideSiteActions = true;
//check permissions to set HideSiteActions to false or true.
//HideSiteActions = SPContext.Current.Web.DoesUserHavePermissions(SPBasePermissions.FullMask);
if (HideSiteActions)
{
string JSKey = "JSHideSiteActions";
Type JSType = this.GetType();
string JScript = string.Format("document.getElementById('siteactiontd').style.display = 'none';");
if (!this.Page.ClientScript.IsStartupScriptRegistered(JSType, JSKey))
{
this.Page.ClientScript.RegisterStartupScript(JSType, JSKey, JScript, true);
}
}
}
}
}
这个类很简单,重写了OnPreRender方法输出一段用来隐藏Site Actions的js代码。
HideSiteActions变量是用来根据当前用户的权限来控制是否隐藏site actions。
完整代码:Hide Site Actions