Example #1
0
        /// <summary>
        /// Converts the string to toolbar set.
        /// </summary>
        /// <param name="inputString">The input string.</param>
        /// <returns>Returns the ToolbarSet</returns>
        public static ToolbarSet ConvertStringToToolbarSet(string inputString)
        {
            inputString = inputString.Replace(" ", string.Empty).Replace("\"", "'");

            var toolbarSet = new ToolbarSet();

            // Import old toolbar set older then CKEditor 3.6
            if (inputString.StartsWith("["))
            {
                var groupId = 1;

                var matchOld = Regex.Match(inputString, @"\[(?<group>[^\]]*)\]");

                while (matchOld.Success)
                {
                    var group =
                        matchOld.Groups["group"].Value.Replace("'", string.Empty).Replace(" ", string.Empty).Split(',');

                    var toolBarGroup = new ToolbarGroup
                                           {
                                               items = new List<string>(),
                                               name = string.Format("Group{0}", groupId)
                                           };

                    foreach (string s in group)
                    {
                        toolBarGroup.items.Add(s);
                    }

                    toolbarSet.ToolbarGroups.Add(toolBarGroup);

                    groupId++;

                    matchOld = matchOld.NextMatch();
                }
            }

            var match = Regex.Match(inputString, @"\{name:'(?<groupName>(.+?))',items:\[(?<group>[^\]]*)\]\}");

            while (match.Success)
            {
                var group = match.Groups["group"].Value.Replace("'", string.Empty).Replace(" ", string.Empty).Split(',');

                var toolBarGroup = new ToolbarGroup { name = match.Groups["groupName"].Value };

                foreach (var button in group)
                {
                    toolBarGroup.items.Add(button);
                }

                toolbarSet.ToolbarGroups.Add(toolBarGroup);

                match = match.NextMatch();
            }

            return toolbarSet;
        }
        /// <summary>
        /// Insert Toolbar Names from Serialized Xml File
        /// </summary>
        private void InsertToolbars()
        {
            ListItemCollection licToolbars = new ListItemCollection();

            foreach (var toolbarSet in this.listToolbars)
            {
                var toolbarItem = new ListItem { Text = toolbarSet.Name, Value = toolbarSet.Name };

                licToolbars.Add(toolbarItem);

                // Exclude used Prioritys from the DropDown
                if (this.dDlToolbarPrio.Items.FindByText(toolbarSet.Priority.ToString()) != null)
                {
                    this.dDlToolbarPrio.Items.FindByText(toolbarSet.Priority.ToString()).Enabled = false;
                }
            }

            this.HideAddToolbar();

            for (int i = 0; i < this.gvToolbars.Rows.Count; i++)
            {
                DropDownList ddLToolB = (DropDownList)this.gvToolbars.Rows[i].Cells[1].FindControl("ddlToolbars");

                if (ddLToolB == null)
                {
                    continue;
                }

                ddLToolB.DataSource = licToolbars;
                ddLToolB.DataBind();
            }

            this.dDlCustomToolbars.DataSource = licToolbars;
            this.dDlCustomToolbars.DataBind();

            List<string> excludeButtons;

            var emptyToolbarSet = new ToolbarSet();

            // Empty Toolbar
            emptyToolbarSet.ToolbarGroups.Add(
                new ToolbarGroup { name = Localization.GetString("NewGroupName.Text", this.ResXFile, this.LangCode) });

            this.FillToolbarGroupsRepeater(emptyToolbarSet, out excludeButtons);

            // Load Toolbar Buttons
            this.FillAvailableToolbarButtons(null);
        }
        /// <summary>
        /// Cancel Edit Toolbar
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="ImageClickEventArgs" /> instance containing the event data.</param>
        private void IbCancelClick(object sender, ImageClickEventArgs e)
        {
            this.dnnTxtToolBName.Text = string.Empty;
            this.ToolbarSet.Value = string.Empty;

            List<string> excludeButtons;

            var toolbarSet = new ToolbarSet();

            // Empty Toolbar
            toolbarSet.ToolbarGroups.Add(
                new ToolbarGroup { name = Localization.GetString("NewGroupName.Text", this.ResXFile, this.LangCode) });

            this.FillToolbarGroupsRepeater(toolbarSet, out excludeButtons);

            this.FillAvailableToolbarButtons(null);

            this.dnnTxtToolBName.Enabled = true;

            this.dDlToolbarPrio.Items.FindByText(
                this.listToolbars.Find(toolbarSel => toolbarSel.Name.Equals(this.dDlCustomToolbars.SelectedValue)).Priority.ToString()).Enabled = false;

            this.iBAdd.ImageUrl = this.ResolveUrl("~/images/add.gif");

            this.iBAdd.AlternateText = Localization.GetString("AddToolbar.Text", this.ResXFile, this.LangCode);
            this.iBAdd.ToolTip = Localization.GetString("AddToolbar.Text", this.ResXFile, this.LangCode);

            this.iBCancel.Visible = false;

            this.HideAddToolbar();
        }
        /// <summary>
        /// Add new/Save Toolbar Set
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="ImageClickEventArgs" /> instance containing the event data.</param>
        private void IbAddClick(object sender, ImageClickEventArgs e)
        {
            if (string.IsNullOrEmpty(this.dnnTxtToolBName.Text))
            {
                this.ShowNotification(Localization.GetString("ToolbarNameMissing.Text", this.ResXFile, this.LangCode), "error");

                return;
            }

            if (string.IsNullOrEmpty(this.ToolbarSet.Value))
            {
                return;
            }

            var modifiedSet = ToolbarUtil.ConvertStringToToolbarSet(this.ToolbarSet.Value);

            // Save modified Toolbar Set
            if (this.iBAdd.ImageUrl.Contains("save.gif"))
            {
                var toolbarEdit = this.listToolbars.Find(toolbarSel => toolbarSel.Name.Equals(this.dnnTxtToolBName.Text));

                toolbarEdit.ToolbarGroups = modifiedSet.ToolbarGroups;
                toolbarEdit.Priority = int.Parse(this.dDlToolbarPrio.SelectedValue);

                ToolbarUtil.SaveToolbarSets(
                    this.listToolbars,
                    !string.IsNullOrEmpty(this.configFolder)
                        ? Path.Combine(this._portalSettings.HomeDirectoryMapPath, this.configFolder)
                        : this._portalSettings.HomeDirectoryMapPath);

                this.ShowNotification(
                    Localization.GetString("ToolbarSetSaved.Text", this.ResXFile, this.LangCode),
                    "success");
            }
            else
            {
                // Add New Toolbar Set
                var newToolbar = new ToolbarSet(this.dnnTxtToolBName.Text, int.Parse(this.dDlToolbarPrio.SelectedValue))
                    {
                        ToolbarGroups = modifiedSet.ToolbarGroups
                    };

                this.listToolbars.Add(newToolbar);

                ToolbarUtil.SaveToolbarSets(
                    this.listToolbars,
                    !string.IsNullOrEmpty(this.configFolder)
                        ? Path.Combine(this._portalSettings.HomeDirectoryMapPath, this.configFolder)
                        : this._portalSettings.HomeDirectoryMapPath);

                this.ShowNotification(
                    string.Format(
                        Localization.GetString("ToolbarSetCreated.Text", this.ResXFile, this.LangCode),
                        this.dnnTxtToolBName.Text),
                    "success");
            }

            // Hide Priority
            this.dDlToolbarPrio.SelectedItem.Enabled = false;

            this.BindUserGroupsGridView();

            this.dnnTxtToolBName.Text = string.Empty;
            this.ToolbarSet.Value = string.Empty;

            List<string> excludeButtons;

            var toolbarSet = new ToolbarSet();

            // Empty Toolbar
            toolbarSet.ToolbarGroups.Add(
                new ToolbarGroup { name = Localization.GetString("NewGroupName.Text", this.ResXFile, this.LangCode) });

            this.FillToolbarGroupsRepeater(toolbarSet, out excludeButtons);

            this.FillAvailableToolbarButtons(null);

            this.dnnTxtToolBName.Enabled = true;

            this.iBAdd.ImageUrl = this.ResolveUrl("~/images/add.gif");

            this.iBAdd.AlternateText = Localization.GetString("AddToolbar.Text", this.ResXFile, this.LangCode);
            this.iBAdd.ToolTip = Localization.GetString("AddToolbar.Text", this.ResXFile, this.LangCode);

            this.iBCancel.Visible = false;

            this.HideAddToolbar();
        }
        /// <summary>
        /// Fills the toolbar groups repeater.
        /// </summary>
        /// <param name="toolbarSet">The toolbar set.</param>
        /// <param name="excludeButtons">The exclude buttons list.</param>
        private void FillToolbarGroupsRepeater(ToolbarSet toolbarSet, out List<string> excludeButtons)
        {
            excludeButtons = new List<string>();

            var toolbarGroupsTable = new DataTable();

            toolbarGroupsTable.Columns.Add(new DataColumn("GroupName", typeof(string)));

            this.toolbarSets = toolbarSet;

            foreach (var group in this.toolbarSets.ToolbarGroups)
            {
                var groupRow = toolbarGroupsTable.NewRow();

                groupRow["GroupName"] = group.name;

                toolbarGroupsTable.Rows.Add(groupRow);

                // exclude existing buttons in the available list
                excludeButtons.AddRange(@group.items);
            }

            this.ToolbarGroupsRepeater.DataSource = toolbarGroupsTable;
            this.ToolbarGroupsRepeater.DataBind();
        }
