protected override bool RefreshFromXml(XDocument xmlDoc) { try { dynamic dtXml = new umbraco.MacroEngines.DynamicXml(xmlDoc.Root); var docType = MediaType.GetByAlias((string)dtXml.Info.Alias); if (docType == null) docType = MediaType.MakeNew(User.GetUser(0), (string)dtXml.Info.Name); docType.Alias = dtXml.Info.Alias; docType.IconUrl = dtXml.Info.Icon; docType.Thumbnail = dtXml.Info.Thumbnail; docType.Description = dtXml.Info.Description; docType.Text = dtXml.Info.Name; if (xmlDoc.Root.Element("Info").Element("Master") != null) docType.MasterContentType = DocumentType.GetByAlias(xmlDoc.Root.Element("Info").Element("Master").Value).Id; //check if differs first UpdateTabs(xmlDoc, docType); //PropertyType. UpdateProperties(xmlDoc, docType); docType.Save(); return true; } catch { } return false; }
protected override bool RefreshFromXml(XDocument xmlDoc) { dynamic dtXml = new umbraco.MacroEngines.DynamicXml(xmlDoc.Root); // <macro> // <name>Login</name> // <alias>Login</alias> // <scriptType></scriptType> // <scriptAssembly></scriptAssembly> // <properties /> //</macro> var docType = Macro.GetByAlias((string)dtXml.alias); if (docType == null) docType = Macro.MakeNew((string)dtXml.name); docType.ScriptingFile = dtXml.scriptingFile; docType.UseInEditor = bool.Parse((string)dtXml.useInEditor); docType.RefreshRate = int.Parse(dtXml.refreshRate); docType.Xslt = dtXml.xslt; docType.Assembly = dtXml.scriptAssembly; docType.Type = dtXml.scriptType; var props = docType.Properties; var fileProps = xmlDoc.Descendants("property"); var filePropsAlias = fileProps.Select(x => x.Attribute("alias").Value); var existingProps = props.Where(x => filePropsAlias.Contains(x.Alias)); var existingPropAlias = existingProps.Select(x => x.Alias); var toDel = props.Where(x => !filePropsAlias.Contains(x.Alias)); var newProps = fileProps.Where(x => !existingPropAlias.Contains(x.Attribute("alias").Value)); foreach (var p in toDel) p.Delete(); foreach (var p in existingProps) { var xml = fileProps.Where(x => x.Attribute("alias").Value == p.Alias).First(); //<property name="sd" alias="ds" show="False" propertyType="number" /> p.Name = xml.Attribute("name").Value; p.Public = bool.Parse(xml.Attribute("show").Value); p.Type = MacroPropertyType.GetAll.Where(x => x.Alias == xml.Attribute("propertyType").Value).First(); p.Save(); } foreach (var xml in newProps) { MacroProperty.MakeNew(docType, bool.Parse(xml.Attribute("show").Value), xml.Attribute("alias").Value, xml.Attribute("name").Value, MacroPropertyType.GetAll.Where(x => x.Alias == xml.Attribute("propertyType").Value).First() ); } docType.Save(); return true; }
protected override bool RefreshFromXml(XDocument xmlDoc) { try { dynamic dtXml = new umbraco.MacroEngines.DynamicXml(xmlDoc.Root); // <macro> // <name>Login</name> // <alias>Login</alias> // <scriptType></scriptType> // <scriptAssembly></scriptAssembly> //// <properties /> ////</macro> var docType = Template.GetByAlias((string)dtXml.Alias); if (docType == null) docType = Template.MakeNew((string)dtXml.Name, new User(0)); docType.Alias = dtXml.Alias; if (xmlDoc.Descendants("Master").Any()) docType.MasterTemplate = Template.GetByAlias((string)dtXml.Master).Id; docType.Design = dtXml.Design; docType.Save(); return true; } catch { } return false; }
protected override bool RefreshFromXml(XDocument xmlDoc) { try { dynamic dtXml = new umbraco.MacroEngines.DynamicXml(xmlDoc.Root); var node = xmlDoc.Element("DataType"); var name = node.Attribute("Name").Value; var alias = name.ToAlias(); var dataTypeId = new Guid(node.Attribute("Id").Value); var dataType = DataTypeDefinition.GetAll().Where(x=>x.Text.ToAlias() == alias).FirstOrDefault(); if (dataType == null) { dataType = DataTypeDefinition.MakeNew(User.GetUser(0), name); } var dtFactory = new umbraco.cms.businesslogic.datatype.controls.Factory(); var dt = dtFactory.DataType(dataTypeId); dataType.DataType = dt; List<string> newValues = node.Element("PreValues").Elements("PreValue").Select(x => x.Attribute("Value").Value).ToList(); List<PreValue> toKeep = new List<PreValue>(); var preValues = PreValues.GetPreValues(dataType.Id).Values.OfType<PreValue>(); var sortOrder = 0; foreach(var nv in newValues) { sortOrder ++; var pv = preValues.Where(x=>x.Value == nv).FirstOrDefault(); if(pv == null){ pv = PreValue.MakeNew(dataType.Id, nv); } pv.SortOrder = sortOrder; toKeep.Add(pv); } var toDelete = preValues.Where(x=>!toKeep.Contains(x)); foreach(var pv in toDelete) { pv.Delete(); } foreach(var pv in toKeep) { pv.Save(); } dataType.Save(); return true; } catch(Exception ex) { } return false; }
protected override bool RefreshFromXml(XDocument xmlDoc) { try { dynamic dtXml = new umbraco.MacroEngines.DynamicXml(xmlDoc.Root); var docType = DocumentType.GetByAlias((string)dtXml.Info.Alias); if (docType == null) { docType = DocumentType.MakeNew(User.GetUser(0), (string)dtXml.Info.Name); } docType.Alias = dtXml.Info.Alias; docType.IconUrl = dtXml.Info.Icon; docType.Thumbnail = dtXml.Info.Thumbnail; docType.Description = dtXml.Info.Description; docType.Text = dtXml.Info.Name; if (xmlDoc.Root.Element("Info").Element("Master") != null) docType.MasterContentType = DocumentType.GetByAlias(xmlDoc.Root.Element("Info").Element("Master").Value).Id; //check if differs first var allowedTemp = docType.allowedTemplates.Select(x => x.Alias).ToList(); var newTemp = new List<string>(); bool hasNew = false; foreach (var t in xmlDoc.Descendants("Template").Select(x => x.Value)) { newTemp.Add(t); if (allowedTemp.Contains(t)) allowedTemp.Remove(t); else { hasNew = true; } } var allTemps = umbraco.cms.businesslogic.template.Template.GetAllAsList(); if (hasNew || allowedTemp.Any()) { docType.allowedTemplates = allTemps.Where(x => newTemp.Contains(x.Alias) || newTemp.Contains(x.Text)).ToArray(); } if (xmlDoc.Root.Element("Info").Element("DefaultTemplate") != null) { var temp = allTemps.Where(x => dtXml.Info.DefaultTemplate == x.Alias || dtXml.Info.DefaultTemplate == x.Text).FirstOrDefault(); if (temp != null) docType.DefaultTemplate = temp.Id; } UpdateTabs(xmlDoc, docType); UpdateProperties(xmlDoc, docType); docType.Save(); docType.AllowedChildContentTypeIDs = xmlDoc.Root.Element("Structure").Elements("DocumentType").Select(x => DocumentType.GetByAlias(x.Value).Id).ToArray(); docType.Save(); return true; } catch { } return false; }