Beispiel #1
0
        public static void BuildScript(StringBuilder script, ITinyMceSettings config, string targetClientId, Unit width, Unit height)
        {
            if (script == null)
            {
                return;
            }
            if (config == null)
            {
                return;
            }

            script.Append("tinymce.init({");

            if (config.Inline)
            {
                script.Append("inline:true,");
            }

            script.Append("selector:\"#" + targetClientId + "\"");

            //http://www.tinymce.com/wiki.php/Configuration

            if (width != Unit.Empty)
            {
                script.Append(",width:\"" + width.ToString() + "\"");
            }

            if (height != Unit.Empty)
            {
                script.Append(",height: \"" + height.ToString() + "\"");
            }

            if (!config.ConvertUrls)
            {
                script.Append(",convert_urls:false");
            }

            if (config.NoWrap)
            {
                script.Append(",nowrap:true");
            }

            if (config.DisableMenuBar)
            {
                script.Append(",menubar:false");
            }
            else
            {
                script.Append(",menubar:'" + config.Menubar + "'");
            }

            if ((!config.ShowStatusbar) || (config.Inline))
            {
                script.Append(",statusbar:false");
            }

            if (config.ForcePasteAsPlainText)
            {
                script.Append(",paste_as_text:true");
            }

            if (config.RemovedMenuItems.Length > 0)
            {
                script.Append(",removed_menuitems: '" + config.RemovedMenuItems + "'");
            }

            script.Append(",schema:'html5'");

            if (config.CustomToolbarElementClientId.Length > 0)
            {
                script.Append(",fixed_toolbar_container:'" + config.CustomToolbarElementClientId + "'");
            }

            if (config.EnableBrowserSpellCheck)
            {
                script.Append(",browser_spellcheck:true ");
            }

            if (config.AutoLocalize)
            {
                CultureInfo culture;
                if (WebConfigSettings.UseCultureOverride)
                {
                    culture = SiteUtils.GetDefaultUICulture();
                }
                else
                {
                    culture = CultureInfo.CurrentUICulture;
                }

                config.Language = GetSupportedLangCode(culture.Name, culture.TwoLetterISOLanguageName);

                if (culture.TextInfo.IsRightToLeft)
                {
                    config.TextDirection = "rtl";
                }
            }

            if (config.Language.Length > 0)
            {
                script.Append(",language:\"" + config.Language + "\"");
            }

            if (config.ExtendedValidElements.Length > 0)
            {
                script.Append(",extended_valid_elements:\"" + config.ExtendedValidElements + "\"");
            }

            if ((config.TextDirection != "ltr") && (config.TextDirection.Length > 0))
            {
                script.Append(",directionality:'" + config.TextDirection + "'");
            }

            if (!config.EnableObjectResizing)
            {
                script.Append(",object_resizing:false");
            }

            // http://www.tinymce.com/wiki.php/Plugins
            if (config.Plugins.Length > 0)
            {
                script.Append(",plugins:\"" + config.Plugins + "\"");
            }

            if (config.Theme != "modern")
            {
                script.Append(",theme:\"" + config.Theme + "\"");
            }

            if (config.Skin != "lightgray")
            {
                script.Append(",skin:\"" + config.Skin + "\"");
            }

            if (config.UnDoLevels != -1)
            {
                script.Append(",custom_undo_redo_levels:" + config.UnDoLevels.ToInvariantString());
            }

            if (config.Toolbar1Buttons.Length > 0)
            {
                script.Append(",toolbar1:\"" + config.Toolbar1Buttons + "\"");
            }

            if (config.Toolbar2Buttons.Length > 0)
            {
                script.Append(",toolbar2:\"" + config.Toolbar2Buttons + "\"");
            }

            if (config.Toolbar3Buttons.Length > 0)
            {
                script.Append(",toolbar3:\"" + config.Toolbar3Buttons + "\"");
            }

            if (config.EnableImageAdvancedTab)
            {
                script.Append(",image_advtab:true");
            }

            if (config.EditorAreaCSS.Length > 0)
            {
                script.Append(",content_css:\"" + config.EditorAreaCSS + "\"");
            }

            if (config.EditorBodyCssClass.Length > 0)
            {
                script.Append(",body_class:\"" + config.EditorBodyCssClass + "\"");
            }

            if (config.AutoFocus)
            {
                script.Append(",auto_focus:\"" + targetClientId + "\" ");
            }

            if (config.TemplatesUrl.Length > 0)
            {
                script.Append(",templates: \"" + config.TemplatesUrl + "\"");
            }

            if (config.StyleFormats.Length > 0)
            {
                script.Append(",style_formats:" + config.StyleFormats);
            }

            if (config.EmotionsBaseUrl.Length > 0)
            {
                script.Append(",emotions_images_url:'" + config.EmotionsBaseUrl + "'");
            }

            if (config.OnSaveCallback.Length > 0)
            {
                script.Append(",save_onsavecallback:" + config.OnSaveCallback);
                if (config.SaveEnableWhenDirty)
                {
                    script.Append(",save_enablewhendirty:true");
                }
            }

            if (config.DropFileUploadUrl.Length > 0)
            {
                script.Append(",dropFileUploadUrl:'" + config.DropFileUploadUrl + "'");
            }

            if ((config.FileManagerUrl.Length > 0))
            {
                script.Append(",file_browser_callback: function(field_name, url, type, win) { ");
                script.Append("tinyMCE.activeEditor.windowManager.open({");
                script.Append("url:'" + config.FileManagerUrl + "' + '?editor=tinymce&type=' + type, ");
                script.Append("title:'" + Resource.FileBrowser.HtmlEscapeQuotes() + "',");
                script.Append("width: ~~((80 / 100) * window.innerWidth),");
                script.Append("height: ~~((80 / 100) * window.innerHeight)");
                //script.Append(",resizable: true"); // doesn't seem to work
                //script.Append("inline : 'yes',"); // not needed in 4.x I guess
                //script.Append(" close_previous : 'no'"); // not needed in 4.x I guess
                script.Append("}, {");
                script.Append("oninsert: function(newurl) {win.document.getElementById(field_name).value = newurl;}");
                script.Append("}); ");
                script.Append("return false;");
                script.Append("}");
            }

            script.Append(",setup:function(editor) {");

            if (config.GlobarVarToAssignEditor.Length > 0)
            {
                script.Append(config.GlobarVarToAssignEditor + " = editor; ");
            }

            if (config.PromptOnNavigationWithUnsavedChanges)
            {
                // autosave plugin also prompts so don't need this if it is used
                if (!config.Plugins.Contains("autosave,"))
                {
                    script.Append("editor.on('change', function(e) {");
                    script.Append("hookupGoodbyePrompt(\"" + Resource.UnSavedChangesPrompt.HtmlEscapeQuotes().RemoveLineBreaks() + "\"); ");
                    script.Append("});");
                }
            }

            script.Append("}");             //end setup
            script.Append("});");
        }
