當你使用SP2010,往富HTML編輯器中輸入文本時,你得到豐富的功能區體驗。使用這些功能區,你可以做很多事情,如格式化文本。
這對内容編輯器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映射檔案夾
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語句,如下:
很明顯,你可能會想到,在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可以隐藏功能區
并且,進一步,你可以隐藏單個按鈕----不隻是整個組。
在GROUP節點中,有控件集合。如果我們把CPEditTab.Font節點展開,你會發現螢幕上顯示的所有按鈕。
是以----隐藏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" %>
現在我們隻需在母版頁某處使用這個标簽。我在緊跟<body>後添加如下代碼,保證把它添加到HTML body中,而不是HEAD部分
<SPR:RibbonItemHider id="RibbonItemHider" runat="server"/>
G. 測試一下
傳回SP—改變母版頁為你剛編輯的,你會看到功能區被隐藏了。
H. 結語
使用同樣的架構,可以隐藏其他功能----如果你需要限制編輯者、作者等的權限的話。