public DynamicGuiTemplates LoadTemplates() { var guiModel = new DynamicGuiTemplates(); var mainDir = new DirectoryInfo(AppDomain.CurrentDomain.BaseDirectory + Res.LocalTemplatePath); int templateCount = mainDir.GetDirectories().Count(dir => (dir.Attributes & FileAttributes.Hidden) != FileAttributes.Hidden); guiModel.GuiTemplates = new GuiTemplate[templateCount]; int count = 0; foreach (var subDir in mainDir.EnumerateDirectories()) { if (!subDir.Name.Equals(".svn")) { var guiTemplate = new GuiTemplate(); var filePath = subDir.FullName; guiTemplate.Image1 = Res.TemplateImagePath + subDir.Name + Res.LoginImageFileName; guiTemplate.Image2 = Res.TemplateImagePath + subDir.Name + Res.PortalImageFileName; guiTemplate.Image3 = Res.TemplateImagePath + subDir.Name + Res.SurveyImageFileName; var xmlDoc = new XmlDocument(); xmlDoc.Load(filePath + Res.SubstitutionXmlFileName); XmlNode groupingsNode = xmlDoc.SelectSingleNode(Res.SubstitutonGroupsPath); if (groupingsNode != null) { guiTemplate.VariableGroups = new List<GuiVariableGroup>(); foreach (XmlNode groupingNode in groupingsNode.ChildNodes) { var guiGroup = new GuiVariableGroup { GroupName = (groupingNode.Attributes[Res.NameAttribute] != null) ? groupingNode.Attributes[Res.NameAttribute].Value : string.Empty, GroupLabel = (groupingNode.Attributes[Res.GroupLabelAttribute] != null) ? groupingNode.Attributes[Res.GroupLabelAttribute].Value : string.Empty }; guiTemplate.VariableGroups.Add(guiGroup); } } XmlNode variablesNode = xmlDoc.SelectSingleNode(Res.SubstitutionVariablesPath); if (variablesNode != null) { foreach (XmlNode variableNode in variablesNode.ChildNodes) { var group = (variableNode.Attributes[Res.GroupingAttribute] != null) ? variableNode.Attributes[Res.GroupingAttribute].Value : string.Empty; foreach (GuiVariableGroup guiVarGroup in guiTemplate.VariableGroups) { if (guiVarGroup.GroupName.Equals(group)) { if (guiVarGroup.Variables == null) { guiVarGroup.Variables = new List<GuiVariable>(); } var guiVariable = new GuiVariable(); guiVariable.Substitution = (variableNode.Attributes[Res.SubstituionAttribute] != null) ? variableNode.Attributes[Res.SubstituionAttribute].Value : string.Empty; guiVariable.PropertyName = (variableNode.Attributes[Res.PropertyNameAttribute] != null) ? variableNode.Attributes[Res.PropertyNameAttribute].Value : string.Empty; guiVariable.GuiName = (variableNode.Attributes[Res.UiNameAttribute] != null) ? variableNode.Attributes[Res.UiNameAttribute].Value : string.Empty; guiVariable.AltText = (variableNode.Attributes[Res.AltTextAttribute] != null) ? variableNode.Attributes[Res.AltTextAttribute].Value : string.Empty; guiVariable.UiComponent = (variableNode.Attributes[Res.UIComponentAttribute] != null) ? variableNode.Attributes[Res.UIComponentAttribute].Value : string.Empty; guiVariable.Default = (variableNode.Attributes[Res.DefaultAttribute] != null) ? variableNode.Attributes[Res.DefaultAttribute].Value : string.Empty; guiVariable.ComponentName = (variableNode.Attributes[Res.ComponentNameAttribute] != null) ? variableNode.Attributes[Res.ComponentNameAttribute].Value : string.Empty; guiVariable.ReplacementDirectory = (variableNode.Attributes[Res.ReplacementDirectoryAttribute] != null) ? variableNode.Attributes[Res.ReplacementDirectoryAttribute].Value : string.Empty; var valueLst = (variableNode.Attributes[Res.ComponentValueListAttribute] != null) ? variableNode.Attributes[Res.ComponentValueListAttribute].Value : string.Empty; if (!String.IsNullOrEmpty(valueLst)) { guiVariable.ComponentValueList = new List<string>(); guiVariable.ComponentValueList.AddRange(valueLst.Split(',')); } else { guiVariable.ComponentValueList = null; } guiVarGroup.Variables.Add(guiVariable); } } } } guiModel.GuiTemplates[count] = guiTemplate; count++; } } return guiModel; }
private GuiTemplate GetGuiTemplate(GuiTemplate guiTemplate, string filePath) { var xmlDoc = new XmlDocument(); xmlDoc.Load(filePath + Res.SubstitutionXmlFileName); XmlNode groupingsNode = xmlDoc.SelectSingleNode(Res.SubstitutonGroupsPath); XmlNode substitutionNode = xmlDoc.SelectSingleNode(Res.SubstitutionPath); guiTemplate.TemplateName = (substitutionNode.Attributes[Res.TemplateNameAttribute] != null) ? substitutionNode.Attributes[Res.TemplateNameAttribute].Value : string.Empty; if (groupingsNode != null) { guiTemplate.VariableGroups = new List<GuiVariableGroup>(); foreach (XmlNode groupingNode in groupingsNode.ChildNodes) { var guiGroup = new GuiVariableGroup { GroupName = (groupingNode.Attributes[Res.NameAttribute] != null) ? groupingNode.Attributes[Res.NameAttribute].Value : string.Empty, GroupLabel = (groupingNode.Attributes[Res.GroupLabelAttribute] != null) ? groupingNode.Attributes[Res.GroupLabelAttribute].Value : string.Empty }; guiTemplate.VariableGroups.Add(guiGroup); } } XmlNode variablesNode = xmlDoc.SelectSingleNode(Res.SubstitutionVariablesPath); if (variablesNode != null) { foreach (XmlNode variableNode in variablesNode.ChildNodes) { var group = (variableNode.Attributes[Res.GroupingAttribute] != null) ? variableNode.Attributes[Res.GroupingAttribute].Value : string.Empty; foreach (GuiVariableGroup guiVarGroup in guiTemplate.VariableGroups) { if (guiVarGroup.GroupName.Equals(group)) { if (guiVarGroup.Variables == null) { guiVarGroup.Variables = new List<GuiVariable>(); } var guiVariable = new GuiVariable(); guiVariable.Substitution = (variableNode.Attributes[Res.SubstituionAttribute] != null) ? variableNode.Attributes[Res.SubstituionAttribute].Value : string.Empty; guiVariable.PropertyName = (variableNode.Attributes[Res.PropertyNameAttribute] != null) ? variableNode.Attributes[Res.PropertyNameAttribute].Value : string.Empty; guiVariable.GuiName = (variableNode.Attributes[Res.UiNameAttribute] != null) ? variableNode.Attributes[Res.UiNameAttribute].Value : string.Empty; guiVariable.AltText = (variableNode.Attributes[Res.AltTextAttribute] != null) ? variableNode.Attributes[Res.AltTextAttribute].Value : string.Empty; guiVariable.UiComponent = (variableNode.Attributes[Res.UIComponentAttribute] != null) ? variableNode.Attributes[Res.UIComponentAttribute].Value : string.Empty; guiVariable.Default = (variableNode.Attributes[Res.DefaultAttribute] != null) ? variableNode.Attributes[Res.DefaultAttribute].Value : string.Empty; guiVariable.ComponentName = (variableNode.Attributes[Res.ComponentNameAttribute] != null) ? variableNode.Attributes[Res.ComponentNameAttribute].Value : string.Empty; guiVariable.ReplacementDirectory = (variableNode.Attributes[Res.ReplacementDirectoryAttribute] != null) ? variableNode.Attributes[Res.ReplacementDirectoryAttribute].Value : string.Empty; guiVariable.PathToUpload = (variableNode.Attributes[Res.PathToUploadAttribute] != null) ? variableNode.Attributes[Res.PathToUploadAttribute].Value : string.Empty; var valueLst = (variableNode.Attributes[Res.ComponentValueListAttribute] != null) ? variableNode.Attributes[Res.ComponentValueListAttribute].Value : string.Empty; if (!String.IsNullOrEmpty(valueLst)) { guiVariable.ComponentValueList = new List<string>(); string tempString = valueLst.Replace("\',\'", ".").Replace("\'", ""); // TODO needs to be more forgiving guiVariable.ComponentValueList.AddRange(tempString.Split('.')); } else { guiVariable.ComponentValueList = null; } guiVarGroup.Variables.Add(guiVariable); } } } } return guiTemplate; }