Esempio n. 1
0
        public override async Task <IDisplayResult> UpdateAsync(LocalizationPart model, IUpdateModel updater, UpdatePartEditorContext context)
        {
            var viewModel = new LocalizationPartViewModel();
            await updater.TryUpdateModelAsync(viewModel, Prefix, t => t.Culture);

            model.Culture = viewModel.Culture;
            // Need to do this here to support displaying the message to save before localizing when the item has not been saved yet.
            if (String.IsNullOrEmpty(model.LocalizationSet))
            {
                model.LocalizationSet = _iidGenerator.GenerateUniqueId();
            }
            return(Edit(model, context));
        }
Esempio n. 2
0
        public async ValueTask BuildViewModelAsync(LocalizationPartViewModel model, LocalizationPart localizationPart)
        {
            var alreadyTranslated = await _contentLocalizationManager.GetItemsForSetAsync(localizationPart.LocalizationSet);

            model.Culture          = localizationPart.Culture;
            model.LocalizationSet  = localizationPart.LocalizationSet;
            model.LocalizationPart = localizationPart;

            // Invariant culture name is empty so we only do a null check.
            if (model.Culture == null)
            {
                model.Culture = await _localizationService.GetDefaultCultureAsync();
            }

            var supportedCultures = await _localizationService.GetSupportedCulturesAsync();

            var currentCultures = supportedCultures.Where(c => c != model.Culture).Select(culture =>
            {
                return(new LocalizationLinksViewModel()
                {
                    IsDeleted = false,
                    Culture = CultureInfo.GetCultureInfo(culture),
                    ContentItemId = alreadyTranslated.FirstOrDefault(c => c.As <LocalizationPart>()?.Culture == culture)?.ContentItemId,
                });
            }).ToList();

            // Content items that have been translated but the culture was removed from the settings page
            var deletedCultureTranslations = alreadyTranslated.Where(c => c.As <LocalizationPart>()?.Culture != model.Culture).Select(ci =>
            {
                var culture = ci.As <LocalizationPart>()?.Culture;
                if (currentCultures.Any(c => c.ContentItemId == ci.ContentItemId) || culture == null)
                {
                    return(null);
                }
                return(new LocalizationLinksViewModel()
                {
                    IsDeleted = true,
                    Culture = CultureInfo.GetCultureInfo(culture),
                    ContentItemId = ci?.ContentItemId
                });
            }).OfType <LocalizationLinksViewModel>().ToList();

            model.ContentItemCultures = currentCultures.Concat(deletedCultureTranslations).ToList();
        }
Esempio n. 3
0
        public async Task BuildViewModelAsync(LocalizationPartViewModel model, LocalizationPart localizationPart)
        {
            var settings = await _siteService.GetSiteSettingsAsync();

            var alreadyTranslated = await _contentLocalizationManager.GetItemsForSet(localizationPart.LocalizationSet);

            model.Culture          = localizationPart.Culture;
            model.LocalizationSet  = localizationPart.LocalizationSet;
            model.LocalizationPart = localizationPart;

            if (String.IsNullOrEmpty(model.Culture))
            {
                model.Culture = await GetDefaultCultureNameAsync();
            }

            var currentCultures = settings.GetConfiguredCultures().Where(c => c != model.Culture).Select(culture =>
            {
                return(new LocalizationLinksViewModel()
                {
                    IsDeleted = false,
                    Culture = CultureInfo.GetCultureInfo(culture),
                    ContentItemId = alreadyTranslated.FirstOrDefault(c => c.As <LocalizationPart>()?.Culture == culture)?.ContentItemId,
                });
            }).ToList();

            // Content items that have been translated but the culture was removed from the settings page
            var deletedCultureTranslations = alreadyTranslated.Where(c => c.As <LocalizationPart>()?.Culture != model.Culture).Select(ci =>
            {
                var culture = ci.As <LocalizationPart>()?.Culture;
                if (currentCultures.Any(c => c.ContentItemId == ci.ContentItemId) || culture == null)
                {
                    return(null);
                }
                return(new LocalizationLinksViewModel()
                {
                    IsDeleted = true,
                    Culture = CultureInfo.GetCultureInfo(culture),
                    ContentItemId = ci?.ContentItemId
                });
            }).OfType <LocalizationLinksViewModel>().ToList();

            model.ContentItemCultures = currentCultures.Concat(deletedCultureTranslations).ToList();
        }