/// <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> /// 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; foreach (var button in buttons) { stringBuilder.AppendFormat("'{0}',", button); } stringBuilder.Remove(stringBuilder.Length - 1, 1); stringBuilder.Append("]"); stringBuilder.Append(i.Equals(@toolbarSet.ToolbarGroups.Count - 1) ? "}" : "},"); } } return stringBuilder.ToString(); }
/// <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; }
/// <summary> /// Gets the size of the current user upload. /// </summary> /// <param name="settings">The settings.</param> /// <param name="portalSettings">The portal settings.</param> /// <param name="httpRequest">The HTTP request.</param> /// <returns>Returns the MAX. upload file size for the current user</returns> internal static int GetCurrentUserUploadSize(EditorProviderSettings settings, PortalSettings portalSettings, HttpRequest httpRequest) { var uploadFileLimitForPortal = Convert.ToInt32(Utility.GetMaxUploadSize()); if (settings.ToolBarRoles.Count <= 0) { return uploadFileLimitForPortal; } var listUserUploadFileSizes = new List<ToolbarSet>(); foreach (var roleUploadSize in settings.UploadSizeRoles) { if (roleUploadSize.RoleId.Equals(-1) && !httpRequest.IsAuthenticated) { return roleUploadSize.UploadFileLimit; } if (roleUploadSize.RoleId.Equals(-1)) { continue; } // Role var role = RoleController.Instance.GetRoleById(roleUploadSize.RoleId, portalSettings.PortalId); if (role == null) { continue; } if (!PortalSecurity.IsInRole(role.RoleName)) { continue; } var toolbar = new ToolbarSet(role.RoleName, roleUploadSize.UploadFileLimit); listUserUploadFileSizes.Add(toolbar); } if (listUserUploadFileSizes.Count <= 0) { return uploadFileLimitForPortal; } // Compare The User Toolbars if the User is more then One Role, and apply the Toolbar with the Highest Priority int iHighestPrio = listUserUploadFileSizes.Max(toolb => toolb.Priority); return listUserUploadFileSizes.Find(toolbarSel => toolbarSel.Priority.Equals(iHighestPrio)).Priority; }
/// <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(); }