Esempio n. 1
0
        public static void SaveToDisk(Dictionary.DictionaryItem item)
        {
            if (item != null)
            {
                Umbraco.Core.Strings.DefaultShortStringHelper _sh = new Umbraco.Core.Strings.DefaultShortStringHelper();

                XmlDocument xmlDoc = helpers.XmlDoc.CreateDoc();
                xmlDoc.AppendChild(item.ToXml(xmlDoc));
                xmlDoc.AddMD5Hash();

                helpers.XmlDoc.SaveXmlDoc("Dictionary",
                                          _sh.CleanString(item.key, Umbraco.Core.Strings.CleanStringType.Ascii),
                                          xmlDoc);
            }
        }
Esempio n. 2
0
        public void Publish() {

            CreatedPackage package = this;
            PackageInstance pack = package.Data;

			try
			{

				PublishEventArgs e = new PublishEventArgs();
				package.FireBeforePublish(e);

				if (!e.Cancel)
				{
					int outInt = 0;

					//Path checking...
					string localPath = IOHelper.MapPath(SystemDirectories.Media + "/" + pack.Folder);

					if (!System.IO.Directory.Exists(localPath))
						System.IO.Directory.CreateDirectory(localPath);

					//Init package file...
					createPackageManifest();
					//Info section..
					appendElement(utill.PackageInfo(pack, _packageManifest));

					//Documents...
					int _contentNodeID = 0;
					if (!String.IsNullOrEmpty(pack.ContentNodeId) && int.TryParse(pack.ContentNodeId, out _contentNodeID))
					{
						XmlNode documents = _packageManifest.CreateElement("Documents");

						XmlNode documentSet = _packageManifest.CreateElement("DocumentSet");
						XmlAttribute importMode = _packageManifest.CreateAttribute("importMode", "");
						importMode.Value = "root";
						documentSet.Attributes.Append(importMode);
						documents.AppendChild(documentSet);

						//load content from umbraco.
						cms.businesslogic.web.Document umbDocument = new Document(_contentNodeID);
						documentSet.AppendChild(umbDocument.ToXml(_packageManifest, pack.ContentLoadChildNodes));

						appendElement(documents);
					}

					//Document types..
					List<DocumentType> dtl = new List<DocumentType>();
					XmlNode docTypes = _packageManifest.CreateElement("DocumentTypes");
					foreach (string dtId in pack.Documenttypes)
					{
						if (int.TryParse(dtId, out outInt))
						{
							DocumentType docT = new DocumentType(outInt);

							AddDocumentType(docT, ref dtl);

						}
					}
					foreach (DocumentType d in dtl)
					{
						docTypes.AppendChild(d.ToXml(_packageManifest));
					}

					appendElement(docTypes);

					//Templates
					XmlNode templates = _packageManifest.CreateElement("Templates");
					foreach (string templateId in pack.Templates)
					{
						if (int.TryParse(templateId, out outInt))
						{
							Template t = new Template(outInt);
							templates.AppendChild(t.ToXml(_packageManifest));
						}
					}
					appendElement(templates);

					//Stylesheets
					XmlNode stylesheets = _packageManifest.CreateElement("Stylesheets");
					foreach (string ssId in pack.Stylesheets)
					{
						if (int.TryParse(ssId, out outInt))
						{
							StyleSheet s = new StyleSheet(outInt);
							stylesheets.AppendChild(s.ToXml(_packageManifest));
						}
					}
					appendElement(stylesheets);

					//Macros
					XmlNode macros = _packageManifest.CreateElement("Macros");
					foreach (string macroId in pack.Macros)
					{
						if (int.TryParse(macroId, out outInt))
						{
							macros.AppendChild(utill.Macro(int.Parse(macroId), true, localPath, _packageManifest));
						}
					}
					appendElement(macros);

					//Dictionary Items
					XmlNode dictionaryItems = _packageManifest.CreateElement("DictionaryItems");
					foreach (string dictionaryId in pack.DictionaryItems)
					{
						if (int.TryParse(dictionaryId, out outInt))
						{
							Dictionary.DictionaryItem di = new Dictionary.DictionaryItem(outInt);
							dictionaryItems.AppendChild(di.ToXml(_packageManifest));
						}
					}
					appendElement(dictionaryItems);

					//Languages
					XmlNode languages = _packageManifest.CreateElement("Languages");
					foreach (string langId in pack.Languages)
					{
						if (int.TryParse(langId, out outInt))
						{
							language.Language lang = new umbraco.cms.businesslogic.language.Language(outInt);

							languages.AppendChild(lang.ToXml(_packageManifest));
						}
					}
					appendElement(languages);

					//Datatypes
					XmlNode dataTypes = _packageManifest.CreateElement("DataTypes");
					foreach (string dtId in pack.DataTypes)
					{
						if (int.TryParse(dtId, out outInt))
						{
							cms.businesslogic.datatype.DataTypeDefinition dtd = new umbraco.cms.businesslogic.datatype.DataTypeDefinition(outInt);
							dataTypes.AppendChild(dtd.ToXml(_packageManifest));
						}
					}
					appendElement(dataTypes);

					//Files
					foreach (string fileName in pack.Files)
					{
						utill.AppendFileToManifest(fileName, localPath, _packageManifest);
					}

					//Load control on install...
					if (!string.IsNullOrEmpty(pack.LoadControl))
					{
						XmlNode control = _packageManifest.CreateElement("control");
						control.InnerText = pack.LoadControl;
						utill.AppendFileToManifest(pack.LoadControl, localPath, _packageManifest);
						appendElement(control);
					}

					//Actions
					if (!string.IsNullOrEmpty(pack.Actions))
					{
						try
						{
							XmlDocument xd_actions = new XmlDocument();
							xd_actions.LoadXml("<Actions>" + pack.Actions + "</Actions>");
							XmlNode actions = xd_actions.DocumentElement.SelectSingleNode(".");


							if (actions != null)
							{
								actions = _packageManifest.ImportNode(actions, true).Clone();
								appendElement(actions);
							}
						}
						catch { }
					}

					string manifestFileName = localPath + "/package.xml";

					if (System.IO.File.Exists(manifestFileName))
						System.IO.File.Delete(manifestFileName);

					_packageManifest.Save(manifestFileName);
					_packageManifest = null;


					//string packPath = Settings.PackagerRoot.Replace(System.IO.Path.DirectorySeparatorChar.ToString(), "/") + "/" + pack.Name.Replace(' ', '_') + "_" + pack.Version.Replace(' ', '_') + "." + Settings.PackageFileExtension;

					// check if there's a packages directory below media
					string packagesDirectory = SystemDirectories.Media + "/created-packages";
					if (!System.IO.Directory.Exists(IOHelper.MapPath(packagesDirectory)))
						System.IO.Directory.CreateDirectory(IOHelper.MapPath(packagesDirectory));


					string packPath = packagesDirectory + "/" + (pack.Name + "_" + pack.Version).Replace(' ', '_') + "." + Settings.PackageFileExtension;
					utill.ZipPackage(localPath, IOHelper.MapPath(packPath));

					pack.PackagePath = packPath;

					if (pack.PackageGuid.Trim() == "")
						pack.PackageGuid = Guid.NewGuid().ToString();

					package.Save();

					//Clean up..
					System.IO.File.Delete(localPath + "/package.xml");
					System.IO.Directory.Delete(localPath, true);

					package.FireAfterPublish(e);
				}

			}
			catch (Exception ex)
			{
				LogHelper.Error<CreatedPackage>("An error occurred", ex);
			}
        }
