日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

动手扩充FreeTextBox的功能

發布時間:2023/11/27 生活经验 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 动手扩充FreeTextBox的功能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
作者:朱俊
代碼:C#


關鍵字:FreeTextBox、流媒體

出自:http://blog.csdn.net/foxmail/archive/2004/08/21/81096.aspx

摘要:最近一個項目要求可以在發表文章的時候能發布電影,當然不可能叫用戶去寫HTML代碼了,于是決定擴充FreeTextBox的功能,即為它增加一個工具欄按鈕,實現發布在線電影的功能。

FreeTextBox是.Net環境下廣為流行的RichText編輯器,CSDN的blog在發表文章時就是使用的它。

最近一個項目要求可以在發表文章的時候能發布電影,當然不可能叫用戶去寫HTML代碼了,
于是決定擴充FreeTextBox的功能,即為它增加一個工具欄按鈕,實現發布在線電影的功能。

沒有看相關的文章,直接打開FreeTextBox的源代碼工程,發現工程結構組織還是比較好,
源代碼也有注釋,注意到ToolbarControls目錄下面有ToolbarItem.cs、ToolbarItems.cs和
ToolbarButton.cs ,肯定是在這里了。粗看了一下代碼,
發現在ToolbarItems.cs有很多靜態屬性,分別返回很多ToolbarButton。
其中有很熟悉的:

??/// <summary>
??/// Returns a ToolbarButton with InsertImageFromGallery JavaScript functions builtin
??/// </summary>???
??public static ToolbarButton InsertImageFromGallery {
???get {
????ToolbarButton button = new ToolbarButton("插入圖片(來自圖片庫)","insertimagefromgallery","FTB_InsertImageFromGallery_CLIENTID");
????button.ScriptBlock = @"<script language=""JavaScript"">
function FTB_InsertImageFromGallery_CLIENTID(editor,htmlmode) {
?if (htmlmode) return;
?editor.focus();

?obj = FTB_GetRangeReference(editor);
?if (obj.tagName == 'IMG') {
??editor.document.execCommand('insertimage',1,'');
??return;
?}

?var folder = 'IMAGEGALLERYPATH';
?var galleryscript = FTB_HelperFilesPath + 'ftb.imagegallery.aspx?rif='+folder+'&cif='+folder;
?if (FTB_HelperFilesParameters != '') galleryscript += '&' + FTB_HelperFilesParameters;
?imgArr = showModalDialog(galleryscript,window,'dialogWidth:560px; dialogHeight:500px;help:0;status:0;resizeable:1;');

?if (imgArr != null) {
??imagestring = '<IMG SRC=""' + imgArr['filename'] + '"" HEIGHT=' + imgArr['height'] + ' WIDTH=' + imgArr['width'] + ' BORDER=0>';
??sel = editor.document.selection.createRange();
??sel.pasteHTML(imagestring);
?} else {
??alert(""您沒有選擇圖片。"");
?}
}
</script>";
????return button;
???}
??}?

沒錯,這段代碼就是為什么你按下插入圖片(來自圖片庫)按鈕,會出來一個網頁對
話框,讓你選擇圖片的原因。注意看其中的
var galleryscript = FTB_HelperFilesPath + 'ftb.imagegallery.aspx?rif='+folder+'&cif='+folder;
if (FTB_HelperFilesParameters != '') galleryscript += '&' + FTB_HelperFilesParameters;
imgArr = showModalDialog(galleryscript,window,'dialogWidth:560px; dialogHeight:500px;help:0;status:0;resizeable:1;');

整個FreeTextBox的編輯操作幾乎都是在客戶端完成,這是它的高明之處,否則動不動
就PostBack,服務器受不了,寫文章的人也受不了。

既然找到了按鈕功能是如何實現的,就依樣畫葫蘆,增加如下代碼:

