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;
        }