コード例 #1
0
        /// <summary>
        /// Method to generate the items as per input in the CMS.
        /// </summary>
        /// <param name="ItemCreatorModel"> model containing parent item Id/Path, Template Id/Path, Languages, no. of items to create etc. </param>
        public string ItemGenerator(ItemCreatorModel model)
        {
            StringBuilder log = new StringBuilder();

            try
            {
                log.Append("Item Creation Process Started\n");

                for (int i = 0; i < model.NumberOfItems; i++)
                {
                    Sitecore.Data.Database masterDB = Sitecore.Data.Database.GetDatabase("master");

                    #region Item Creation
                    bool IsParentId = ID.IsID(model.ParentNode);
                    Item parentItem;
                    if (!IsParentId)
                    {
                        parentItem = masterDB.GetItem(model.ParentNode);
                    }
                    else
                    {
                        parentItem = masterDB.GetItem(ID.Parse(model.ParentNode));
                    }
                    TemplateItem template = masterDB.GetTemplate(model.TemplateId);
                    #endregion End Item Creation

                    Item newItem = parentItem.Add("Item-" + i, template);

                    #region Adding Language Versions

                    var languageCollection = model.Languages.Split(',');

                    foreach (string languageCode in languageCollection)
                    {
                        using (new LanguageSwitcher(languageCode))
                        {
                            Item parent = masterDB.GetItem(newItem.ParentID, Language.Parse(languageCode));

                            Item NewItem = parent.GetChildren().Where(x => x.ID == newItem.ID).FirstOrDefault();

                            NewItem.Editing.BeginEdit();

                            NewItem.Versions.AddVersion();

                            NewItem.Editing.EndEdit();
                        }
                    }

                    log.Append(newItem.Name + " Created successfully with ID: " + newItem.ID + "\n");
                    #endregion
                }
            }
            catch (Exception ex)
            {
                log.Append(ex.Message + "\n");
                log.Append(ex.StackTrace + "\n");
            }

            return(log.ToString());
        }
コード例 #2
0
        public ID CreateTeamSitecoreItem(Team Team)
        {
            try
            {
                Sitecore.Data.Database masterDB = Sitecore.Configuration.Factory.GetDatabase(DBNames.Master);

                Item _rootItem  = Sitecore.Context.Database.GetItem(Sitecore.Context.Site.StartPath);
                Item parentItem = _rootItem.Axes.GetDescendants().ToList().Where(p => p.IsDerived(Templates.TeamsListing.ID)).FirstOrDefault();

                string name         = ItemUtil.ProposeValidItemName(Team.TeamName);
                var    teamTemplate = masterDB.GetTemplate(Templates.Team.ID);

                using (new Sitecore.SecurityModel.SecurityDisabler())
                {
                    Item newItem = parentItem.Add(name, teamTemplate);
                    try
                    {
                        if (newItem != null)
                        {
                            newItem.Editing.BeginEdit();
                            newItem[Templates.Team.Fields.Name]         = Team.TeamName;
                            newItem[Templates.Team.Fields.EmailAddress] = Team.EmailAddress;
                            newItem[Templates.Team.Fields.LoginName]    = Team.LoginName;
                            newItem[Templates.Team.Fields.Password]     = Team.Password;
                            newItem.Editing.EndEdit();
                        }
                    }
                    catch
                    {
                        newItem.Editing.CancelEdit();
                    }

                    RegisterTeam(Team.LoginName, Team.Password);
                    return(newItem.ID);
                }
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error(ex.Message, ex, this);
            }

            return(null);
        }
コード例 #3
0
        private Item createItem(Item destinationParentItem, string templateId, string itemName)
        {
            using (new SecurityDisabler())
            {
                if (_db != null)
                {
                    TemplateItem template = _db.GetTemplate(new ID(templateId));
                    if (template != null && _db.GetItem(destinationParentItem?.Paths.Path + "/" + itemName) == null)
                    {
                        return(destinationParentItem?.Add(itemName, template));
                    }
                    else
                    {
                        return(_db.GetItem(destinationParentItem.Paths.Path + "/" + itemName));
                    }
                }
            }

            return(null);
        }
