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);
        }
Ejemplo n.º 2
0
        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));
            }
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }