/// <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); } } }
/// <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); } } }