/// <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");
            });
        }
Beispiel #3
0
        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" }
                });
            });
        }
Beispiel #5
0
        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;
        }