コード例 #4
0
        public void CreateTeamMemberSitecoreItem(ID TeamId, TeamMember TeamMember)
        {
            try
            {
                Sitecore.Data.Database masterDB = Sitecore.Configuration.Factory.GetDatabase(DBNames.Master);

                Item parentItem = masterDB.GetItem(TeamId);

                string name         = ItemUtil.ProposeValidItemName(TeamMember.FullName);
                var    teamTemplate = masterDB.GetTemplate(Templates.TeamMember.ID);

                using (new Sitecore.SecurityModel.SecurityDisabler())
                {
                    Item newItem = parentItem.Add(name, teamTemplate);
                    try
                    {
                        if (newItem != null)
                        {
                            newItem.Editing.BeginEdit();
                            newItem[Templates.TeamMember.Fields.FullName]     = TeamMember.FullName;
                            newItem[Templates.TeamMember.Fields.EmailAddress] = TeamMember.EmailAddress;
                            newItem[Templates.TeamMember.Fields.LinkedInUrl]  = TeamMember.LinkedInUrl;
                            newItem[Templates.TeamMember.Fields.TwitterUrl]   = TeamMember.TwitterUrl;
                            newItem[Templates.TeamMember.Fields.Country]      = TeamMember.Country;
                            newItem.Editing.EndEdit();
                        }
                    }
                    catch
                    {
                        newItem.Editing.CancelEdit();
                    }
                }
            }
            catch (Exception ex)
            {
                Sitecore.Diagnostics.Log.Error(ex.Message, ex, this);
            }
        }
コード例 #5
0
        public bool CreateModule(ModuleItem moduleItem)
        {
            Sitecore.Diagnostics.Assert.ArgumentNotNull(moduleItem, "Module Item");

            using (new Sitecore.SecurityModel.SecurityDisabler())
            {
                Sitecore.Data.Database master = Database.GetDatabase(MasterDatabase);
                Sitecore.Diagnostics.Assert.ArgumentNotNull(master, "Master Database");

                TemplateItem template = master.GetTemplate(IDs.TemplateId);
                Sitecore.Diagnostics.Assert.ArgumentNotNull(template, "Module Templete");

                Item parentItem = master.GetItem(IDs.ModuleFolderId);
                Sitecore.Diagnostics.Assert.ArgumentNotNull(parentItem, "Module Parent Folder");

                string itemName = Sitecore.Data.Items.ItemUtil.ProposeValidItemName($"{moduleItem.Title}-{moduleItem.Author}", "Module Item");

                using (new Sitecore.SecurityModel.SecurityDisabler())
                {
                    try
                    {
                        Item newItem = parentItem.Add(itemName, template);

                        if (newItem != null)
                        {
                            newItem.Editing.BeginEdit();

                            newItem.Fields[IDs.Fields.GitHubURL].Value                    = moduleItem.GitHubURL;
                            newItem.Fields[IDs.Fields.DocumentationURL].Value             = moduleItem.DocumentationURL;
                            newItem.Fields[IDs.Fields.Title].Value                        = moduleItem.Title;
                            newItem.Fields[IDs.Fields.Summary].Value                      = moduleItem.Summary;
                            newItem.Fields[IDs.Fields.Author].Value                       = moduleItem.Author;
                            newItem.Fields[IDs.Fields.TestedAgainstSitecoreVersion].Value = moduleItem.TestedAgainstSitecoreVersion;
                            newItem.Fields[IDs.Fields.ProductLine].Value                  = moduleItem.ProductLine;

                            Sitecore.Data.Fields.DateField releaseDateField = newItem.Fields[IDs.Fields.ReleaseDate];
                            releaseDateField.Value = DateUtil.ToIsoDate(moduleItem.ReleaseDate);

                            Sitecore.Data.Fields.DateField lastCommitDateField = newItem.Fields[IDs.Fields.LastCommitDate];
                            lastCommitDateField.Value = DateUtil.ToIsoDate(moduleItem.LastCommitDate);

                            newItem.Fields[IDs.Fields.Stars].Value         = moduleItem.Stars.ToString();
                            newItem.Fields[IDs.Fields.DownloadCount].Value = moduleItem.DownloadCount.ToString();


                            newItem.Editing.EndEdit();

                            TagItem(newItem);
                            PublishItem(newItem);
                            return(true);
                        }
                    }
                    catch (System.Exception ex)
                    {
                        Sitecore.Diagnostics.Log.Error($"Could not create new item {itemName}", ex, this);
                        // newItem.Editing.CancelEdit();
                    }
                }

                return(false);
            }
        }