?? htmltextbox.cs
字號(hào):
private string GetResourceStringFromResourceManager(string key)
{
if (this._resourceManager == null)
lock (this)
if (this._resourceManager == null)
this._resourceManager = new ResourceManager("ASPNET.StarterKit.Communities.HtmlTextBox", typeof(HtmlTextBox).Module.Assembly);
return this._resourceManager.GetString(key, null);
}
// end by manudea - 15/3/2003
protected virtual void RegisterClientScript()
{
string versionInfo = System.Reflection.Assembly.GetAssembly(this.GetType()).FullName;
int start = versionInfo.IndexOf("Version=")+8;
int end = versionInfo.IndexOf(",",start);
versionInfo = versionInfo.Substring(start,end-start);
string info = @"
<!--
********************************************
* HtmlTextBox " + versionInfo + @"
* by John Dyer
* http://www.revjon.com/ftb/
********************************************
-->";
Page.RegisterClientScriptBlock(base.ID + "_Info",info);
if (IsMshtmlEditorCapable)
{
// Register common scripts from resource
if (!Page.IsClientScriptBlockRegistered("HtmlTextBoxMshtmlBaseScript") )
{
// by manudea - 15/3/2003
Page.RegisterClientScriptBlock("HtmlTextBoxMshtmlBaseScript",GetResourceStringFromResourceManager("HtmlTextBoxMshtmlBaseScript"));
}
// Register common styles from resource
if (!Page.IsClientScriptBlockRegistered("HtmlTextBoxMshtmlStyles") )
{
// by manudea - 15/3/2003
Page.RegisterClientScriptBlock("HtmlTextBoxMshtmlStyles",GetResourceStringFromResourceManager("HtmlTextBoxMshtmlStyles"));
}
// Register this control's breakmode script
Page.RegisterClientScriptBlock(base.ID + "_BreakMode", BreakModeScript());
// Register this control's pasting features
Page.RegisterClientScriptBlock(base.ID + "_OnPaste", OnPasteScript());
// Register this control's button styles
if (ButtonType != ButtonType.FormButton) Page.RegisterClientScriptBlock(base.ID + "EditorStyles", EditorStyles());
string ButtonPreload = "";
string ButtonPrefix = "";
ButtonPrefix = this.ButtonPath.Substring(0,ButtonPath.Length-1);
ButtonPrefix = ButtonPrefix.Substring(ButtonPrefix.LastIndexOf("/")+1,ButtonPrefix.Length-ButtonPrefix.LastIndexOf("/")-1);
//if (this.ButtonOverImage) {
ButtonPreload += "img_" + ButtonPrefix + "_ButtonOverImage = new Image();\n";
ButtonPreload += "img_" + ButtonPrefix + "_ButtonOverImage.src = \"" + ButtonPath + "toolbarbutton.over." + this.ButtonFileExtention + "\";\n";
//}
//if (this.ButtonDownImage) {
ButtonPreload += "img_" + ButtonPrefix + "_ButtonDownImage = new Image();\n";
ButtonPreload += "img_" + ButtonPrefix + "_ButtonDownImage.src = \"" + ButtonPath + "toolbarbutton.down." + this.ButtonFileExtention + "\";\n";
//}
for (int i=0; i<Toolbars.Count; i++)
{
for (int j=0; j<Toolbars[i].Items.Count; j++)
{
ToolbarItem myItem = Toolbars[i].Items[j];
if (myItem.GetType() == typeof (HtmlTextBoxControls.ToolbarButton))
{
ToolbarButton myButton = (ToolbarButton) myItem;
if (!Page.IsClientScriptBlockRegistered(myButton.Function))
{
Page.RegisterClientScriptBlock(myButton.Function, myButton.ScriptBlock);
}
ButtonPreload += "img_" + ButtonPrefix + "_" + myButton.Name + " = new Image();\n";
ButtonPreload += "img_" + ButtonPrefix + "_" + myButton.Name + ".src = \"" + ButtonPath + myButton.Name.ToLower() + "." + this.ButtonFileExtention + "\";\n";
if (ButtonOverImage)
{
ButtonPreload += "img_" + ButtonPrefix + "_" + myButton.Name + "_over = new Image();\n";
ButtonPreload += "img_" + ButtonPrefix + "_" + myButton.Name + "_over.src = \"" + ButtonPath + myButton.Name.ToLower() + ".over." + this.ButtonFileExtention + "\";";
}
}
else if (myItem.GetType() == typeof(HtmlTextBoxControls.ToolbarDropDownList))
{
ToolbarDropDownList myDropDown = (ToolbarDropDownList) myItem;
if (!Page.IsClientScriptBlockRegistered(myDropDown.Function))
{
Page.RegisterClientScriptBlock(myDropDown.Function, myDropDown.ScriptBlock);
}
}
else
{
// Separator
}
} // each item
} // each toolbar
ButtonPreload = @"<script language=""JavaScript"">
" + ButtonPreload + @"
</script>";
if (!this.Page.IsClientScriptBlockRegistered(ButtonPrefix + "_images"))
{
this.Page.RegisterClientScriptBlock(ButtonPrefix + "_images", ButtonPreload);
}
// fix for IE 5 which doesn't not have iframe.onblur
this.Page.RegisterOnSubmitStatement(base.ID + "_OnSubmit","FTB_CopyHtmlToHidden(" + base.ID + @"_editor,document.getElementById('" + base.ID + @"')," + base.ID + @"_HtmlMode);");
}
else if (this.IsBasicEditorCapable && this.DownlevelMode == DownlevelMode.BasicEditor)
{
this.StartMode = EditorMode.HtmlMode;
if (!Page.IsClientScriptBlockRegistered("HtmlTextBoxBasicEditorBase") )
{
ResourceManager manager = new ResourceManager( this.GetType() );
string script = manager.GetResourceSet(System.Globalization.CultureInfo.CurrentCulture, true, true).GetString("HtmlTextBoxBasicEditorBase");
Page.RegisterClientScriptBlock("HtmlTextBoxBasicEditorBase", script);
}
}
}
private string BreakModeScript()
{
string CurlyQuotesCode = @"
if (editor.event.keyCode == _QUOTE && editor.event.shiftKey && !" + base.ID + @"_HtmlMode) {
var sel = editor.document.selection;
if (sel.type == 'Control') return;
var r = sel.createRange();
var before = FTB_CharBefore(r);
var after = FTB_CharAfter(r);
var r = sel.createRange();
if (before == 'start') {
r.pasteHTML(_OPENCURLY);
editor.event.cancelBubble = true;
editor.event.returnValue = false;
return false;
} else if (before != ' ' && after == 'end') {
r.pasteHTML(_CLOSECURLY);
editor.event.cancelBubble = true;
editor.event.returnValue = false;
return false;
} else if (before == ' ' && after == 'end') {
r.pasteHTML(_OPENCURLY);
editor.event.cancelBubble = true;
editor.event.returnValue = false;
return false;
} else if (before != ' ' && after == ' ') {
r.pasteHTML(_CLOSECURLY);
editor.event.cancelBubble = true;
editor.event.returnValue = false;
return false;
} else {
r.pasteHTML(_OPENCURLY);
editor.event.cancelBubble = true;
editor.event.returnValue = false;
return false;
}
}";
string html = "";
switch (BreakMode)
{
case BreakMode.LineBreak:
html = @"
<script language=""javascript"">
function FTB_" + base.ID + @"_onKeyDown_LineBreak() {
editor = " + base.ID + @"_editor;
var _TAB = 9;
var _ENTER = 13;
var _QUOTE = 222;
var _OPENCURLY = '“';
var _CLOSECURLY = '”';
if (editor.event.keyCode == _TAB && editor.event.ctrlKey) {
//HtmlMode to DesignMode (Ctrl+TAB)
if (" + base.ID + @"_HtmlMode && editor.event.keyCode == _TAB && editor.event.ctrlKey) {
FTB_SetActiveTab(document.getElementById('" + base.ID + @"_DesignModeTab'));
" + base.ID + @"_ChangeMode(editor,document.getElementById('" + base.ID + @"_TempFrame'),'" + base.ID + @"_Toolbar',false," + this.AutoHideToolbar.ToString().ToLower( ) + @");
}
//DesignMode to HtmlMode (Ctrl+TAB)
if (!" + base.ID + @"_HtmlMode && editor.event.keyCode == _TAB && editor.event.ctrlKey) {
FTB_SetActiveTab(document.getElementById('" + base.ID + @"_HtmlModeTab'));
" + base.ID + @"_ChangeMode(editor,document.getElementById('" + base.ID + @"_TempFrame'),'" + base.ID + @"_Toolbar',true," + this.AutoHideToolbar.ToString().ToLower( ) + @");
}
" + base.ID + @"_HtmlMode = !" + base.ID + @"_HtmlMode;
}" + ((this.EnableCurlyQuotes) ? CurlyQuotesCode : "") + @"
// Ensure TAB key doesn't cause editor to loose focus
if (editor.event.keyCode == _TAB) {
editor.event.cancelBubble = true;
editor.event.returnValue = false;
}
if (editor.event.keyCode == _ENTER) {
var sel = editor.document.selection;
if (sel.type == 'Control') {
return;
}
var r = sel.createRange();
if ((!FTB_CheckTag(r.parentElement(),'LI'))&&(!FTB_CheckTag(r.parentElement(),'H'))) {
r.pasteHTML('<br>');
editor.event.cancelBubble = true;
editor.event.returnValue = false;
r.select();
r.collapse(false);
return false;
}
}
}
</script>";
break;
case BreakMode.ParagraphBreak:
html = @"
<script language=""JavaScript"">
function FTB_" + base.ID + @"_onKeyDown_ParagraphBreak() {
editor = " + base.ID + @"_editor;
var _TAB = 9;
var _ENTER = 13;
var _QUOTE = 222;
var _OPENCURLY = '“';
var _CLOSECURLY = '”';
if (editor.event.keyCode == _TAB && editor.event.ctrlKey) {
//HtmlMode to DesignMode (Ctrl+TAB)
if (" + base.ID + @"_HtmlMode && editor.event.keyCode == _TAB && editor.event.ctrlKey) {
FTB_SetActiveTab(document.getElementById('" + base.ID + @"_DesignModeTab'));
" + base.ID + @"_ChangeMode(editor,document.getElementById('" + base.ID + @"_TempFrame'),'" + base.ID + @"_Toolbar',false," + this.AutoHideToolbar.ToString().ToLower( ) + @");
}
//DesignMode to HtmlMode (Ctrl+TAB)
if (!" + base.ID + @"_HtmlMode && editor.event.keyCode == _TAB && editor.event.ctrlKey) {
FTB_SetActiveTab(document.getElementById('" + base.ID + @"_HtmlModeTab'));
" + base.ID + @"_ChangeMode(editor,document.getElementById('" + base.ID + @"_TempFrame'),'" + base.ID + @"_Toolbar',true," + this.AutoHideToolbar.ToString().ToLower( ) + @");
}
" + base.ID + @"_HtmlMode = !" + base.ID + @"_HtmlMode;
}" + ((this.EnableCurlyQuotes) ? CurlyQuotesCode : "") + @"
if (editor.event.keyCode == _TAB) {
editor.event.cancelBubble = true;
editor.event.returnValue = false;
}
//check for Ctrl pressed. Ctrl+Tab == switch modes. Ctrl+Enter = <br>
if ((" + base.ID + @"_HtmlMode && editor.event.keyCode == _ENTER) || (!" + base.ID + @"_HtmlMode && editor.event.ctrlKey && editor.event.keyCode == _ENTER)) {
var sel = editor.document.selection;
if (sel.type == 'Control') {
return;
}
var r = sel.createRange();
if ((!FTB_CheckTag(r.parentElement(),'LI'))&&(!FTB_CheckTag(r.parentElement(),'H'))) {
r.pasteHTML('<br>');
editor.event.cancelBubble = true;
editor.event.returnValue = false;
r.select();
r.collapse(false);
return false;
}
}
}
</script>";
break;
}
return html;
}
private string OnPasteScript()
{
string html = "";
html += @"
<script language=""JavaScript"">
function FTB_" + base.ID + @"_onPaste() {";
if (this.DisablePaste)
{
html += @"
alert('Pasting is disabled');
return false;";
}
html += @"
}
</script>";
return html;
}
private string EditorStyles()
{
string html = @"
<style>
td." + base.ID + @"_StartTabOn {
font: 10pt MS Sans Serif;
padding:1px;
border-left: 1 solid " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
border-right: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorLight) + @";
border-top: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
border-bottom: 1 solid " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
background-color: " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
}
td." + base.ID + @"_StartTabOff {
font: 10pt MS Sans Serif;
padding:1px;
border-left: 1 solid " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
border-right: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
border-top: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
border-bottom: 1 solid " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
background-color: " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
}
td." + base.ID + @"_TabOn {
font: 8pt MS Sans Serif;
padding:1px;
padding-left:5px;
padding-right:5px;
border-left: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorLight) + @";
border-right: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
border-top: 1 solid " + ColorTranslator.ToHtml(this.BackColor) + @";
border-bottom: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
background-color: " + ColorTranslator.ToHtml(this.BackColor) + @";
}
td." + base.ID + @"_TabOffRight {
font: 8pt MS Sans Serif;
padding:1px;
padding-left:5px;
padding-right:5px;
border-left: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
border-right: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
border-top: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
border-bottom: 1 solid " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
background-color: " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
}
td." + base.ID + @"_TabOffLeft {
font: 8pt MS Sans Serif;
padding:1px;
padding-left:5px;
padding-right:5px;
border-left: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
border-right: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorLight) + @";
border-top: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
border-bottom: 1 solid " + ColorTranslator.ToHtml(this.BackColor) + @";
background-color: " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
}
td." + base.ID + @"_EndTab {
font: 10pt MS Sans Serif;
width: 100%;
padding:1px;
border-left: 1 solid " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
border-right: 1 solid " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
border-top: 1 solid " + ColorTranslator.ToHtml(this.GutterBorderColorDark) + @";
border-bottom: 1 solid " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
background-color: " + ColorTranslator.ToHtml(this.GutterBackColor) + @";
}
td." + base.ID + @"_None {
}
td." + base.ID + @"_ButtonNormal {
" + ((this.ToolbarBackColor != Color.Empty) ? "border: 1 solid " + ColorTranslator.ToHtml(ToolbarBackColor) + ";" : "padding: 1px;") + @"
" + ((this.ToolbarBackColor != Color.Empty) ? "background-color: " + ColorTranslator.ToHtml(ToolbarBackColor) + ";" : "") + @"
font-family: MS Sans Serif;
font-size: 10pt;
}
td." + base.ID + @"_ButtonOver {
border-top: 1 solid " + ColorTranslator.ToHtml(ButtonStyle.OverBorderColorLight) + @";
border-left: 1 solid " + ColorTranslator.ToHtml(ButtonStyle.OverBorderColorLight) + @";
border-right: 1 solid " + ColorTranslator.ToHtml(ButtonStyle.OverBorderColorDark) + @";
border-bottom: 1 solid " + ColorTranslator.ToHtml(ButtonStyle.OverBorderColorDark) + @";
" + ((ButtonStyle.OverBackColor != Color.Empty) ? "background-color: " + ColorTranslator.ToHtml(ButtonStyle.OverBackColor) + ";" : "background-image: url( " + ButtonStyle.OverBackgroundImage + ");") + @"
font-family: MS Sans Serif;
font-size: 10pt;
}
td." + base.ID + @"_ButtonDown {
border-top: 1 solid " + ColorTranslator.ToHtml(ButtonStyle.DownBorderColorLight) + @";
border-left: 1 solid " + ColorTranslator.ToHtml(ButtonStyle.DownBorderColorLight) + @";
border-right: 1 solid " + ColorTranslator.ToHtml(ButtonStyle.DownBorderColorDark) + @";
border-bottom: 1 solid " + ColorTranslator.ToHtml(ButtonStyle.DownBorderColorDark) + @";
" + ((ButtonStyle.DownBackColor != Color.Empty) ? "background-color: " + ColorTranslator.ToHtml(ButtonStyle.DownBackColor) + ";" : "background-image: url( " + ButtonStyle.DownBackgroundImage + ");") + @"
font-family: MS Sans Serif;
font-size: 10pt;
}
div." + base.ID + @"_Toolbar {
margin-bottom: 1px;
margin-right: 2px;
float: left;
" + ((ToolbarBackGroundImage) ?
"background-image: url(" + this.ButtonPath + "toolbar.background." + this.ButtonFileExtention + ");" :
"background-color: " + ColorTranslator.ToHtml(ToolbarBackColor) + ";")
+ @"
}
iframe." + base.ID + @"_iframe {
width:100%;
height:100%;
border-right: 1 solid " + ColorTranslator.ToHtml(this.EditorBorderColorLight) + @";
border-left: 1 solid " + ColorTranslator.ToHtml(this.EditorBorderColorDark) + @";
border-top: 1 solid " + ColorTranslator.ToHtml(this.EditorBorderColorDark) + @";
border-bottom: 1 solid " + ColorTranslator.ToHtml(this.EditorBorderColorLight) + @";
frameBorder: 0;
}
body.FTB {";
if (this.ScrollbarMode == ScrollbarMode.Style)
{
html += @"
scrollbar-3dlight-color: " + ColorTranslator.ToHtml(ScrollbarStyle.ThreeDLightColor) + @";
scrollbar-arrow-color: " + ColorTranslator.ToHtml(ScrollbarStyle.ArrowColor) + @";
scrollbar-base-color: " + ColorTranslator.ToHtml(ScrollbarStyle.BaseColor) + @";
scrollbar-darkshadow-color: " + ColorTranslator.ToHtml(ScrollbarStyle.DarkShadowColor) + @";
scrollbar-face-color: #" + ColorTranslator.ToHtml(ScrollbarStyle.FaceColor) + @";
scrollbar-highlight-color: " + ColorTranslator.ToHtml(ScrollbarStyle.HighlightColor) + @";
scrollbar-shadow-color: " + ColorTranslator.ToHtml(ScrollbarStyle.ShadowColor) + @";
scrollbar-track-color: " + ColorTranslator.ToHtml(ScrollbarStyle.TrackColor) + @";";
}
html += @"
}
</style>
";
return html;
}
private void InitializeToolbars()
{
if (!(Toolbars.Count > 0))
{
if (this.ToolbarLayout != "")
{
this.Toolbars = ToolbarGenerator.ToolbarsFromString(ToolbarLayout);
}
else
{
switch (this.AutoConfigure)
{
default:
case AutoConfigure.Default:
this.Toolbars = ToolbarGenerator.Default;
break;
case AutoConfigure.EnableAll:
this.Toolbars = ToolbarGenerator.EnableAll;
break;
case AutoConfigure.Alternate:
this.Toolbars = ToolbarGenerator.Alternate;
break;
case AutoConfigure.Minimal:
this.Toolbars = ToolbarGenerator.Minimal;
break;
}
}
}
}
private void SetUpToolbarItems()
{
for (int i=0; i<Toolbars.Count; i++)
{
for (int
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -