Exemplo n.º 1
0
 /// <summary>
 ///  When the Umbraco Forms package is installed this will update the contact template and the forms picker property type
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 private void PackagingService_ImportedPackage(IPackagingService sender, Core.Events.ImportPackageEventArgs <Core.Packaging.Models.InstallationSummary> e)
 {
     if (e != null && e.PackageMetaData != null && e.PackageMetaData.Name == "Umbraco Forms")
     {
         var formsInstallHelper = new FormsInstallationHelper(ApplicationContext.Current.Services);
         formsInstallHelper.UpdateUmbracoDataForFormsInstallation();
     }
 }
        /// <summary>
        /// This will check if Forms is installed and if not it will update the markup in the contact template to render a message to install forms
        /// and update the contactForm property type to become a label
        /// </summary>
        public void UpdateUmbracoDataForNonFormsInstallation()
        {
            var macroService    = _services.MacroService;
            var doctypeService  = _services.ContentTypeService;
            var dataTypeService = _services.DataTypeService;
            var fileService     = _services.FileService;

            // check if forms is installed
            var formMacro = macroService.GetByAlias(FormsMacroAlias);

            if (formMacro == null)
            {
                // find the doctype and change the form chooser property type

                var contactFormType = doctypeService.Get(DocTypeAlias);
                if (contactFormType != null)
                {
                    var formPicker = contactFormType.PropertyTypes.FirstOrDefault(x => x.Alias == PropertyAlias);

                    var labelDataType = dataTypeService.GetDataType(Constants.DataTypes.LabelString);
                    if (labelDataType != null && formPicker != null)
                    {
                        formPicker.DataTypeId = labelDataType.Id;
                        doctypeService.Save(contactFormType);
                    }
                }

                // update the template
                var contactView = fileService.GetTemplate(TemplateAlias);
                if (contactView != null)
                {
                    var templateContent = contactView.Content;
                    if (string.IsNullOrWhiteSpace(templateContent) == false)
                    {
                        // do the replacement
                        templateContent =
                            PreInstallContactFormHtmlPattern.Replace(templateContent, PostInstallContactFormHtml);

                        contactView.Content = templateContent;
                        fileService.SaveTemplate(contactView);
                    }
                }
            }
            else
            {
                // forms is installed
                var formsInstallHelper = new FormsInstallationHelper(Current.Services);
                formsInstallHelper.UpdateUmbracoDataForFormsInstallation();
            }
        }
        public bool Execute(string packageName, XElement xmlData)
        {
            var contentService   = Current.Services.ContentService;
            var mediaTypeService = Current.Services.MediaTypeService;
            var mediaService     = Current.Services.MediaService;
            var dataTypeService  = Current.Services.DataTypeService;
            var fileService      = Current.Services.FileService;
            var contentSection   = Current.Configs.Settings().Content;

            var formsInstallHelper = new FormsInstallationHelper(Current.Services);

            formsInstallHelper.UpdateUmbracoDataForNonFormsInstallation();
            formsInstallHelper.UpdateUmbracoDataForFormsInstallation();

            // update master view for all templates (packager doesn't support this)
            var master = fileService.GetTemplate("master");

            if (master != null)
            {
                var templatesToFind = new[] { "Blog", "Blogpost", "contact", "contentPage", "home", "people", "Person", "Product", "Products" };
                foreach (var template in fileService.GetTemplates().Where(x => templatesToFind.InvariantContains(x.Alias)))
                {
                    // we'll update the master template for all templates that doesn't have one already
                    if (template.Alias != master.Alias && (
                            template.IsMasterTemplate == false && string.IsNullOrWhiteSpace(template.MasterTemplateAlias)))
                    {
                        template.SetMasterTemplate(master);
                        fileService.SaveTemplate(template);
                    }
                }
            }

            // create media folders

            this.CreateMediaItem(mediaService, mediaTypeService, -1, "folder", new Guid("b6f11172-373f-4473-af0f-0b0e5aefd21c"), "Design", string.Empty, true);
            this.CreateMediaItem(mediaService, mediaTypeService, -1, "folder", new Guid("1fd2ecaf-f371-4c00-9306-867fa4585e7a"), "People", string.Empty, true);
            this.CreateMediaItem(mediaService, mediaTypeService, -1, "folder", new Guid("6d5bf746-cb82-45c5-bd15-dd3798209b87"), "Products", string.Empty, true);

            // create media
            IMedia mediaRoot = mediaService.GetById(-1);
            IEnumerable <IMedia> rootMedia = mediaService.GetRootMedia().ToArray();

            try
            {
                foreach (XElement selectNode in xmlData.Elements("mediaItem"))
                {
                    IMedia media1 = mediaRoot;
                    foreach (IMedia media2 in rootMedia)
                    {
                        if (media2.Name.InvariantEquals((string)selectNode.Attribute("folder")))
                        {
                            media1 = media2;
                        }
                    }

                    // add UDI support
                    var key = selectNode.Attribute("key") != null &&
                              string.IsNullOrWhiteSpace((string)selectNode.Attribute("key")) == false
                        ? Guid.Parse((string)selectNode.Attribute("key"))
                        : Guid.Empty;

                    int mediaItem = CreateMediaItem(mediaService, mediaTypeService, media1.Id, "image", key, (string)selectNode.Attribute("name"), (string)selectNode.Attribute("path"), false);
                }
            }
            catch (Exception ex)
            {
                Current.Logger.Error <InstallPackageAction>(ex, "Error during post processing of Starter Kit");
            }

            GridMediaFixup(contentService, mediaService, contentSection, Current.Logger);

            var contentHome = contentService.GetRootContent().FirstOrDefault(x => x.ContentType.Alias == "home");

            if (contentHome != null)
            {
                // publish everything (moved here due to Deploy dependency checking)
                contentService.SaveAndPublishBranch(contentHome, true);
            }
            else
            {
                Current.Logger.Warn <InstallPackageAction>("The installed Home page was not found");
            }

            return(true);
        }
Exemplo n.º 4
0
        public bool Execute(string packageName, XmlNode xmlData)
        {
            var contentService     = ApplicationContext.Current.Services.ContentService;
            var contentTypeService = ApplicationContext.Current.Services.ContentTypeService;
            var mediaService       = ApplicationContext.Current.Services.MediaService;
            var dataTypeService    = ApplicationContext.Current.Services.DataTypeService;
            var fileService        = ApplicationContext.Current.Services.FileService;

            var formsInstallHelper = new FormsInstallationHelper(ApplicationContext.Current.Services);

            formsInstallHelper.UpdateUmbracoDataForNonFormsInstallation();

            // update master view for all templates (packager doesn't support this)
            var master = fileService.GetTemplate("master");

            if (master != null)
            {
                foreach (var template in fileService.GetTemplates())
                {
                    // we'll update the master template for all templates that doesn't have one already
                    if (template.Alias != master.Alias && (
                            template.IsMasterTemplate == false && string.IsNullOrWhiteSpace(template.MasterTemplateAlias)))
                    {
                        template.SetMasterTemplate(master);
                        fileService.SaveTemplate(template);
                    }
                }
            }

            var contentHome = contentService.GetRootContent().FirstOrDefault(x => x.ContentType.Alias == "home");

            if (contentHome != null)
            {
                // update default design
                contentHome.SetValue("colorTheme", GetPreValueId(dataTypeService, "Home - Color Theme - Radio button list", "earth"));
                contentHome.SetValue("font", GetPreValueId(dataTypeService, "Home - Font - Radio button list", "serif"));
                contentService.Save(contentHome);
            }

            // update default currency pre value
            IContent productContent = contentService.GetById(new Guid("485343b1-d99c-4789-a676-e9b4c98a38d4"));

            if (productContent != null)
            {
                productContent.SetValue("defaultCurrency", GetPreValueId(dataTypeService, "Products - Default Currency - Dropdown list", "€"));
                contentService.Save(productContent);
            }

            // create media folders

            this.CreateMediaItem(mediaService, contentTypeService, -1, "folder", new Guid("b6f11172-373f-4473-af0f-0b0e5aefd21c"), "Design", string.Empty, true);
            this.CreateMediaItem(mediaService, contentTypeService, -1, "folder", new Guid("1fd2ecaf-f371-4c00-9306-867fa4585e7a"), "People", string.Empty, true);
            this.CreateMediaItem(mediaService, contentTypeService, -1, "folder", new Guid("6d5bf746-cb82-45c5-bd15-dd3798209b87"), "Products", string.Empty, true);

            // create media
            IMedia mediaRoot = mediaService.GetById(-1);
            IEnumerable <IMedia> rootMedia = mediaService.GetRootMedia().ToArray();

            try
            {
                if (xmlData.HasChildNodes)
                {
                    foreach (XmlNode selectNode in xmlData.SelectNodes("./mediaItem"))
                    {
                        IMedia media1 = mediaRoot;
                        foreach (IMedia media2 in rootMedia)
                        {
                            if (media2.Name.InvariantEquals(selectNode.Attributes["folder"].Value))
                            {
                                media1 = media2;
                            }
                        }

                        // add UDI support
                        var key = selectNode.Attributes["key"] != null &&
                                  string.IsNullOrWhiteSpace(selectNode.Attributes["key"].Value) == false
                            ? Guid.Parse(selectNode.Attributes["key"].Value)
                            : Guid.Empty;

                        int mediaItem = CreateMediaItem(mediaService, contentTypeService, media1.Id, "image", key, selectNode.Attributes["name"].Value, selectNode.Attributes["path"].Value, false);
                    }
                }
            }
            catch (Exception ex)
            {
                LogHelper.Error <InstallPackageAction>("Error during post processing of Starter Kit", ex);
            }

            // we need to update the references for the photo used in the grid in a blog post and about us page
            ReplaceMediaGridValues(new Guid("a4174f42-86fb-47ee-a376-c3366597c5fc"), new Guid("208abda1-63b5-4ba1-bc2a-3d40fe156bb6"), "BlogPost", contentService, mediaService);
            ReplaceMediaGridValues(new Guid("d62f0f1d-e4a9-4093-94ae-4efce18872ee"), new Guid("981014a4-f0b9-46db-aa91-87cf2027f6e0"), "AboutUs", contentService, mediaService);

            if (contentHome != null)
            {
                // publish everything (moved here due to Deploy dependency checking)
                contentService.PublishWithChildrenWithStatus(contentHome, 0, true);
            }

            return(true);
        }