public ContentEditorProxy(ContentEditorFactory factory, IContentEditorSite contentEditorSite, IInternetSecurityManager internetSecurityManager, IHTMLDocument2 htmlDocument, HtmlInsertOptions options, int dlControlFlags, string color, string wpost) { string content = htmlDocument.body.innerHTML; htmlDocument.body.innerHTML = "{post-body}"; string wysiwygHTML = HTMLDocumentHelper.HTMLDocToString(htmlDocument); BlogPost documentToBeLoaded = null; IBlogPostEditingContext editingContext = null; if (string.IsNullOrEmpty(wpost) || !File.Exists(wpost)) { documentToBeLoaded = new BlogPost(); editingContext = new BlogPostEditingContext(ContentEditorAccountAdapter.AccountId, documentToBeLoaded); } else { PostEditorFile wpostxFile = PostEditorFile.GetExisting(new FileInfo(wpost)); editingContext = wpostxFile.Load(false); editingContext.BlogPost.Contents = ""; } if (!string.IsNullOrEmpty(content)) { delayedInsertOperations.Enqueue(new DelayedInsert(content, options)); } ContentEditorProxyCore(factory, contentEditorSite, internetSecurityManager, wysiwygHTML, null, editingContext, new ContentEditorTemplateStrategy(), dlControlFlags, color); }
/// <summary> /// Initializes the IContentEditor. /// </summary> /// <param name="factory"></param> /// <param name="contentEditorSite"></param> /// <param name="internetSecurityManager"></param> /// <param name="wysiwygHTML"></param> /// <param name="previewHTML"></param> /// <param name="newEditingContext"></param> /// <param name="templateStrategy"></param> /// <param name="dlControlFlags"> /// For Mail, these flags should always include DLCTL_DLIMAGES | DLCTL_VIDEOS | DLCTL_BGSOUNDS so that local /// images, videos and sounds are loaded. To block external content, it should also include /// DLCTL_PRAGMA_NO_CACHE | DLCTL_FORCEOFFLINE | DLCTL_NO_CLIENTPULL so that external images are not loaded /// and are displayed as a red X instead. /// </param> /// <param name="color"></param> private void ContentEditorProxyCore(ContentEditorFactory factory, IContentEditorSite contentEditorSite, IInternetSecurityManager internetSecurityManager, string wysiwygHTML, string previewHTML, IBlogPostEditingContext newEditingContext, BlogPostHtmlEditorControl.TemplateStrategy templateStrategy, int dlControlFlags, string color) { try { Debug.Assert(contentEditorSite is IUIFramework, "IContentEditorSite must also implement IUIFramework"); Debug.Assert(contentEditorSite is IDropTarget, "IContentEditorSite must also implement IDropTarget"); ApplyInstalledCulture(); this.factory = factory; _wysiwygHTML = wysiwygHTML; _previewHTML = previewHTML; _contentEditorSite = contentEditorSite; IntPtr p = _contentEditorSite.GetWindowHandle(); WINDOWINFO info = new WINDOWINFO(); User32.GetWindowInfo(p, ref info); panel = new Panel(); panel.Top = 0; panel.Left = 0; panel.Width = Math.Max(info.rcWindow.Width, 200); panel.Height = Math.Max(info.rcWindow.Height, 200); panel.CreateControl(); User32.SetParent(panel.Handle, p); accountAdapter = new ContentEditorAccountAdapter(); mainFrame = new MainFrameWindowAdapter(p, panel, _contentEditorSite, accountAdapter.Id); context = newEditingContext; contentEditor = new ContentEditor(mainFrame, panel, mainFrame, internetSecurityManager, templateStrategy, dlControlFlags); // Prevents asserts contentEditor.DisableSpelling(); contentEditor.OnEditorAccountChanged(accountAdapter); contentEditor.DocumentComplete += new EventHandler(blogPostHtmlEditor_DocumentComplete); contentEditor.GotFocus += new EventHandler(contentEditor_GotFocus); contentEditor.LostFocus += new EventHandler(contentEditor_LostFocus); contentEditor.Initialize(context, accountAdapter, wysiwygHTML, previewHTML, false); if (!string.IsNullOrEmpty(color)) { contentEditor.IndentColor = color; } this.factory.GlobalSpellingOptionsChanged += GlobalSpellingOptionsChangedHandler; } catch (Exception ex) { // Something went wrong, make sure we don't reuse a cached editor HtmlEditorControl.DisposeCachedEditor(); Trace.Fail(ex.ToString()); Trace.Flush(); throw; } }
public CanvasForm() { InitializeComponent(); factory = new ContentEditorFactory(); factory.Initialize(@"SOFTWARE\Microsoft\Windows Live\Test Canvas", new CanvasLogger(), new CanvasTarget(), new CanvasSettingsProvider()); editor = factory.CreateEditor(new CanvasSite(panelCanvas), null, "<html><head></head><body><div>{post-body}</div></body></html>", MshtmlOptions.DEFAULT_DLCTL); editor.DisableSpelling(); panelCanvas.SizeChanged += new EventHandler(panelCanvas_SizeChanged); }
/// <summary> /// Initializes the IContentEditor. /// </summary> /// <param name="factory"></param> /// <param name="contentEditorSite"></param> /// <param name="internetSecurityManager"></param> /// <param name="wysiwygHTML"></param> /// <param name="previewHTML"></param> /// <param name="newEditingContext"></param> /// <param name="templateStrategy"></param> /// <param name="dlControlFlags"> /// For Mail, these flags should always include DLCTL_DLIMAGES | DLCTL_VIDEOS | DLCTL_BGSOUNDS so that local /// images, videos and sounds are loaded. To block external content, it should also include /// DLCTL_PRAGMA_NO_CACHE | DLCTL_FORCEOFFLINE | DLCTL_NO_CLIENTPULL so that external images are not loaded /// and are displayed as a red X instead. /// </param> /// <param name="color"></param> private void ContentEditorProxyCore(ContentEditorFactory factory, IContentEditorSite contentEditorSite, IInternetSecurityManager internetSecurityManager, string wysiwygHTML, string previewHTML, IBlogPostEditingContext newEditingContext, BlogPostHtmlEditorControl.TemplateStrategy templateStrategy, int dlControlFlags, string color) { try { Debug.Assert(contentEditorSite is IUIFramework, "IContentEditorSite must also implement IUIFramework"); Debug.Assert(contentEditorSite is IDropTarget, "IContentEditorSite must also implement IDropTarget"); ApplyInstalledCulture(); this.factory = factory; _wysiwygHTML = wysiwygHTML; _previewHTML = previewHTML; _contentEditorSite = contentEditorSite; IntPtr p = _contentEditorSite.GetWindowHandle(); WINDOWINFO info = new WINDOWINFO(); User32.GetWindowInfo(p, ref info); panel = new Panel(); panel.Top = 0; panel.Left = 0; panel.Width = Math.Max(info.rcWindow.Width, 200); panel.Height = Math.Max(info.rcWindow.Height, 200); panel.CreateControl(); User32.SetParent(panel.Handle, p); accountAdapter = new ContentEditorAccountAdapter(); mainFrame = new MainFrameWindowAdapter(p, panel, _contentEditorSite, accountAdapter.Id); context = newEditingContext; contentEditor = new ContentEditor(mainFrame, panel, mainFrame, internetSecurityManager, templateStrategy, dlControlFlags); // Prevents asserts contentEditor.DisableSpelling(); contentEditor.OnEditorAccountChanged(accountAdapter); contentEditor.DocumentComplete += new EventHandler(blogPostHtmlEditor_DocumentComplete); contentEditor.GotFocus += new EventHandler(contentEditor_GotFocus); contentEditor.LostFocus += new EventHandler(contentEditor_LostFocus); contentEditor.Initialize(context, accountAdapter, wysiwygHTML, previewHTML, false); if (!string.IsNullOrEmpty(color)) { contentEditor.IndentColor = color; } } catch (Exception ex) { // Something went wrong, make sure we don't reuse a cached editor HtmlEditorControl.DisposeCachedEditor(); Trace.Fail(ex.ToString()); Trace.Flush(); throw; } }
public ContentEditorProxy(ContentEditorFactory factory, IContentEditorSite contentEditorSite, IInternetSecurityManager internetSecurityManager, IHTMLDocument2 htmlDocument, HtmlInsertOptions options, int dlControlFlags, string color, string wpost) { string content = htmlDocument.body.innerHTML; htmlDocument.body.innerHTML = "{post-body}"; string wysiwygHTML = HTMLDocumentHelper.HTMLDocToString(htmlDocument); BlogPost documentToBeLoaded = null; IBlogPostEditingContext editingContext = null; if (string.IsNullOrEmpty(wpost) || !File.Exists(wpost)) { documentToBeLoaded = new BlogPost(); editingContext = new BlogPostEditingContext(ContentEditorAccountAdapter.AccountId, documentToBeLoaded); } else { PostEditorFile wpostxFile = PostEditorFile.GetExisting(new FileInfo(wpost)); editingContext = wpostxFile.Load(false); editingContext.BlogPost.Contents = ""; } if (!string.IsNullOrEmpty(content)) delayedInsertOperations.Enqueue(new DelayedInsert(content, options)); ContentEditorProxyCore(factory, contentEditorSite, internetSecurityManager, wysiwygHTML, null, editingContext, new ContentEditorTemplateStrategy(), dlControlFlags, color); }
public ContentEditorProxy(ContentEditorFactory factory, IContentEditorSite contentEditorSite, IInternetSecurityManager internetSecurityManager, string wysiwygHTML, string previewHTML, string pathToFile, int dlControlFlags) { ContentEditorProxyCore(factory, contentEditorSite, internetSecurityManager, wysiwygHTML, previewHTML, PostEditorFile.GetExisting(new FileInfo(pathToFile)).Load(false), new ContentEditorTemplateStrategy(), dlControlFlags, null); }
public ContentEditorProxy(ContentEditorFactory factory, IContentEditorSite contentEditorSite, IInternetSecurityManager internetSecurityManager, string wysiwygHTML, string previewHTML, int dlControlFlags) { ContentEditorProxyCore(factory, contentEditorSite, internetSecurityManager, wysiwygHTML, previewHTML, new BlogPostEditingContext(ContentEditorAccountAdapter.AccountId, new BlogPost()), new ContentEditorTemplateStrategy(), dlControlFlags, null); }