Example #6
0
        /// <summary>
        /// Gets the default toolbar.
        /// </summary>
        /// <param name="toolbarName">Name of the toolbar.</param>
        /// <returns>Gets the Default Toolbar Based on the toolbarName</returns>
        public static ToolbarSet GetDefaultToolbar(string toolbarName)
        {
            switch (toolbarName)
            {
                case "Basic":
                    {
                        var toolbarSetBasic = new ToolbarSet("Basic", 10);

                        // Basic Toolbar
                        var toolBarGroup = new ToolbarGroup
                                               {
                                                   items =
                                                       new List<string>
                                                           {
                                                               "Bold",
                                                               "Italic",
                                                               "-",
                                                               "NumberedList",
                                                               "BulletedList",
                                                               "-",
                                                               "Link",
                                                               "Unlink",
                                                               "Image",
                                                               "Mathjax",
                                                               "oembed",
                                                               "-",
                                                               "About"
                                                           },
                                                   name = "basicset"
                                               };

                        toolbarSetBasic.ToolbarGroups.Add(toolBarGroup);

                        return toolbarSetBasic;
                    }
                case "Standard":
                    {
                        var toolbarSetStandard = new ToolbarSet("Standard", 15);

                        // Standard Toolbar
                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items =
                                        new List<string>
                                            {
                                                "Cut",
                                                "Copy",
                                                "Paste",
                                                "PasteText",
                                                "PasteFromWord",
                                                "-",
                                                "Undo",
                                                "Redo"
                                            },
                                    name = "clipboard"
                                });

                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "Link", "Unlink", "Anchor" }, name = "link" });

                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items =
                                        new List<string> { "Image", "Mathjax", "oembed", "HorizontalRule" },
                                    name = "insert"
                                });

                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "Maximize" }, name = "tools" });

                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "Source" }, name = "document" });

                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "/" }, name = "rowBreak", });

                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items = new List<string> { "Bold", "Italic", "Strike", "RemoveFormat" },
                                    name = "basicstyles"
                                });

                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items =
                                        new List<string>
                                            {
                                                "NumberedList",
                                                "BulletedList",
                                                "-",
                                                "Outdent",
                                                "Indent",
                                                "Blockquote"
                                            },
                                    name = "paragraph"
                                });

                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "Styles" }, name = "styles" });

                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "Format" }, name = "format" });

                        toolbarSetStandard.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "About" }, name = "about" });

                        return toolbarSetStandard;
                    }
                case "Full":
                    {
                        var toolbarSetFull = new ToolbarSet("Full", 20);

                        // Full Toolbar
                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items =
                                        new List<string>
                                            {
                                                "Source",
                                                "-",
                                                "Preview",
                                                "Print",
                                                "-",
                                                "Templates"
                                            },
                                    name = "document"
                                });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items =
                                        new List<string>
                                            {
                                                "Cut",
                                                "Copy",
                                                "Paste",
                                                "PasteText",
                                                "PasteFromWord",
                                                "-",
                                                "Undo",
                                                "Redo",
                                            },
                                    name = "clipboard"
                                });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items =
                                        new List<string>
                                            {
                                                "Find",
                                                "Replace",
                                                "-",
                                                "SelectAll",
                                                "-",
                                                "SpellChecker",
                                                "Scayt"
                                            },
                                    name = "editing"
                                });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items = new List<string> { "Maximize", "ShowBlocks", "-", "About" },
                                    name = "tools"
                                });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "/" }, name = "rowBreak", });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items =
                                        new List<string>
                                            {
                                                "NumberedList",
                                                "BulletedList",
                                                "-",
                                                "Outdent",
                                                "Indent",
                                                "Blockquote",
                                                "CreateDiv",
                                                "-",
                                                "JustifyLeft",
                                                "JustifyCenter",
                                                "JustifyRight",
                                                "JustifyBlock",
                                                "-",
                                                "BidiLtr",
                                                "BidiRtl"
                                            },
                                    name = "paragraph"
                                });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "Link", "Unlink", "Anchor" }, name = "links" });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items =
                                        new List<string>
                                            {
                                                "Image",
                                                "Mathjax",
                                                "oembed",
                                                "syntaxhighlight",
                                                "Table",
                                                "HorizontalRule",
                                                "Smiley",
                                                "SpecialChar",
                                                "PageBreak",
                                                "Iframe",
                                            },
                                    name = "insert"
                                });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "/" }, name = "rowBreak", });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items =
                                        new List<string>
                                            {
                                                "Bold",
                                                "Italic",
                                                "Underline",
                                                "Strike",
                                                "Subscript",
                                                "Superscript",
                                                "-",
                                                "RemoveFormat"
                                            },
                                    name = "basicstyles"
                                });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup
                                {
                                    items = new List<string> { "Styles", "Format", "Font", "FontSize" },
                                    name = "styles"
                                });

                        toolbarSetFull.ToolbarGroups.Add(
                            new ToolbarGroup { items = new List<string> { "TextColor", "BGColor" }, name = "colors" });

                        return toolbarSetFull;
                    }
            }

            return null;
        }