Beispiel #2
0
        public static void BuildScript(StringBuilder script, ITinyMceSettings config, string targetClientId, Unit width, Unit height)
        {
            if (script == null) { return; }
            if (config == null) { return; }

            script.Append("tinymce.init({");

            if (config.Inline)
            {
                script.Append("inline:true,");
            }

            script.Append("selector:\"#" + targetClientId + "\"");

            //http://www.tinymce.com/wiki.php/Configuration

            if(width != Unit.Empty)
            {
                script.Append(",width:\"" + width.ToString() + "\"");
            }
            if (height != Unit.Empty)
            {
                script.Append(",height: \"" + height.ToString() + "\"");
            }

            if(!config.ConvertUrls)
            {
                script.Append(",convert_urls:false");
            }

            if (config.NoWrap)
            {
                script.Append(",nowrap:true");
            }

            if (config.DisableMenuBar)
            {
                script.Append(",menubar:false");
            }
            else
            {
                script.Append(",menubar:'" + config.Menubar + "'");
            }

            if ((!config.ShowStatusbar)||(config.Inline))
            {
                script.Append(",statusbar:false");
            }

            if (config.ForcePasteAsPlainText)
            {
                script.Append(",paste_as_text:true");
            }

            if(config.RemovedMenuItems.Length > 0)
            {
                script.Append(",removed_menuitems: '" + config.RemovedMenuItems + "'");
            }

            script.Append(",schema:'html5'");

            if (config.CustomToolbarElementClientId.Length > 0)
            {
                script.Append(",fixed_toolbar_container:'" + config.CustomToolbarElementClientId + "'");
            }

            if (config.EnableBrowserSpellCheck)
            {
                script.Append(",browser_spellcheck:true ");
            }

            if (config.AutoLocalize)
            {
                CultureInfo culture;
                if (WebConfigSettings.UseCultureOverride)
                {
                    culture = SiteUtils.GetDefaultUICulture();
                }
                else
                {
                    culture = CultureInfo.CurrentUICulture;
                }

                config.Language = GetSupportedLangCode(culture.Name, culture.TwoLetterISOLanguageName);
                if (culture.TextInfo.IsRightToLeft)
                {
                    config.TextDirection = "rtl";
                }
            }

            if (config.Language.Length > 0)
            {
                script.Append(",language:\"" + config.Language + "\"");
            }

            if (config.ExtendedValidElements.Length > 0)
            {
                script.Append(",extended_valid_elements:\"" + config.ExtendedValidElements + "\"");
            }

            if ((config.TextDirection != "ltr") && (config.TextDirection.Length > 0))
            {
                script.Append(",directionality:'" + config.TextDirection + "'");
            }

            if (!config.EnableObjectResizing)
            {
                script.Append(",object_resizing:false");
            }

            //http://www.tinymce.com/wiki.php/Plugins
            if (config.Plugins.Length > 0)
            {
                script.Append(",plugins:\"" + config.Plugins + "\"");
            }

            if (config.Theme != "modern")
            {
                script.Append(",theme:\"" + config.Theme + "\"");
            }

            if (config.Skin != "lightgray")
            {
                script.Append(",skin:\"" + config.Skin + "\"");
            }

            if (config.UnDoLevels != -1)
            {
                script.Append(",custom_undo_redo_levels:" + config.UnDoLevels.ToInvariantString());
            }

            if (config.Toolbar1Buttons.Length > 0)
            {
                script.Append(",toolbar1:\"" + config.Toolbar1Buttons + "\"");
            }
            if (config.Toolbar2Buttons.Length > 0)
            {
                script.Append(",toolbar2:\"" + config.Toolbar2Buttons + "\"");
            }
            if (config.Toolbar3Buttons.Length > 0)
            {
                script.Append(",toolbar3:\"" + config.Toolbar3Buttons + "\"");
            }

            if (config.EnableImageAdvancedTab)
            {
                script.Append(",image_advtab:true");
            }

            if (config.EditorAreaCSS.Length > 0)
            {
                script.Append(",content_css:\"" + config.EditorAreaCSS + "\"");
            }

            if (config.EditorBodyCssClass.Length > 0)
            {
                script.Append(",body_class:\"" + config.EditorBodyCssClass + "\"");
            }

            if (config.AutoFocus)
            {
                script.Append(",auto_focus:\"" + targetClientId + "\" ");
            }

            if (config.TemplatesUrl.Length > 0)
            {
                script.Append(",templates: \"" + config.TemplatesUrl + "\"");
            }

            if (config.StyleFormats.Length > 0)
            {
                script.Append(",style_formats:" + config.StyleFormats);
            }

            if (config.EmotionsBaseUrl.Length > 0)
            {
                script.Append(",emotions_images_url:'" + config.EmotionsBaseUrl + "'");
            }

            if (config.OnSaveCallback.Length > 0)
            {
                script.Append(",save_onsavecallback:" + config.OnSaveCallback);
                if(config.SaveEnableWhenDirty)
                {
                    script.Append(",save_enablewhendirty:true");
                }
            }

            if (config.DropFileUploadUrl.Length > 0)
            {
                script.Append(",dropFileUploadUrl:'" + config.DropFileUploadUrl + "'");
            }

            if ((config.FileManagerUrl.Length > 0))
            {
                script.Append(",file_browser_callback: function(field_name, url, type, win) { ");

                script.Append("tinyMCE.activeEditor.windowManager.open({");
                script.Append("url:'" + config.FileManagerUrl + "' + '?ed=tmc&type=' + type, ");
                script.Append("title:'" + Resource.FileBrowser.HtmlEscapeQuotes() + "',");
                script.Append("width:" + config.FileDialogWidth.ToInvariantString() + ",");
                script.Append("height:" + config.FileDialogHeight.ToInvariantString());
                //script.Append(",resizable: true"); // doesn't seem to work
                //script.Append("inline : 'yes',"); // not needed in 4.x I guess
                //script.Append(" close_previous : 'no'"); // not needed in 4.x I guess
                script.Append("}, {");
                script.Append("oninsert: function(newurl) {win.document.getElementById(field_name).value = newurl;}");
                script.Append("}); ");
                script.Append("return false;");

                script.Append("}");

            }

            script.Append(",setup:function(editor) {");

            if (config.GlobarVarToAssignEditor.Length > 0)
            {
                script.Append(config.GlobarVarToAssignEditor + " = editor; ");
            }

            if (config.PromptOnNavigationWithUnsavedChanges)
            {
                // autosave plugin also prompts so don't need this if it is used
                if(!config.Plugins.Contains("autosave,"))
                {
                    script.Append("editor.on('change', function(e) {");
                    script.Append("hookupGoodbyePrompt(\"" + Resource.UnSavedChangesPrompt.HtmlEscapeQuotes().RemoveLineBreaks() + "\"); ");
                    script.Append("});");
                }

            }

            script.Append("}"); //end setup

            script.Append("});");
        }