1: using System;
2: using System.Collections.Generic;
3: using System.Web.Security;
4: using System.Web.UI.WebControls;
5: using EPiServer.Personalization;
6: using EPiServer.PlugIn;
7: using EPiServer.Security;
8: using EPiServer.Util.PlugIns;
9: using System.Web.UI;
10: using EPiServer.DataAbstraction;
11: using System.Web.UI.HtmlControls;
12: using System.Xml;
13: using System.IO;
14: using System.Configuration;
15: using EPiServer.Core;
16: using EPiServer.UI;
17:
18:
19: namespace EPiServer.Plugin.PropertyManager
20: {
21: [GuiPlugIn(DisplayName = "Property Definitions Manager", Description = "Plugin for managing of property caption- and helptext", Area = PlugInArea.AdminMenu, Url = "~/Plugin/PropertyManager/PropertyManager.aspx", LanguagePath = "/propertymanager")]
22: public partial class PropertyManager : System.Web.UI.Page
23: {
24: #region Fields
25: private string _captionText = "";
26: private string _helpText = "";
27: private string _propName = "";
28: private string _propID = "";
29: private string _fromXmlCaptionText = "";
30: private string _fromXmlHelpText = "";
31:
32: const string xmlfilename = "/lang/propertydefinitions_{0}.xml";
33: #endregion
34:
35: #region Methods
36: protected override void OnLoad(EventArgs e)
37: {
38: base.OnLoad(e);
39: }
40:
41: private void UpdatePageTypes()
42: {
43: foreach (ListViewItem item in lwPropertyDetails.Items)
44: {
45: _captionText = ((TextBox)item.FindControl("pdCaption")).Text;
46: _helpText = ((TextBox)item.FindControl("pdHelp")).Text;
47: _propName = ((HtmlTableCell)item.FindControl("pdName")).InnerText;
48: _propID = ((HtmlTableCell)item.FindControl("pdID")).InnerText;
49:
50: PageDefinition def = PageDefinition.Load(int.Parse(_propID));
51:
52: foreach (PageType pt in PageType.List())
53: {
54: foreach(PageDefinition definition in pt.Definitions)
55: {
56: if (definition.Name.ToLower() == _propName.ToLower())
57: {
58: definition.EditCaption = _captionText;
59: definition.HelpText = _helpText;
60: definition.Save();
61: break;
62: }
63: }
64: }
65: }
66: }
67:
68: private SortedDictionary<string, PageDefinition> GetPropertyDefinitions()
69: {
70: SortedDictionary<string, PageDefinition> definitions = new SortedDictionary<string, PageDefinition>();
71:
72: PageTypeCollection pageTypes = new PageTypeCollection();
73:
74: pageTypes = PageType.List();
75:
76: foreach (PageType ptype in pageTypes)
77: {
78: foreach (PageDefinition definition in ptype.Definitions)
79: {
80: if (!definitions.ContainsKey(definition.Name.ToLower()))
81: definitions.Add(definition.Name.ToLower(), definition);
82: }
83: }
84:
85: return definitions;
86: }
87:
88: private void CreateLangXmlFiles()
89: {
90: XmlDocument doc = new XmlDocument();
91: XmlNode docNode = doc.CreateXmlDeclaration("1.0", "UTF-8",null);
92: doc.AppendChild(docNode);
93:
94: XmlNode languagesNode = doc.CreateElement("languages");
95: doc.AppendChild(languagesNode);
96:
97: XmlNode languageNode = doc.CreateElement("language");
98: XmlAttribute name = doc.CreateAttribute("name");
99: name.Value = selectLanguage.SelectedItem.Text;
100:
101: XmlAttribute id = doc.CreateAttribute("id");
102: id.Value = selectLanguage.SelectedItem.Value;
103:
104: languageNode.Attributes.Append(name);
105: languageNode.Attributes.Append(id);
106:
107: languagesNode.AppendChild(languageNode);
108:
109: XmlNode commonNode = doc.CreateElement("common");
110: XmlNode pageTypesNode = doc.CreateElement("pagetypes");
111:
112: languageNode.AppendChild(commonNode);
113: commonNode.AppendChild(pageTypesNode);
114:
115:
116: foreach (ListViewItem item in lwPropertyDetails.Items)
117: {
118: _captionText = ((TextBox)item.FindControl("pdCaption")).Text;
119: _helpText = ((TextBox)item.FindControl("pdHelp")).Text;
120: _propName = ((HtmlTableCell)item.FindControl("pdName")).InnerText;
121:
122: XmlNode propertyNode = doc.CreateElement("property");
123: XmlAttribute propertyName = doc.CreateAttribute("name");
124: propertyName.Value = _propName;
125:
126: propertyNode.Attributes.Append(propertyName);
127: XmlNode caption = doc.CreateElement("caption");
128: XmlNode helptext = doc.CreateElement("help");
129: propertyNode.AppendChild(caption);
130: caption.AppendChild(doc.CreateTextNode(_captionText));
131: helptext.AppendChild(doc.CreateTextNode(_helpText));
132: propertyNode.AppendChild(helptext);
133:
134: pageTypesNode.AppendChild(propertyNode);
135:
136: }
137:
138: doc.Save(Server.MapPath(string.Format(xmlfilename,selectLanguage.SelectedItem.Value)));
139:
140: }
141:
142: public string GetTranslation(string propertyname,string node)
143: {
144: string strang = "/pagetypes/common/property[@name='{0}]'/{1}";
145: string kalle = string.Format(strang, propertyname, node);
146:
147: return LanguageManager.Instance.TranslateRaw("/pagetypes/common/property[@name=\"" + propertyname + "\"]/" + node,selectLanguage.SelectedItem.Value);
148: }
149:
150: protected override void OnInit(EventArgs e)
151: {
152: base.OnInit(e);
153:
154: selectLanguage.DataSource = LanguageBranch.ListEnabled();
155: selectLanguage.DataTextField = "Name";
156: selectLanguage.DataValueField = "LanguageID";
157: selectLanguage.DataBind();
158:
159: refreshButton.Click += new EventHandler(refreshButton_Click);
160: saveButton.Click += new EventHandler(saveButton_Click);
161: asXmlButton.Click += new EventHandler(asXmlButton_Click);
162: updatePropertyFromXml.Click += new EventHandler(updatePropertyFromXml_Click);
163: }
164:
165: private SortedDictionary<string, PageDefinition> UpdatePropertyFromXml()
166: {
167: SortedDictionary<string, PageDefinition> definitions = new SortedDictionary<string, PageDefinition>();
168: PageDefinition tempDef = null;
169:
170: foreach (ListViewItem item in lwPropertyDetails.Items)
171: {
172: _captionText = ((TextBox)item.FindControl("pdCaption")).Text;
173: _helpText = ((TextBox)item.FindControl("pdHelp")).Text;
174: _fromXmlCaptionText = ((TextBox)item.FindControl("pdTranslateCaption")).Text;
175: _fromXmlHelpText = ((TextBox)item.FindControl("pdTranslateHelp")).Text;
176: _propName = ((HtmlTableCell)item.FindControl("pdName")).InnerText;
177: _propID = ((HtmlTableCell)item.FindControl("pdID")).InnerText;
178:
179: tempDef = new PageDefinition();
180: tempDef.Name = _propName;
181: tempDef.ID = int.Parse(_propID);
182:
183: if (string.IsNullOrEmpty(_fromXmlHelpText))
184: tempDef.HelpText = _captionText;
185: else
186: tempDef.HelpText = _fromXmlHelpText;
187:
188: if (string.IsNullOrEmpty(_fromXmlCaptionText))
189: tempDef.EditCaption = _captionText;
190: else
191: tempDef.EditCaption = _fromXmlCaptionText;
192:
193: definitions.Add(_propName.ToLower(), tempDef);
194: }
195:
196: return definitions;
197: }
198:
199: #endregion
200:
201: #region eventhandlers
202: void updatePropertyFromXml_Click(object sender, EventArgs e)
203: {
204:
205: lwPropertyDetails.DataSource = UpdatePropertyFromXml();
206: lwPropertyDetails.DataBind();
207: }
208:
209: void asXmlButton_Click(object sender, EventArgs e)
210: {
211: CreateLangXmlFiles();
212: }
213:
214: void saveButton_Click(object sender, EventArgs e)
215: {
216: UpdatePageTypes();
217:
218: lwPropertyDetails.DataSource = GetPropertyDefinitions();
219: lwPropertyDetails.DataBind();
220: }
221:
222: void refreshButton_Click(object sender, EventArgs e)
223: {
224: lwPropertyDetails.DataSource = GetPropertyDefinitions();
225: lwPropertyDetails.DataBind();
226: }
227:
228: #endregion
229: }
230: }