Example #7
0
        /// <summary>
        /// Converts the toolbar set to string.
        /// </summary>
        /// <param name="toolbarSet">The toolbar set.</param>
        /// <param name="convertRowBreak">if set to <c>true</c> [convert row break].</param>
        /// <returns>
        /// Returns the Toolbar set as string
        /// </returns>
        public static string ConvertToolbarSetToString(ToolbarSet toolbarSet, bool convertRowBreak = false)
        {
            var stringBuilder = new StringBuilder();

            for (int i = 0; i < toolbarSet.ToolbarGroups.Count; i++)
            {
                var t = toolbarSet.ToolbarGroups[i];

                if (t.name.Equals("rowBreak") && convertRowBreak)
                {
                    stringBuilder.Append(i.Equals(@toolbarSet.ToolbarGroups.Count - 1) ? "'/'" : "'/',");
                }
                else
                {
                    stringBuilder.Append("{");

                    stringBuilder.AppendFormat("name:'{0}',items:", t.name);

                    stringBuilder.Append("[");

                    var buttons = t.items;

                    for (int index = 0; index < buttons.Count; index++)
                    {
                        var button = buttons[index];

                        stringBuilder.AppendFormat(index.Equals(buttons.Count - 1) ? "'{0}'" : "'{0}',", button);
                    }

                    stringBuilder.Append("]");

                    stringBuilder.Append(i.Equals(@toolbarSet.ToolbarGroups.Count - 1) ? "}" : "},");
                }
            }

            return stringBuilder.ToString();
        }