??public static ToolbarButton InsertMovie
??{
???get
???{
????ToolbarButton button = new ToolbarButton("插入電影","InsertMovie","FTB_InsertMovie_CLIENTID");
????button.ScriptBlock = @"<script language=""JavaScript"">
function FTB_InsertMovie_CLIENTID(editor,htmlmode) {
?if (htmlmode) return;
?editor.focus();

?var filmURL = window.prompt('支持電影格式為:avi、mpg、mpeg、asf、wmv、ra和ram等。/n請輸入電影地址','Http://');

?if (filmURL != null) {
??filmstring = '<object classid=""clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6"" id=""WindowsMediaPlayer1"">';
??filmstring +='<param name=""URL"" value=""'+filmURL+'"">';
??filmstring +='<param name=""AutoSize"" value=""0"">';
??filmstring +='<param name=""AutoStart"" value=""0"">';
??filmstring +='</object>';
??sel = editor.document.selection.createRange();
??sel.pasteHTML(filmstring);
?} else {
??//alert(""您沒有選擇圖片。"");
?}
}
</script>";
????return button;
???}
??}?

其中var filmURL = window.prompt('支持電影格式為:avi、mpg、mpeg、asf、wmv、ra和ram等。/n請輸入電影地址','Http://');
得到用戶輸入的電影地址,考慮到項目進度要求,沒有采用圖片庫那種方式,而是直接輸入電影網址的方式。

按鈕做好了,如何讓它出現在工具欄呢?好辦。
搜索InsertImageFromGallery,我只要找到人家怎么加的,我就可以加了。
結果只出來13個結果,看到其中有幾個是Support/ToolbarGenerator.cs,可以肯定,就是這了。

點擊搜索結果,可以看到如下代碼:
public class ToolbarGenerator {
//Toolbar layouts
public static string DefaultConfigString = "Bold,Italic,Underline,Strikethrough;Superscript,Subscript,RemoveFormat|FontFacesMenu,FontSizesMenu,
FontForeColorsMenu|JustifyLeft,JustifyRight,JustifyCenter,JustifyFull;BulletedList,NumberedList,Indent,Outdent;
CreateLink,Unlink,InsertImageFromGallery,InsertTable,InsertRule|Cut,Copy,Paste;Undo,Redo,Print,ieSpellCheck";

public static string AlternateConfigString = "Save,Print,Undo,Redo,WordClean,InsertTable|ParagraphMenu,FontFacesMenu,FontSizesMenu,FontForeColorPicker,
FontBackColorPicker,SymbolsMenu|Bold,Italic,Underline,Strikethrough;Superscript,Subscript,RemoveFormat|
JustifyLeft,JustifyRight,JustifyCenter,JustifyFull;BulletedList,NumberedList,Indent,Outdent;CreateLink,Unlink,
InsertImageFromGallery,InsertRule|Cut,Copy,Paste,ieSpellCheck";

public static string EnableAllConfigString = "ParagraphMenu,FontFacesMenu,FontSizesMenu|FontForeColorsMenu,FontForeColorPicker,FontBackColorsMenu,
FontBackColorPicker|Bold,Italic,Underline,Strikethrough,Superscript,Subscript;InsertImageFromGallery,CreateLink,
Unlink,RemoveFormat|JustifyLeft,JustifyRight,JustifyCenter,JustifyFull;BulletedList,NumberedList,Indent,Outdent|
Cut,Copy,Paste,Delete;Undo,Redo,Print,Save|StyleMenu,SymbolsMenu,InsertHtmlMenu|InsertRule,InsertDate,
InsertTime,WordCount,ieSpellCheck,WordClean,InsertTable";

public static string MinimalConfigString = "Bold,Italic,Underline";?

用過FreeTextBox的朋友都知道,FreeTextBox有幾種工具欄的模式,顯然,這里就是定義不同工具欄出現不同按鈕的地方,除了最后一種很少按鈕的模式以外,其它的都有InsertImageFromGallery,而CSDN的工具欄里面沒有從圖片庫插入圖片這個按鈕,看來我們CSDN的開發人員也已經改過這些代碼:)

上面的代碼只不過是定義一些字符串,肯定還有解析的地方,在搜索結果里,還有這么一段:
case "insertimagefromgallery":
???????? return ToolbarItems.InsertImageFromGallery;
是了,就是在這里解析的。于是,再次依樣畫葫蘆,加入如下代碼
case "insertmovie":
???????? return ToolbarItems.InsertMovie;

