Пример #1
0
        /// <summary>
        /// Updates the translations.
        /// </summary>
        /// <param name="node">The node.</param>
        /// <param name="model">The model.</param>
        private void UpdateTranslations(SitemapNode node, SaveNodeModel model)
        {
            if (model.Translations != null)
            {
                foreach (var nodeTranslation in node.Translations)
                {
                    if (model.Translations.All(m => m.Id != nodeTranslation.Id))
                    {
                        repository.Delete(nodeTranslation);
                    }
                }

                foreach (var translationModel in model.Translations)
                {
                    var translationToSave = node.Translations.FirstOrDefault(t => t.Id == translationModel.Id);
                    var isNewTranslation  = translationToSave == null;
                    if (isNewTranslation)
                    {
                        translationToSave = new Module.Pages.Models.SitemapNodeTranslation {
                            Id = translationModel.Id.GetValueOrDefault(), Node = node
                        };
                    }
                    else if (translationModel.Version > 0)
                    {
                        translationToSave.Version = translationModel.Version;
                    }

                    translationToSave.Language = this.repository.AsProxy <Language>(translationModel.LanguageId);
                    translationToSave.Macro    = translationModel.Macro;
                    translationToSave.Title    = translationModel.Title;
                    translationToSave.UsePageTitleAsNodeTitle = translationModel.UsePageTitleAsNodeTitle;
                    translationToSave.Url     = translationModel.Url;
                    translationToSave.UrlHash = !string.IsNullOrWhiteSpace(translationToSave.Url) ? translationToSave.Url.UrlHash() : null;

                    if (translationToSave.Node != node)
                    {
                        translationToSave.Node = node;
                    }

                    repository.Save(translationToSave);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// Saves the translations.
        /// </summary>
        /// <param name="model">The node model.</param>
        /// <param name="node">The node to save.</param>
        private void SaveTranslations(SaveSitemapNodeModel model, SitemapNode node)
        {
            if (model.Translations != null)
            {
                foreach (var nodeTranslation in node.Translations)
                {
                    if (model.Translations.All(m => m.Id != nodeTranslation.Id))
                    {
                        repository.Delete(nodeTranslation);
                    }
                }

                foreach (var translationModel in model.Translations)
                {
                    var translationToSave = node.Translations.FirstOrDefault(t => t.Id == translationModel.Id);
                    var isNewTranslation = translationToSave == null;
                    if (isNewTranslation)
                    {
                        translationToSave = new Module.Pages.Models.SitemapNodeTranslation { Id = translationModel.Id.GetValueOrDefault(), Node = node };
                    }
                    else if (translationModel.Version > 0)
                    {
                        translationToSave.Version = translationModel.Version;
                    }

                    translationToSave.Language = repository.AsProxy<Language>(translationModel.LanguageId);
                    translationToSave.Macro = translationModel.Macro;
                    translationToSave.Title = translationModel.Title;
                    translationToSave.UsePageTitleAsNodeTitle = translationModel.UsePageTitleAsNodeTitle;
                    translationToSave.Url = translationModel.Url;
                    translationToSave.UrlHash = !string.IsNullOrWhiteSpace(translationToSave.Url) ? translationToSave.Url.UrlHash() : null;

                    if (translationToSave.Node != node)
                    {
                        translationToSave.Node = node;
                    }

                    repository.Save(translationToSave);
                }
            }
        }