SharePoint中的富文本编辑器控件
在sharepoint中,自帶一個html文本編輯器,可以對字體的大小,顏色甚至復(fù)制和粘貼都可以。這次做項(xiàng)目我們準(zhǔn)備通過spd把這個編輯器放到自定義的aspx頁面中。費(fèi)了很大的力氣,終于在博客堂()和另一個老外的博客上找到了答案,簡單的實(shí)現(xiàn)如下,具體的原理可以到博客堂看。
需求:把如下的控件放到自定義的aspx頁面里。
?
實(shí)現(xiàn):頁面的開頭做如下的引用:
<script type="text/javascript" lang ge="javascript" src="/_layouts/2052/form.js"></script>
把如下的代碼放到頁面響上。(文本操作欄是通過js實(shí)現(xiàn)的)
<textarea name="txtTextArea1" rows="6" cols="20" id="txtTextArea1" title="Body123" class="ms-long" ></textarea>
<script lang ge="javascript" type="text/javascript">
RTE_ConvertTextAreaToRichEdit("txtTextArea1", tr, false, "", "2052", null, null, null, null, null,"FullHtml", "\/",null,null,null,null);???
</script>
當(dāng)然,你也可以把textarea 換成服務(wù)器端的空間textbox,不過此時要注意RTE_ConvertTextAreaToRichEdit()的第一個參數(shù)和textbox的客戶端的id值對應(yīng)。
擴(kuò)展:如果你需要的是如下的html編輯器
?
只需要把RTE_ConvertTextAreaToRichEdit()方法做如下的改動:
RTE_ConvertTextAreaToRichEdit("txtTextArea1", tr, false, "", "2052", null, null, null, null, null,"Compatible", "\/",null,null,null,null); ??
?
?
今天看到博客園中的一些 SharePoint 愛好者們在討論關(guān)于 SharePoint 內(nèi)容編輯器中的文件上傳。
SharePoint Portal Server在這點(diǎn)上和一些OA應(yīng)用相比缺乏幾個特性,經(jīng)常被用戶提到:
1、只有門戶列表的編輯器才能夠添加圖片,其他如通知列表的編輯器則不能在正文中直接插入圖片。
2、內(nèi)容編輯器不能像FreeTextBox這樣方便的直接上傳圖片,必須將圖片首先上傳到文檔庫中,然后再通過URL引用。
問題確實(shí)是這樣,不符合大多數(shù)用戶的使用習(xí)慣。之前,我在開發(fā)公司門戶的時候?qū)@個問題有一點(diǎn)膚淺的了解,所以拋磚引玉,希望能夠看到更好的解決方案。
其實(shí),門戶列表和通知列表中使用的內(nèi)容編輯器是同一個控件,名字叫:RichTextBox,通過查看客戶端的HTML代碼可以分析出來。RichTextBox控件是通過Javascript創(chuàng)建的,他們之間工具條上的區(qū)別,如:剪切、復(fù)制、粘貼、添加圖片等功能按鈕取決于調(diào)用該控件時的一個屬性:RestrictedMode。當(dāng)RestrictedMode=true的時候插入圖片的功能是被禁止顯示的,此時的情況就出現(xiàn)在如通知列表編輯器的情況下。SharePoint對站點(diǎn)定義的模型確實(shí)值得稱道,對他了解越深,就越發(fā)覺得精彩。在Page UnGhosted狀態(tài)下,ONet.XML、Schema.XML、WebTemp.XML、DocIcon.XML支撐起WSS/SPS網(wǎng)站的框架結(jié)構(gòu),當(dāng)然,這里我們不是談?wù)撨@個,我們關(guān)心的是另一個文件——FldTypes.XML。用自己的話來描述,FldTypes.XML的主要用途就是定義了列表和庫的欄類型和顯示樣式。我們的主題也是從這個文件入手的!
在客戶端察看一個通知列表的添加通知頁面NewForm.aspx文件的客戶端HTML代碼中可以看到<SCRIPT>fld = new TextField(xxx,"xxx","xxx","xxx");......</script>這樣形式的一段腳本,沒錯,就是它輸出了那個令人難堪的編輯器。OK,腳步先停在這里,我們在去看FldTypes.XML文件,我喜歡用XMLSpy來查看XML,他對XML的結(jié)構(gòu)再了解不過了,
從圖中可以看到,最下面Field TypeName=Note的節(jié)就是當(dāng)我們在創(chuàng)建欄時選擇了多行文本形式時的樣式定義了。在他的子節(jié)點(diǎn)中,我們可以找到圖中的CDATA,正好和我們在客戶端看到的Javascript對應(yīng)。
明白了嗎?玄機(jī)的地方就在Javascript中!
接著向下,Javascript的定義在Ows.js文件里,一番分析,在Ows.js的6082行,function RichTextFieldBuildUI()是用來Render編輯器UI的函數(shù),而他調(diào)用了RTE_ConvertTextAreaToRichEdit。
????????????strBaseElementID,
????????????fRestrictedMode,
????????????fAllowHyperlink,
????????????strDirection,
????????????strWebLocale)
其中第二個參數(shù)fRestrictedMode參數(shù)決定了編輯框是否使用限制模式。
一番改動之后,我已經(jīng)能夠在通知列表中使用和門戶列表相同的編輯器了,可以以鏈接形式添加圖片,但保存的時候還是無法正確的保存圖片,圖片會被自動去掉,當(dāng)然,這是可以解決的,現(xiàn)在的精力容不得我繼續(xù)深究了,畢竟這不是最影響我目前項(xiàng)目的重點(diǎn)。另一方面,至于想象將RichTextBox替換成FreeTextBox的可行性,我認(rèn)為是很小的,通過修改Server端代碼幾乎沒有可能,如果你有足夠的精力改寫Ows.js中的RTE_ConvertTextAreaToRichEdit函數(shù),那么應(yīng)該是可行的辦法吧。
磚拋完了,可能幾乎沒用,只能提供一些思路。
轉(zhuǎn)載于:https://www.cnblogs.com/Areas/archive/2012/06/12/2545901.html
總結(jié)
以上是生活随笔為你收集整理的SharePoint中的富文本编辑器控件的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: FreeSql (二十一)查询返回数据
- 下一篇: ActiveMQ支持的传输协议