Files
Umbraco-CMS/components/editorControls/tinymce/tinyMCEConfiguration.cs
Shandem f6d0d043b5 DO NOT DOWNLOAD. DOWNLOAT LATEST STABLE FROM RELEASE TAB
Created 4.1.0 branch

[TFS Changeset #55082]
2009-06-19 07:39:16 +00:00

286 lines
8.4 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
using System.Collections;
using System.Xml;
namespace umbraco.editorControls.tinymce
{
public class tinyMCEConfiguration
{
private static bool _init = false;
private static Hashtable _commands = new Hashtable();
private static string _validElements;
private static Hashtable _configOptions = new Hashtable();
public static Hashtable ConfigOptions
{
get
{
if (!_init)
init();
return _configOptions;
}
set
{
_configOptions = value;
}
}
public static string ValidElements
{
get
{
if (!_init)
init();
return _validElements;
}
set { _validElements = value; }
}
public static string PluginPath = umbraco.GlobalSettings.Path + "/plugins/tinymce3";
public static string JavascriptPath = umbraco.GlobalSettings.Path + "/../umbraco_client/tinymce3";
private static string _invalidElements;
public static string InvalidElements
{
get
{
if (!_init)
init();
return _invalidElements;
}
set { _invalidElements = value; }
}
private static Hashtable _plugins = new Hashtable();
public static Hashtable Plugins
{
get
{
if (!_init)
init();
return _plugins;
}
set { _plugins = value; }
}
public static Hashtable Commands
{
get
{
if (!_init)
init();
return _commands;
}
}
public static SortedList SortedCommands
{
get
{
if (!_init)
init();
SortedList sc = new SortedList();
IDictionaryEnumerator ide = _commands.GetEnumerator();
while (ide.MoveNext())
sc.Add(((tinyMCECommand)ide.Value).Priority, (tinyMCECommand)ide.Value);
return sc;
}
}
private static void init()
{
// Load config
XmlDocument xd = new XmlDocument();
xd.Load(GlobalSettings.FullpathToRoot + System.IO.Path.DirectorySeparatorChar + GlobalSettings.Path + System.IO.Path.DirectorySeparatorChar + ".." + System.IO.Path.DirectorySeparatorChar + "config" + System.IO.Path.DirectorySeparatorChar + "tinyMceConfig.config");
foreach (XmlNode n in xd.DocumentElement.SelectNodes("//command"))
{
if (!_commands.ContainsKey(n.SelectSingleNode("./umbracoAlias").FirstChild.Value))
{
bool isStyle = false;
if (n.Attributes.GetNamedItem("isStyle") != null)
isStyle = bool.Parse(n.Attributes.GetNamedItem("isStyle").Value);
_commands.Add(
n.SelectSingleNode("./umbracoAlias").FirstChild.Value.ToLower(),
new tinyMCECommand(
isStyle,
n.SelectSingleNode("./icon").FirstChild.Value,
n.SelectSingleNode("./tinyMceCommand").FirstChild.Value,
n.SelectSingleNode("./umbracoAlias").FirstChild.Value.ToLower(),
n.SelectSingleNode("./tinyMceCommand").Attributes.GetNamedItem("userInterface").Value,
n.SelectSingleNode("./tinyMceCommand").Attributes.GetNamedItem("frontendCommand").Value,
n.SelectSingleNode("./tinyMceCommand").Attributes.GetNamedItem("value").Value,
int.Parse(n.SelectSingleNode("./priority").FirstChild.Value)
));
}
}
foreach (XmlNode n in xd.DocumentElement.SelectNodes("//plugin"))
{
if (!_plugins.ContainsKey(n.FirstChild.Value))
{
bool useOnFrontend = false;
if (n.Attributes.GetNamedItem("loadOnFrontend") != null)
useOnFrontend = bool.Parse(n.Attributes.GetNamedItem("loadOnFrontend").Value);
_plugins.Add(
n.FirstChild.Value.ToLower(),
new tinyMCEPlugin(
n.FirstChild.Value,
useOnFrontend));
}
}
foreach (XmlNode n in xd.DocumentElement.SelectNodes("//config"))
{
if (!_configOptions.ContainsKey(n.FirstChild.Value))
{
_configOptions.Add(
n.Attributes["key"].FirstChild.Value.ToLower(),
n.FirstChild.Value);
}
}
if (xd.DocumentElement.SelectSingleNode("./invalidElements") != null)
_invalidElements = xd.DocumentElement.SelectSingleNode("./invalidElements").FirstChild.Value;
if (xd.DocumentElement.SelectSingleNode("./validElements") != null)
{
string _val = xd.DocumentElement.SelectSingleNode("./validElements").FirstChild.Value.Replace("\r", "");
foreach (string s in _val.Split("\n".ToCharArray()))
_validElements += "'" + s + "' + \n";
_validElements = _validElements.Substring(0, _validElements.Length - 4);
}
_init = true;
}
}
public class tinyMCEPlugin
{
public tinyMCEPlugin(string Name, bool UseOnFrontEnd)
{
_name = Name;
_useOnFrontend = UseOnFrontEnd;
}
private string _name;
public string Name
{
get { return _name; }
set { _name = value; }
}
private bool _useOnFrontend;
public bool UseOnFrontend
{
get { return _useOnFrontend; }
set { _useOnFrontend = value; }
}
}
public class tinyMCECommand
{
public tinyMCECommand(bool isStylePicker, string Icon, string Command, string Alias, string UserInterface, string FrontEndCommand, string Value, int Priority)
{
_isStylePicker = isStylePicker;
_icon = Icon;
_command = Command;
_alias = Alias;
_userInterface = UserInterface;
_frontEndCommand = FrontEndCommand;
_value = Value;
_priority = Priority;
}
private bool _isStylePicker;
public bool IsStylePicker
{
get { return _isStylePicker; }
set { _isStylePicker = value; }
}
private string _icon;
public string Icon
{
get { return GlobalSettings.Path + "/" + _icon; }
set { _icon = value; }
}
private string _command;
public string Command
{
get { return _command; }
set { _command = value; }
}
private string _alias;
public string Alias
{
get { return _alias; }
set { _alias = value; }
}
private string _userInterface;
public string UserInterface
{
get { return _userInterface; }
set { _userInterface = value; }
}
private string _frontEndCommand;
public string FrontEndCommand
{
get { return _frontEndCommand; }
set { _frontEndCommand = value; }
}
private string _value;
public string Value
{
get { return _value; }
set { _value = value; }
}
private int _priority;
public int Priority
{
get { return _priority; }
set { _priority = value; }
}
}
}