/// <summary> /// Sets custom TinyMceSettings on all XhtmlString properties /// decorated with a specific attribute. /// </summary> /// <param name="config"></param> /// <param name="customTinyMceSettings">The custom TinyMceSettings</param> public static void RegisterCustomTinyMceSettingsAttribute(TinyMceConfiguration config, TinyMceSettings customTinyMceSettings) { // Get MethodInfo for the extension method usually used to designate // custom TinyMceSettings for an XhtmlProperty, viz. // config.For<StandardPage>(x => x.MainBody, customTinyMceSettings); var theForMethod = typeof(TinyMceConfiguration).GetMethod("For"); if (theForMethod == null) { return; } foreach (var contentType in _listOfEpiserverContentDataTypes) { // Get the properties decorated with the attribute used for designating the custom TinyMceSettings. var properties = contentType .GetProperties().Where(x => x.CustomAttributes.Any(att => att.AttributeType == typeof(T))).ToList(); if (!properties.Any()) { continue; } // Make the For method generic. var theGenericMethod = theForMethod.MakeGenericMethod(contentType); foreach (var propertyInfo in properties) { // Continue if the attribute is inadvertently applied to a // property which is not an XhtmlString. if (propertyInfo.PropertyType.Name != "XhtmlString") { continue; } var parameter = Expression.Parameter(contentType, "entity"); var property = Expression.Property(parameter, propertyInfo); var funcType = typeof(Func <,>).MakeGenericType(contentType, typeof(object)); var lambda = Expression.Lambda(funcType, property, parameter); var parameters = new object[] { lambda, customTinyMceSettings }; try { theGenericMethod.Invoke(config, parameters); } catch (Exception e) { Console.WriteLine(e); } } } }
public void ConfigureContainer(ServiceConfigurationContext context) { context.Services.Configure <TinyMceConfiguration>(config => { config.Default() .ContentCss("/static/css/editor.css"); TinyMceSettings settings = config .For <ProductPage>(page => page.MainBody, copyFrom: config.Empty()); settings.DisableMenubar() .AddPlugin("image emoticons paste epi-link epi-image-editor epi-personalized-content fullscreen") .Toolbar("formatselect | bold italic | epi-link image epi-image-editor epi-personalized-content | outdent indent | emoticons paste removeformat | fullscreen"); }); }
public override void ModifyMetadata(ExtendedMetadata metadata, IEnumerable <Attribute> attributes) { // if not CMS admin then limit capabilities if (!PrincipalInfo.CurrentPrincipal.IsInRole("CmsAdmins")) { TinyMceSettings settings = metadata.EditorConfiguration["settings"] as TinyMceSettings; // default is "tableprops tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol" settings.AddSetting("table_toolbar", "tabledelete | tableinsertrowbefore tableinsertrowafter tabledeleterow | tableinsertcolbefore tableinsertcolafter tabledeletecol") // the following fields will not appear: Cell spacing, Cell padding, Border and Caption .AddSetting("table_appearance_options", false) // Advanced tab allows a user to input style, border color and background color values. Hide the Advanced tab like this: .AddSetting("table_advtab", false) .AddSetting("table_row_advtab", false) .AddSetting("table_cell_advtab", false); } }
public void ConfigureContainer(ServiceConfigurationContext context) { context.Services.Configure <TinyMceConfiguration>(config => { config.Default() .ContentCss("/static/css/editor.css"); TinyMceSettings settings = config .For <ProductPage>(page => page.MainBody, copyFrom: config.Empty()); settings.DisableMenubar() .AddPlugin("image charmap emoticons paste epi-link epi-image-editor epi-personalized-content fullscreen") .Toolbar("formatselect | bold italic | epi-link image epi-image-editor epi-personalized-content | outdent indent | charmap emoticons paste removeformat | fullscreen") .AddSetting("charmap_append", new[] { new object[] { 9861, "Dice number 6" }, new object[] { 9925, "Sun behind cloud" } }); }); }
private void SetToolBar() { /* * http://wiki.moxiecode.com/index.php/TinyMCE:Control_reference */ switch (toolBar) { case ToolBar.Full: editorSettings = config.GetEditorSettings("Full"); string siteRoot = SiteUtils.GetNavigationSiteRoot(); Editor.FileManagerUrl = siteRoot + WebConfigSettings.FileDialogRelativeUrl; Editor.DropFileUploadUrl = Editor.ResolveUrl(siteRoot + "/Services/FileService.ashx?cmd=uploadfromeditor&rz=true&ko=" + WebConfigSettings.KeepFullSizeImagesDroppedInEditor.ToString().ToLower() + "&t=" + Global.FileSystemToken.ToString()); //Editor.EnableFileBrowser = true; Editor.StyleFormats = SiteUtils.BuildStylesListForTinyMce4(); break; case ToolBar.FullWithTemplates: editorSettings = config.GetEditorSettings("FullWithTemplates"); string sRoot = SiteUtils.GetNavigationSiteRoot(); Editor.FileManagerUrl = sRoot + WebConfigSettings.FileDialogRelativeUrl; Editor.DropFileUploadUrl = Editor.ResolveUrl(sRoot + "/Services/FileService.ashx?cmd=uploadfromeditor&rz=true&ko=" + WebConfigSettings.KeepFullSizeImagesDroppedInEditor.ToString().ToLower() + "&t=" + Global.FileSystemToken.ToString()); //Editor.EnableFileBrowser = true; Editor.StyleFormats = SiteUtils.BuildStylesListForTinyMce4(); Editor.TemplatesUrl = SiteUtils.GetNavigationSiteRoot() + "/Services/TinyMceTemplates.ashx?cb=" + Guid.NewGuid().ToString(); //cache busting guid break; case ToolBar.Newsletter: editorSettings = config.GetEditorSettings("Newsletter"); string snRoot = SiteUtils.GetNavigationSiteRoot(); Editor.FileManagerUrl = snRoot + WebConfigSettings.FileDialogRelativeUrl; //Editor.EnableFileBrowser = true; break; case ToolBar.ForumWithImages: editorSettings = config.GetEditorSettings("ForumWithImages"); Editor.FileManagerUrl = SiteUtils.GetNavigationSiteRoot() + WebConfigSettings.FileDialogRelativeUrl; //Editor.EnableFileBrowser = true; break; case ToolBar.Forum: editorSettings = config.GetEditorSettings("Forum"); break; case ToolBar.AnonymousUser: editorSettings = config.GetEditorSettings("Anonymous"); break; case ToolBar.SimpleWithSource: Editor.Plugins = "paste,searchreplace,fullscreen,emoticons,directionality,table,image"; Editor.Toolbar1Buttons = "code,cut,copy,pastetext,separator,blockquote,bold,italic,separator,bullist,numlist,separator,link,unlink,emoticons"; Editor.Toolbar2Buttons = ""; Editor.Toolbar3Buttons = ""; Editor.DisableMenuBar = true; break; } Editor.Plugins = editorSettings.Plugins; Editor.Toolbar1Buttons = editorSettings.Toolbar1Buttons; Editor.Toolbar2Buttons = editorSettings.Toolbar2Buttons; Editor.Toolbar3Buttons = editorSettings.Toolbar3Buttons; Editor.ExtendedValidElements = editorSettings.ExtendedValidElements; Editor.ForcePasteAsPlainText = editorSettings.ForcePasteAsPlainText; Editor.DisableMenuBar = editorSettings.DisableMenuBar; Editor.Menubar = editorSettings.Menubar; Editor.UnDoLevels = editorSettings.UnDoLevels; Editor.EnableObjectResizing = editorSettings.EnableObjectResizing; Editor.Theme = editorSettings.Theme; Editor.Skin = editorSettings.Skin; Editor.AutoLocalize = editorSettings.AutoLocalize; Editor.Language = editorSettings.Language; Editor.TextDirection = editorSettings.TextDirection; Editor.EnableBrowserSpellCheck = editorSettings.EnableBrowserSpellCheck; Editor.EditorBodyCssClass = editorSettings.EditorBodyCssClass; Editor.NoWrap = editorSettings.NoWrap; Editor.RemovedMenuItems = editorSettings.RemovedMenuItems; Editor.FileDialogWidth = editorSettings.FileDialogWidth; Editor.FileDialogHeight = editorSettings.FileDialogHeight; Editor.EnableImageAdvancedTab = editorSettings.EnableImageAdvancedTab; Editor.ShowStatusbar = editorSettings.ShowStatusbar; }