Esempio n. 3
0
        public void Publish()
        {
            CreatedPackage  package = this;
            PackageInstance pack    = package.Data;

            try
            {
                PublishEventArgs e = new PublishEventArgs();
                package.FireBeforePublish(e);

                if (!e.Cancel)
                {
                    int outInt = 0;

                    //Path checking...
                    string localPath = IOHelper.MapPath(SystemDirectories.Media + "/" + pack.Folder);

                    if (!System.IO.Directory.Exists(localPath))
                    {
                        System.IO.Directory.CreateDirectory(localPath);
                    }

                    //Init package file...
                    createPackageManifest();
                    //Info section..
                    appendElement(utill.PackageInfo(pack, _packageManifest));

                    //Documents...
                    int _contentNodeID = 0;
                    if (!String.IsNullOrEmpty(pack.ContentNodeId) && int.TryParse(pack.ContentNodeId, out _contentNodeID))
                    {
                        XmlNode documents = _packageManifest.CreateElement("Documents");

                        XmlNode      documentSet = _packageManifest.CreateElement("DocumentSet");
                        XmlAttribute importMode  = _packageManifest.CreateAttribute("importMode", "");
                        importMode.Value = "root";
                        documentSet.Attributes.Append(importMode);
                        documents.AppendChild(documentSet);

                        //load content from umbraco.
                        cms.businesslogic.web.Document umbDocument = new Document(_contentNodeID);
                        documentSet.AppendChild(umbDocument.ToXml(_packageManifest, pack.ContentLoadChildNodes));

                        appendElement(documents);
                    }

                    //Document types..
                    List <DocumentType> dtl      = new List <DocumentType>();
                    XmlNode             docTypes = _packageManifest.CreateElement("DocumentTypes");
                    foreach (string dtId in pack.Documenttypes)
                    {
                        if (int.TryParse(dtId, out outInt))
                        {
                            DocumentType docT = new DocumentType(outInt);

                            AddDocumentType(docT, ref dtl);
                        }
                    }
                    foreach (DocumentType d in dtl)
                    {
                        docTypes.AppendChild(d.ToXml(_packageManifest));
                    }

                    appendElement(docTypes);

                    //Templates
                    XmlNode templates = _packageManifest.CreateElement("Templates");
                    foreach (string templateId in pack.Templates)
                    {
                        if (int.TryParse(templateId, out outInt))
                        {
                            Template t = new Template(outInt);
                            templates.AppendChild(t.ToXml(_packageManifest));
                        }
                    }
                    appendElement(templates);

                    //Stylesheets
                    XmlNode stylesheets = _packageManifest.CreateElement("Stylesheets");
                    foreach (string ssId in pack.Stylesheets)
                    {
                        if (int.TryParse(ssId, out outInt))
                        {
                            StyleSheet s = new StyleSheet(outInt);
                            stylesheets.AppendChild(s.ToXml(_packageManifest));
                        }
                    }
                    appendElement(stylesheets);

                    //Macros
                    XmlNode macros = _packageManifest.CreateElement("Macros");
                    foreach (string macroId in pack.Macros)
                    {
                        if (int.TryParse(macroId, out outInt))
                        {
                            macros.AppendChild(utill.Macro(int.Parse(macroId), true, localPath, _packageManifest));
                        }
                    }
                    appendElement(macros);

                    //Dictionary Items
                    XmlNode dictionaryItems = _packageManifest.CreateElement("DictionaryItems");
                    foreach (string dictionaryId in pack.DictionaryItems)
                    {
                        if (int.TryParse(dictionaryId, out outInt))
                        {
                            Dictionary.DictionaryItem di = new Dictionary.DictionaryItem(outInt);
                            dictionaryItems.AppendChild(di.ToXml(_packageManifest));
                        }
                    }
                    appendElement(dictionaryItems);

                    //Languages
                    XmlNode languages = _packageManifest.CreateElement("Languages");
                    foreach (string langId in pack.Languages)
                    {
                        if (int.TryParse(langId, out outInt))
                        {
                            language.Language lang = new umbraco.cms.businesslogic.language.Language(outInt);

                            languages.AppendChild(lang.ToXml(_packageManifest));
                        }
                    }
                    appendElement(languages);

                    //Datatypes
                    XmlNode dataTypes = _packageManifest.CreateElement("DataTypes");
                    foreach (string dtId in pack.DataTypes)
                    {
                        if (int.TryParse(dtId, out outInt))
                        {
                            cms.businesslogic.datatype.DataTypeDefinition dtd = new umbraco.cms.businesslogic.datatype.DataTypeDefinition(outInt);
                            dataTypes.AppendChild(dtd.ToXml(_packageManifest));
                        }
                    }
                    appendElement(dataTypes);

                    //Files
                    foreach (string fileName in pack.Files)
                    {
                        utill.AppendFileToManifest(fileName, localPath, _packageManifest);
                    }

                    //Load control on install...
                    if (!string.IsNullOrEmpty(pack.LoadControl))
                    {
                        XmlNode control = _packageManifest.CreateElement("control");
                        control.InnerText = pack.LoadControl;
                        utill.AppendFileToManifest(pack.LoadControl, localPath, _packageManifest);
                        appendElement(control);
                    }

                    //Actions
                    if (!string.IsNullOrEmpty(pack.Actions))
                    {
                        try
                        {
                            XmlDocument xd_actions = new XmlDocument();
                            xd_actions.LoadXml("<Actions>" + pack.Actions + "</Actions>");
                            XmlNode actions = xd_actions.DocumentElement.SelectSingleNode(".");


                            if (actions != null)
                            {
                                actions = _packageManifest.ImportNode(actions, true).Clone();
                                appendElement(actions);
                            }
                        }
                        catch { }
                    }

                    string manifestFileName = localPath + "/package.xml";

                    if (System.IO.File.Exists(manifestFileName))
                    {
                        System.IO.File.Delete(manifestFileName);
                    }

                    _packageManifest.Save(manifestFileName);
                    _packageManifest = null;


                    //string packPath = Settings.PackagerRoot.Replace(System.IO.Path.DirectorySeparatorChar.ToString(), "/") + "/" + pack.Name.Replace(' ', '_') + "_" + pack.Version.Replace(' ', '_') + "." + Settings.PackageFileExtension;

                    // check if there's a packages directory below media
                    string packagesDirectory = SystemDirectories.Media + "/created-packages";
                    if (!System.IO.Directory.Exists(IOHelper.MapPath(packagesDirectory)))
                    {
                        System.IO.Directory.CreateDirectory(IOHelper.MapPath(packagesDirectory));
                    }


                    string packPath = packagesDirectory + "/" + (pack.Name + "_" + pack.Version).Replace(' ', '_') + "." + Settings.PackageFileExtension;
                    utill.ZipPackage(localPath, IOHelper.MapPath(packPath));

                    pack.PackagePath = packPath;

                    if (pack.PackageGuid.Trim() == "")
                    {
                        pack.PackageGuid = Guid.NewGuid().ToString();
                    }

                    package.Save();

                    //Clean up..
                    System.IO.File.Delete(localPath + "/package.xml");
                    System.IO.Directory.Delete(localPath, true);

                    package.FireAfterPublish(e);
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error <CreatedPackage>("An error occurred", ex);
            }
        }
        public void Publish()
        {
            var package = this;
            var pack    = package.Data;

            var e = new PublishEventArgs();

            package.FireBeforePublish(e);

            if (e.Cancel == false)
            {
                var outInt = 0;

                //Path checking...
                var localPath = IOHelper.MapPath(SystemDirectories.Media + "/" + pack.Folder);

                if (Directory.Exists(localPath) == false)
                {
                    Directory.CreateDirectory(localPath);
                }

                //Init package file...
                CreatePackageManifest();
                //Info section..
                AppendElement(utill.PackageInfo(pack, _packageManifest));

                //Documents and tags...
                var contentNodeId = 0;
                if (string.IsNullOrEmpty(pack.ContentNodeId) == false && int.TryParse(pack.ContentNodeId, out contentNodeId))
                {
                    if (contentNodeId > 0)
                    {
                        //Create the Documents/DocumentSet node
                        XmlNode      documents   = _packageManifest.CreateElement("Documents");
                        XmlNode      documentSet = _packageManifest.CreateElement("DocumentSet");
                        XmlAttribute importMode  = _packageManifest.CreateAttribute("importMode", "");
                        importMode.Value = "root";
                        documentSet.Attributes.Append(importMode);
                        documents.AppendChild(documentSet);

                        //load content from umbraco.
                        var umbDocument = new Document(contentNodeId);

                        documentSet.AppendChild(umbDocument.ToXml(_packageManifest, pack.ContentLoadChildNodes));

                        AppendElement(documents);

                        ////Create the TagProperties node - this is used to store a definition for all
                        //// document properties that are tags, this ensures that we can re-import tags properly
                        //XmlNode tagProps = _packageManifest.CreateElement("TagProperties");

                        ////before we try to populate this, we'll do a quick lookup to see if any of the documents
                        //// being exported contain published tags.
                        //var allExportedIds = documents.SelectNodes("//@id").Cast<XmlNode>()
                        //    .Select(x => x.Value.TryConvertTo<int>())
                        //    .Where(x => x.Success)
                        //    .Select(x => x.Result)
                        //    .ToArray();
                        //var allContentTags = new List<ITag>();
                        //foreach (var exportedId in allExportedIds)
                        //{
                        //    allContentTags.AddRange(
                        //        ApplicationContext.Current.Services.TagService.GetTagsForEntity(exportedId));
                        //}

                        ////This is pretty round-about but it works. Essentially we need to get the properties that are tagged
                        //// but to do that we need to lookup by a tag (string)
                        //var allTaggedEntities = new List<TaggedEntity>();
                        //foreach (var group in allContentTags.Select(x => x.Group).Distinct())
                        //{
                        //    allTaggedEntities.AddRange(
                        //        ApplicationContext.Current.Services.TagService.GetTaggedContentByTagGroup(group));
                        //}

                        ////Now, we have all property Ids/Aliases and their referenced document Ids and tags
                        //var allExportedTaggedEntities = allTaggedEntities.Where(x => allExportedIds.Contains(x.EntityId))
                        //    .DistinctBy(x => x.EntityId)
                        //    .OrderBy(x => x.EntityId);

                        //foreach (var taggedEntity in allExportedTaggedEntities)
                        //{
                        //    foreach (var taggedProperty in taggedEntity.TaggedProperties.Where(x => x.Tags.Any()))
                        //    {
                        //        XmlNode tagProp = _packageManifest.CreateElement("TagProperty");
                        //        var docId = _packageManifest.CreateAttribute("docId", "");
                        //        docId.Value = taggedEntity.EntityId.ToString(CultureInfo.InvariantCulture);
                        //        tagProp.Attributes.Append(docId);

                        //        var propertyAlias = _packageManifest.CreateAttribute("propertyAlias", "");
                        //        propertyAlias.Value = taggedProperty.PropertyTypeAlias;
                        //        tagProp.Attributes.Append(propertyAlias);

                        //        var group = _packageManifest.CreateAttribute("group", "");
                        //        group.Value = taggedProperty.Tags.First().Group;
                        //        tagProp.Attributes.Append(group);

                        //        tagProp.AppendChild(_packageManifest.CreateCDataSection(
                        //            JsonConvert.SerializeObject(taggedProperty.Tags.Select(x => x.Text).ToArray())));

                        //        tagProps.AppendChild(tagProp);
                        //    }
                        //}

                        //AppendElement(tagProps);
                    }
                }

                //Document types..
                var dtl      = new List <DocumentType>();
                var docTypes = _packageManifest.CreateElement("DocumentTypes");
                foreach (var dtId in pack.Documenttypes)
                {
                    if (int.TryParse(dtId, out outInt))
                    {
                        DocumentType docT = new DocumentType(outInt);

                        AddDocumentType(docT, ref dtl);
                    }
                }

                foreach (DocumentType d in dtl)
                {
                    docTypes.AppendChild(d.ToXml(_packageManifest));
                }

                AppendElement(docTypes);

                //Templates
                var templates = _packageManifest.CreateElement("Templates");
                foreach (var templateId in pack.Templates)
                {
                    if (int.TryParse(templateId, out outInt))
                    {
                        var t = new Template(outInt);
                        templates.AppendChild(t.ToXml(_packageManifest));
                    }
                }
                AppendElement(templates);

                //Stylesheets
                var stylesheets = _packageManifest.CreateElement("Stylesheets");
                foreach (var stylesheetName in pack.Stylesheets)
                {
                    if (stylesheetName.IsNullOrWhiteSpace())
                    {
                        continue;
                    }
                    var stylesheetXmlNode = utill.Stylesheet(stylesheetName, true, _packageManifest);
                    if (stylesheetXmlNode != null)
                    {
                        stylesheets.AppendChild(stylesheetXmlNode);
                    }
                }
                AppendElement(stylesheets);

                //Macros
                var macros = _packageManifest.CreateElement("Macros");
                foreach (var macroId in pack.Macros)
                {
                    if (int.TryParse(macroId, out outInt))
                    {
                        macros.AppendChild(utill.Macro(int.Parse(macroId), true, localPath, _packageManifest));
                    }
                }
                AppendElement(macros);

                //Dictionary Items
                var dictionaryItems = _packageManifest.CreateElement("DictionaryItems");
                foreach (var dictionaryId in pack.DictionaryItems)
                {
                    if (int.TryParse(dictionaryId, out outInt))
                    {
                        var di = new Dictionary.DictionaryItem(outInt);
                        dictionaryItems.AppendChild(di.ToXml(_packageManifest));
                    }
                }
                AppendElement(dictionaryItems);

                //Languages
                var languages = _packageManifest.CreateElement("Languages");
                foreach (var langId in pack.Languages)
                {
                    if (int.TryParse(langId, out outInt))
                    {
                        var lang = new language.Language(outInt);

                        languages.AppendChild(lang.ToXml(_packageManifest));
                    }
                }
                AppendElement(languages);

                //Datatypes
                var dataTypes = _packageManifest.CreateElement("DataTypes");
                foreach (var dtId in pack.DataTypes)
                {
                    if (int.TryParse(dtId, out outInt))
                    {
                        datatype.DataTypeDefinition dtd = new datatype.DataTypeDefinition(outInt);
                        dataTypes.AppendChild(dtd.ToXml(_packageManifest));
                    }
                }
                AppendElement(dataTypes);

                //Files
                foreach (var fileName in pack.Files)
                {
                    utill.AppendFileToManifest(fileName, localPath, _packageManifest);
                }

                //Load control on install...
                if (string.IsNullOrEmpty(pack.LoadControl) == false)
                {
                    XmlNode control = _packageManifest.CreateElement("control");
                    control.InnerText = pack.LoadControl;
                    utill.AppendFileToManifest(pack.LoadControl, localPath, _packageManifest);
                    AppendElement(control);
                }

                //Actions
                if (string.IsNullOrEmpty(pack.Actions) == false)
                {
                    try
                    {
                        var xdActions = new XmlDocument();
                        xdActions.LoadXml("<Actions>" + pack.Actions + "</Actions>");
                        var actions = xdActions.DocumentElement.SelectSingleNode(".");


                        if (actions != null)
                        {
                            actions = _packageManifest.ImportNode(actions, true).Clone();
                            AppendElement(actions);
                        }
                    }
                    catch { }
                }

                var manifestFileName = localPath + "/package.xml";

                if (File.Exists(manifestFileName))
                {
                    File.Delete(manifestFileName);
                }

                _packageManifest.Save(manifestFileName);
                _packageManifest = null;


                //string packPath = Settings.PackagerRoot.Replace(System.IO.Path.DirectorySeparatorChar.ToString(), "/") + "/" + pack.Name.Replace(' ', '_') + "_" + pack.Version.Replace(' ', '_') + "." + Settings.PackageFileExtension;

                // check if there's a packages directory below media
                var packagesDirectory = SystemDirectories.Media + "/created-packages";
                if (Directory.Exists(IOHelper.MapPath(packagesDirectory)) == false)
                {
                    Directory.CreateDirectory(IOHelper.MapPath(packagesDirectory));
                }


                var packPath = packagesDirectory + "/" + (pack.Name + "_" + pack.Version).Replace(' ', '_') + "." + Settings.PackageFileExtension;
                utill.ZipPackage(localPath, IOHelper.MapPath(packPath));

                pack.PackagePath = packPath;

                if (pack.PackageGuid.Trim() == "")
                {
                    pack.PackageGuid = Guid.NewGuid().ToString();
                }

                package.Save();

                //Clean up..
                File.Delete(localPath + "/package.xml");
                Directory.Delete(localPath, true);

                package.FireAfterPublish(e);
            }
        }