public IItemsChangesHelper Update() { var database = _databaseSelector.GetSelectedDataBase(); if (database == null) { return(this); } var items = database.SelectItems("fast:/sitecore//*").RemoveWithCertainTemplates(Constants.Templates.IgnoredItemsTemplates).ToList(); var addedItems = items.Where(x => x.AddedSince(Commits, CountdownCommit)); var addedIDs = addedItems.Select(x => x.ID).ToList(); var changedItems = items.Where(x => x.ChangedSince(Commits, CountdownCommit)); var changedIDs = changedItems.Select(x => x.ID).ToList(); var unchangedIDs = items.Select(x => x.ID).ToList(); changedIDs.RemoveAll(x => addedIDs.Contains(x)); unchangedIDs.RemoveAll(x => addedIDs.Contains(x) || changedIDs.Contains(x)); _addedItems = addedIDs; _changedItems = changedIDs; _unchangedItems = unchangedIDs; _changedSinceLastUpdate = false; return(this); }
private Item getOrCreateCurrentCommitItem() { var database = _databaseSelector.GetSelectedDataBase(); var systemItem = database.GetItem(Constants.Items.CommitterModuleFolder); var selectedCommit = systemItem.GetChildren(Sitecore.Collections.ChildListOptions.None).Where(x => x.TemplateID == new TemplateID(new ID(Constants.Templates.SelectedCommit)))?.FirstOrDefault(); if (selectedCommit != null) { return(selectedCommit); } else { selectedCommit = systemItem.Add(Constants.SelectedCommitItemDefaultName, new TemplateID(new ID(Constants.Templates.SelectedCommit))); } return(selectedCommit); }
public override void Execute(CommandContext context) { var db = _databaseSelector.GetSelectedDataBase()?.Name; if (string.IsNullOrEmpty(db)) { Context.ClientPage.ClientResponse.Alert(Constants.Messages.NoDatabaseSelected); } else { Context.ClientPage.ClientResponse.Alert(string.Format(Constants.Messages.CurrentDatabaseMessageTemplate, db)); } }
public Item GetOrCreateCommitsFolder() { var database = _databaseSelector?.GetSelectedDataBase(); if (database == null) { return(null); } var systemItem = database.GetItem(Constants.Items.CommitterModuleFolder); var commitsFolder = systemItem.GetChildren(Sitecore.Collections.ChildListOptions.None).Where(x => x.Name == Constants.CommitsFolderName && x.TemplateID == new TemplateID(new ID(Constants.Templates.Node)))?.FirstOrDefault(); if (commitsFolder != null) { return(commitsFolder); } else { commitsFolder = systemItem.Add(Constants.CommitsFolderName, new TemplateID(new ID(Constants.Templates.Node))); } return(commitsFolder); }
public PackageGenerationResult Generate(Commit commit, bool getAdded = true, bool getUpdated = true) { var result = new PackageGenerationResult(); StringBuilder commitNameBuilder = new StringBuilder(); commitNameBuilder.Append(commit.Name); if (getAdded) { commitNameBuilder.Append("-added"); } if (getUpdated) { commitNameBuilder.Append("-updated"); } commitNameBuilder.Append(".zip"); var commitName = commitNameBuilder.ToString(); var path = PathToFile; result.Name = commitName; result.Path = path; result.Successful = false; var db = _databaseSelector.GetSelectedDataBase(); var document = new PackageProject(); document.Sources.Clear(); var commitUserName = commit.Invoker?.Name; document.Metadata.PackageName = !string.IsNullOrWhiteSpace(commit.Name) ? commit.Name : Constants.Package.DefaultCommitName; document.Metadata.Author = !string.IsNullOrWhiteSpace(commitUserName) ? commitUserName : Constants.Package.DefaultAuthorName; document.Metadata.Publisher = !string.IsNullOrWhiteSpace(User.Current.Name) ? User.Current.Name : Constants.Package.DefaultAuthorName; document.Metadata.Version = Constants.Package.DefaultVersion; var itemsIds = new List <ID>(); if (getAdded) { itemsIds = itemsIds.Union(commit.AddedItems).ToList(); } if (getUpdated) { itemsIds = itemsIds.Union(commit.ChangedItems).ToList(); } var items = new List <Item>(); itemsIds.ForEach(x => { var item = db.GetItem(x); if (item != null) { items.Add(item); } }); ExplicitItemSource source = new ExplicitItemSource(); source.Name = Constants.Package.SourceName; source.SkipVersions = true; foreach (Item item in items) { if (item != null) { source.Entries.Add(new ItemReference(item.Uri, false).ToString()); } } document.Sources.Add(source); document.SaveProject = true; using (new Sitecore.SecurityModel.SecurityDisabler()) { using (var writer = new PackageWriter(MainUtil.MapPath($"{path}{commitName}"))) { Context.SetActiveSite(Constants.Package.ShellSite); writer.Initialize(Installer.CreateInstallationContext()); PackageGenerator.GeneratePackage(document, writer); Context.SetActiveSite(Constants.Package.MainSite); result.Successful = true; } } return(result); }