天天看點

SP2010:從Ribbon功能區移除操作

        當你使用SP2010,往富HTML編輯器中輸入文本時,你得到豐富的功能區體驗。使用這些功能區,你可以做很多事情,如格式化文本。

SP2010:從Ribbon功能區移除操作

        這對内容編輯器Web部件有效,以及HTML内容域,如網站列,或者内容類型列。

        編輯器包含許多組(字型、段落等),每個組裡都有不同的操作,像Bold、Italic、Underline等等。

        添加項目時,可以使用DeclarativeXML建立自定義操作,本專欄有相應文章。

        如果要移除一些操作或組時怎麼辦呢?

        或者針對不同母版頁和(或)頁面布局,你需要給不同頁面類型去掉操作(或組)呢?

        下面是一些C#代碼,使用SP API允許你完成這個任務。

基本步驟:

1.      建立VS項目

2.      打開Web UserControl項目類型

3.      添加C#代碼,隐藏頁籤

4.      在母版頁添加這個使用者控件的一個引用

        (非常酷)新的VS2010 IDE有許多SP相關的項目類型。

A.     打開VS2010,建立項目

B.     選擇SP2010組

C.     選擇空白SP項目,命名為SPR.Utilities

D.     選擇部署為場解決方案,完成。

2.      添加映射檔案夾。

        現在我們需要添加代碼到Ribbon Item Hider----實際上我們不需要feature----隻需要能添加到CONTROLTEMPLATES檔案夾的東西----在14中----SP根檔案夾。

A.     右擊跟項目節點(解決方案管理器的黑體文字)

B.     添加SP映射檔案夾

SP2010:從Ribbon功能區移除操作

C.     展開TEMPLATE檔案夾

D.     點選CONTROLTEMPLATES,确定

        這樣增加了一個位址,我們可以添加項目代碼和ASCX(web使用者控件)

        我們仍然需要一個子檔案夾----否則代碼片會在同一個檔案夾中,作為SP OOTB 項目----那個檔案夾有超過90個項目呢。

E.      右擊CONTROLTEMPLATES檔案夾----點選添加---檔案夾

F.      改名為SPR.Utilities。

3.      添加web使用者控件項目

A.     右擊SPR.Utilities檔案夾

B.     添加----建立項

C.     在SP2010組,選擇使用者控件項目

D.     重命名為RibbonItemHider。

4.      添加代碼—耶耶

        使用者控件放在SP母版頁上,是以,總有SPContext和SPRibbon對象可用。

        我們真的隻需要做下面的邏輯:

A.     在頁面上建引用到SPRibbon對象

B.     隐藏我們不想展示的項目

C.     沒啦!!!

        需要添加引用到下面的DLL----在添加引用後粘貼這個路徑。

        C:\Program Files\CommonFiles\Microsoft Shared\Web ServerExtensions\14\ISAPI\Microsoft.Web.CommandUI.dll

        在Page_Load事件中,添加如下代碼:

        你在SPRibbon下會得到一些波浪線,隻需點選Ctrl+.,并選擇添加using語句,如下:

SP2010:從Ribbon功能區移除操作

        很明顯,你可能會想到,在TrimById方法中,并沒有包含xxxxxxxxxxxx,這将與下面檔案的一個進入點有關:C:\Program Files\Common Files\Microsoft Shared\Web ServerExtensions\14\TEMPLATE\GLOBAL\XML\CMDUI.XML。

A.     在IE中打開這個檔案----很大的哦

B.     搜尋“Ribbon.EditingTools.CPEditTab.Groups”

C.     子節點是你感興趣的那些----GROUP節點的集合

D.     這些組應該很熟悉----它們與功能區上的窗格有關:

        a.      Ribbon.EditingTools.CPEditTab.EditAndCheckout

        b.      Ribbon.EditingTools.CPEditTab.Clipboard

        c.      Ribbon.EditingTools.CPEditTab.Font

        d.      Ribbon.EditingTools.CPEditTab.Paragraph

        e.      Ribbon.EditingTools.CPEditTab.Styles

        f.       Ribbon.EditingTools.CPEditTab.Layout

        g.      Ribbon.EditingTools.CPEditTab.Markup

E.      使用這些ID可以隐藏功能區

SP2010:從Ribbon功能區移除操作

        并且,進一步,你可以隐藏單個按鈕----不隻是整個組。

        在GROUP節點中,有控件集合。如果我們把CPEditTab.Font節點展開,你會發現螢幕上顯示的所有按鈕。

SP2010:從Ribbon功能區移除操作

        是以----隐藏Bold、Underline和Italic按鈕的代碼—是:

  ribbon.TrimById("Ribbon.EditingTools.CPEditTab.Font.Bold");

  ribbon.TrimById("Ribbon.EditingTools.CPEditTab.Font.Italics");

  ribbon.TrimById("Ribbon.EditingTools.CPEditTab.Font.Underline");

        簡單嗎?我們這就投入使用。

F.      部署并使用控件

        a.      右擊項目節點,選擇部署

        然後我們需要從母版頁引用控件

        b.      使用SPD2010 打開你選擇的母版頁

        c.      在頂部添加下列标簽

<%@ Register TagPrefix="SPR"TagName="RibbonItemHider"src="~/_controltemplates/SPR.Utilities/RibbonItemHider.ascx" %>

SP2010:從Ribbon功能區移除操作

        現在我們隻需在母版頁某處使用這個标簽。我在緊跟<body>後添加如下代碼,保證把它添加到HTML body中,而不是HEAD部分

<SPR:RibbonItemHider id="RibbonItemHider" runat="server"/>

G.     測試一下

        傳回SP—改變母版頁為你剛編輯的,你會看到功能區被隐藏了。

SP2010:從Ribbon功能區移除操作

H.     結語

        使用同樣的架構,可以隐藏其他功能----如果你需要限制編輯者、作者等的權限的話。