同時,修改定義部分為:
public static string EnableAllConfigString = "ParagraphMenu,FontFacesMenu,FontSizesMenu|FontForeColorsMenu,FontForeColorPicker,
FontBackColorsMenu,FontBackColorPicker|Bold,Italic,Underline,Strikethrough,Superscript,Subscript;
InsertMovie,InsertImageFromGallery,CreateLink,Unlink,RemoveFormat|JustifyLeft,JustifyRight,JustifyCenter,
JustifyFull;BulletedList,NumberedList,Indent,Outdent|Cut,Copy,Paste,Delete;Undo,Redo,Print,Save|StyleMenu,
SymbolsMenu,InsertHtmlMenu|InsertRule,InsertDate,InsertTime,WordCount,ieSpellCheck,WordClean,InsertTable";

即在InsertImageFromGallery旁邊加入了InsertMovie,

編譯,一次通過,把生產的FreeTextBox.DLL復制到項目文件夾,一運行發表文章,成功!

效果如下圖:



圖中用黃圈圈起來的按鈕就是我們增加的發布電影功能,試一下,你也可以為FreeTextBox增加各種各樣的功能,開發出獨具個性的產品:)

總結

以上是生活随笔為你收集整理的动手扩充FreeTextBox的功能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 污的网站 | 久久久国产高清 | 亚洲五码av | 九九久久视频 | 欧美阿v | 国产精品久久久久久亚洲伦 | 黄色三级网站在线观看 | 黄色无毒网站 | 91性视频| 麻豆久久久久久久 | 国产乱论| 亚洲欧美日韩综合 | 欧美视频在线一区 | 91亚色在线观看 | 激情另类小说 | 潘金莲激情呻吟欲求不满视频 | 天天操天天摸天天干 | 在线观看免费福利 | 亚洲一区自拍偷拍 | 国产内射老熟女aaaa∵ | 人人艹人人 | 美女精品视频 | 黄瓜污视频| 黄色在线视频播放 | 国产做爰全过程免费视频 | 三年中文免费观看大全动漫 | 好男人在线视频www 亚洲福利国产 | 成人性生交生交视频 | 亚州av一区| 魔女鞋交玉足榨精调教 | 国产精品久久av无码一区二区 | 亚洲色偷偷综合亚洲av伊人 | 日韩精品导航 | 夜夜免费视频 | 欧美一级大黄 | 福利国产视频 | 国产精品后入内射日本在线观看 | 国产精品不卡一区二区三区 | 亚洲性在线 | 五月婷网站| 欧美精品亚洲精品日韩精品 | 精品在线免费视频 | 黄色片播放器 | 美女一区| 69视频一区二区三区 | 亚洲一区二区三区免费 | 一区二区三区中文字幕 | 国产免费大片 | 靠逼视频网站 | www.狠狠插 | 国精品人妻无码一区二区三区喝尿 | 日本h在线观看 | 久久bb| 午夜激情成人 | 久草网视频在线观看 | 精人妻一区二区三区 | 国产高清精品在线观看 | 成人av网址在线 | 日韩一区欧美二区 | 经典杯子蛋糕日剧在线观看免费 | 亚洲欧美偷拍一区 | 真人真事免费毛片 | 精品视频一二三 | 久久精热 | 国产又粗又猛又黄 | 91精品国产色综合久久不卡粉嫩 | 欧美极品在线视频 | 明星毛片 | 久久精品店 | 97超碰人人| 日本精品一区在线观看 | 人人艹人人爽 | 成人在线电影网站 | 国产亚洲毛片 | 久久久久无码精品国产sm果冻 | 国产精品女主播 | 91精品国产综合久 | 日本少妇性生活 | 婷婷中文在线 | 国产三级在线播放 | 91九色在线视频 | 欧美另类v| 污网站免费在线 | 偷偷在线观看免费高清av | 女生脱裤子让男生捅 | 国产乱论视频 | 色一区二区三区四区 | 日韩在线中文字幕视频 | 久久艹av| 黄色片网站免费在线观看 | av免费观看入口 | 性国产精品 | 亚洲综合久久av一区二区三区 | 一区二区三区久久久 | 影音先锋日韩资源 | 蜜桃久久av | 日本高清视频网站 | 超碰五月| 免费在线观看av网站 |