使用JS隐藏Site Actions

整体隐藏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


你可能感兴趣的:(js,SharePoint,site,2010,actions)