Exemple #1
0
        private LocalizationResourceApiModel PrepareViewModel()
        {
            var context = UiConfigurationContext.Current;
            var availableLanguagesQuery = new AvailableLanguages.Query {
                IncludeInvariant = context.ShowInvariantCulture
            };
            var languages = availableLanguagesQuery.Execute();

            var getResourcesQuery = new GetAllResources.Query(true);
            var resources         = getResourcesQuery.Execute().OrderBy(r => r.ResourceKey).ToList();

            var user    = RequestContext.Principal;
            var isAdmin = false;

            if (user != null)
            {
                isAdmin = user.Identity.IsAuthenticated && context.AuthorizedAdminRoles.Any(r => user.IsInRole(r));
            }

            return(new LocalizationResourceApiModel(resources, languages)
            {
                AdminMode = isAdmin,
                HideDeleteButton = context.HideDeleteButton,
                IsRemoveTranslationButtonDisabled = UiConfigurationContext.Current.DisableRemoveTranslationButton
            });
        }
Exemple #2
0
        private LocalizationResourceViewModel PrepareViewModel(bool showMenu)
        {
            var availableLanguagesQuery = new AvailableLanguages.Query();
            var languages    = availableLanguagesQuery.Execute();
            var allResources = GetAllResources();

            var user    = HttpContext.User;
            var isAdmin = user.Identity.IsAuthenticated && UiConfigurationContext.Current.AuthorizedAdminRoles.Any(r => user.IsInRole(r));

            var isTreeView = Request.Cookies[_viewCcookieName]?.Value == "tree";

            var result = new LocalizationResourceViewModel(allResources, languages, GetSelectedLanguages())
            {
                ShowMenu   = showMenu,
                AdminMode  = isAdmin,
                IsTreeView = isTreeView
            };

            // build tree
            var builder = new ResourceTreeBuilder();
            var sorter  = new ResourceTreeSorter();

            result.Tree = sorter.Sort(builder.BuildTree(allResources));

            return(result);
        }
Exemple #3
0
        private LocalizationResourceApiModel PrepareViewModel()
        {
            var availableLanguagesQuery = new AvailableLanguages.Query {
                IncludeInvariant = true
            };
            var languages = availableLanguagesQuery.Execute();

            var getResourcesQuery = new GetAllResources.Query(true);
            var resources         = getResourcesQuery.Execute().OrderBy(r => r.ResourceKey).ToList();

            var user    = Request.HttpContext.User;
            var isAdmin = false;

            if (user != null)
            {
                isAdmin = user.Identity.IsAuthenticated && _config.AuthorizedAdminRoles.Any(r => user.IsInRole(r));
            }

            var result = new LocalizationResourceApiModel(resources, languages, _config.MaxResourceKeyPopupTitleLength, _config.MaxResourceKeyDisplayLength)
            {
                Options =
                {
                    AdminMode            = isAdmin,
                    ShowInvariantCulture = _config.ShowInvariantCulture,
                    ShowHiddenResources  = _config.ShowHiddenResources
                }
            };

            return(result);
        }
Exemple #4
0
        public IEnumerable <CultureInfo> Execute(AvailableLanguages.Query query)
        {
            if (query.IncludeInvariant && !_cultureInfos.Contains(CultureInfo.InvariantCulture))
            {
                _cultureInfos.Insert(0, CultureInfo.InvariantCulture);
            }

            return(_cultureInfos);
        }
            public IEnumerable <CultureInfo> Execute(AvailableLanguages.Query query)
            {
                var currentLanguages = _languageBranchRepository.ListEnabled()
                                       .Where(l => l.QueryEditAccessRights(PrincipalInfo.CurrentPrincipal))
                                       .Select(l => new CultureInfo(l.LanguageID));

                if (query.IncludeInvariant)
                {
                    currentLanguages = new[] { CultureInfo.InvariantCulture }
                }
Exemple #6
0
        public ViewResult ImportResources(bool?previewImport, HttpPostedFileBase importFile, bool?showMenu)
        {
            var model = new ImportResourcesViewModel {
                ShowMenu = showMenu ?? false
            };

            if (importFile == null || importFile.ContentLength == 0)
            {
                return(View("ImportResources", model));
            }

            var fileInfo        = new FileInfo(importFile.FileName);
            var potentialParser = ConfigurationContext.Current.Import.Providers.FindByExtension(fileInfo.Extension);

            if (potentialParser == null)
            {
                ModelState.AddModelError("file", $"Unknown file extension - `{fileInfo.Extension}`");
                return(View("ImportResources", model));
            }

            var workflow     = new ResourceImportWorkflow();
            var streamReader = new StreamReader(importFile.InputStream);
            var fileContent  = streamReader.ReadToEnd();
            var allLanguages = new AvailableLanguages.Query().Execute();

            try
            {
                var parseResult        = potentialParser.Parse(fileContent);
                var differentLanguages = parseResult.DetectedLanguages.Except(allLanguages);
                if (differentLanguages.Any())
                {
                    ModelState.AddModelError("file", $"Importing language `{string.Join(", ", differentLanguages.Select(c => c.Name))}` is not available in current EPiServer installation");
                    return(View("ImportResources", model));
                }

                if (previewImport.HasValue && previewImport.Value)
                {
                    var changes          = workflow.DetectChanges(parseResult.Resources, new GetAllResources.Query(true).Execute());
                    var changedLanguages = changes.SelectMany(c => c.ChangedLanguages).Distinct().Select(l => new CultureInfo(l));

                    var previewModel = new PreviewImportResourcesViewModel(changes, showMenu ?? false, changedLanguages);

                    return(View("ImportPreview", previewModel));
                }

                var result = workflow.Import(parseResult.Resources, previewImport ?? true);
                ViewData["LocalizationProvider_ImportResult"] = result;
            }
            catch (Exception e)
            {
                ModelState.AddModelError("importFailed", $"Import failed! Reason: {e.Message}");
            }

            return(View("ImportResources", model));
        }
Exemple #7
0
        public ViewResult ImportResources(bool?previewImport, HttpPostedFileBase importFile, bool?showMenu)
        {
            var model = new ImportResourcesViewModel {
                ShowMenu = showMenu ?? false
            };

            if (importFile == null || importFile.ContentLength == 0)
            {
                return(View("ImportResources", model));
            }

            var fileInfo = new FileInfo(importFile.FileName);

            if (fileInfo.Extension.ToLower() != ".json")
            {
                ModelState.AddModelError("file", "Uploaded file has different extension. Json file expected");
                return(View("ImportResources", model));
            }

            var importer     = new ResourceImporter();
            var serializer   = new JsonDataSerializer();
            var streamReader = new StreamReader(importFile.InputStream);
            var fileContent  = streamReader.ReadToEnd();

            try
            {
                var newResources = serializer.Deserialize <IEnumerable <LocalizationResource> >(fileContent);

                if (previewImport.HasValue && previewImport.Value)
                {
                    var changes = importer.DetectChanges(newResources, new GetAllResources.Query().Execute());

                    var availableLanguagesQuery = new AvailableLanguages.Query();
                    var languages = availableLanguagesQuery.Execute();

                    var previewModel = new PreviewImportResourcesViewModel(changes, showMenu ?? false, languages);

                    return(View("ImportPreview", previewModel));
                }

                var result = importer.Import(newResources, previewImport ?? true);

                ViewData["LocalizationProvider_ImportResult"] = result;
            }
            catch (Exception e)
            {
                ModelState.AddModelError("importFailed", $"Import failed! Reason: {e.Message}");
            }

            return(View("ImportResources", model));
        }
Exemple #8
0
        private LocalizationResourceViewModel PrepareViewModel(bool showMenu)
        {
            var availableLanguagesQuery = new AvailableLanguages.Query();
            var languages    = availableLanguagesQuery.Execute();
            var allResources = GetAllResources();
            var user         = HttpContext.User;
            var isAdmin      = user.Identity.IsAuthenticated && UiConfigurationContext.Current.AuthorizedAdminRoles.Any(r => user.IsInRole(r));

            return(new LocalizationResourceViewModel(allResources, languages, GetSelectedLanguages())
            {
                ShowMenu = showMenu,
                AdminMode = isAdmin
            });
        }
Exemple #9
0
        private (List <LocalizationResource>, IEnumerable <CultureInfo>) GetResources()
        {
            var availableLanguagesQuery = new AvailableLanguages.Query {
                IncludeInvariant = false
            };
            var languages = _queryExecutor.Execute(availableLanguagesQuery);

            var getResourcesQuery = new GetAllResources.Query(true);
            var resources         = _queryExecutor
                                    .Execute(getResourcesQuery)
                                    .OrderBy(_ => _.ResourceKey)
                                    .ToList();

            return(resources, languages);
        }
Exemple #10
0
        /// <summary>
        /// Place where query handling happens
        /// </summary>
        /// <param name="query">This is the query instance</param>
        /// <returns>
        /// You have to return something from the query execution. Of course you can return <c>null</c> as well if you
        /// will.
        /// </returns>
        public IEnumerable <CultureInfo> Execute(AvailableLanguages.Query query)
        {
            var cacheKey = CacheKeyHelper.BuildKey($"AvailableLanguages_{query.IncludeInvariant}");

            if (_configurationContext.CacheManager.Get(cacheKey) is IEnumerable <CultureInfo> cachedLanguages)
            {
                return(cachedLanguages);
            }

            var languages = GetAvailableLanguages(query.IncludeInvariant);

            _configurationContext.CacheManager.Insert(cacheKey, languages, false);

            return(languages);
        }
Exemple #11
0
        public IEnumerable <CultureInfo> Execute(AvailableLanguages.Query query)
        {
            var cacheKey = CacheKeyHelper.BuildKey($"AvailableLanguages_{query.IncludeInvariant}");

            if (HttpRuntime.Cache?.Get(cacheKey) is IEnumerable <CultureInfo> cachedLanguages)
            {
                return(cachedLanguages);
            }

            var languages = GetAvailableLanguages(query.IncludeInvariant);

            HttpRuntime.Cache?.Insert(cacheKey, languages);

            return(languages);
        }
        private LocalizationResourceApiModel PrepareViewModel()
        {
            var availableLanguagesQuery = new AvailableLanguages.Query();
            var languages = availableLanguagesQuery.Execute();

            var getResourcesQuery = new GetAllResources.Query();
            var resources = getResourcesQuery.Execute().OrderBy(r => r.ResourceKey).ToList();

            var user = RequestContext.Principal;
            var isAdmin = false;

            if (user != null)
            {
                isAdmin = user.Identity.IsAuthenticated && UiConfigurationContext.Current.AuthorizedAdminRoles.Any(r => user.IsInRole(r));
            }

            return new LocalizationResourceApiModel(resources, languages) { AdminMode = isAdmin };
        }
        private (List <LocalizationResource>, IEnumerable <CultureInfo>, bool) GetResources()
        {
            var availableLanguagesQuery = new AvailableLanguages.Query {
                IncludeInvariant = true
            };
            var languages = availableLanguagesQuery.Execute();

            var getResourcesQuery = new GetAllResources.Query(true);
            var resources         = getResourcesQuery.Execute().OrderBy(_ => _.ResourceKey).ToList();

            var user    = Request.HttpContext.User;
            var isAdmin = false;

            if (user != null)
            {
                isAdmin = user.Identity.IsAuthenticated && _config.AuthorizedAdminRoles.Any(_ => user.IsInRole(_));
            }

            return(resources, languages, isAdmin);
        }
        private LocalizationResourceApiModel PrepareViewModel()
        {
            var availableLanguagesQuery = new AvailableLanguages.Query();
            var languages = availableLanguagesQuery.Execute();

            var getResourcesQuery = new GetAllResources.Query();
            var resources         = getResourcesQuery.Execute().OrderBy(r => r.ResourceKey).ToList();

            var user    = RequestContext.Principal;
            var isAdmin = false;

            if (user != null)
            {
                isAdmin = user.Identity.IsAuthenticated && UiConfigurationContext.Current.AuthorizedAdminRoles.Any(r => user.IsInRole(r));
            }

            return(new LocalizationResourceApiModel(resources, languages)
            {
                AdminMode = isAdmin
            });
        }
        private LocalizationResourceViewModel PrepareViewModel(bool showMenu)
        {
            var availableLanguagesQuery = new AvailableLanguages.Query {
                IncludeInvariant = _showInvariantCulture
            };
            var languages    = availableLanguagesQuery.Execute();
            var allResources = GetAllResources();

            var user    = HttpContext.User;
            var isAdmin = user.Identity.IsAuthenticated &&
                          UiConfigurationContext.Current.AuthorizedAdminRoles.Any(r => user.IsInRole(r));

            // cookies override default view from config
            var isTreeView = UiConfigurationContext.Current.DefaultView == ResourceListView.Tree;

            if (Request.Cookies[_viewCookieName] != null)
            {
                isTreeView = UiConfigurationContext.Current.IsTableViewDisabled ||
                             Request.Cookies[_viewCookieName]?.Value == "tree";
            }

            var result = new LocalizationResourceViewModel(allResources, languages, GetSelectedLanguages(), _maxLength)
            {
                ShowMenu           = showMenu,
                AdminMode          = isAdmin,
                IsTreeView         = isTreeView,
                IsTreeViewEnabled  = !UiConfigurationContext.Current.IsTreeViewDisabled,
                IsTableViewEnabled = !UiConfigurationContext.Current.IsTableViewDisabled,
                IsRemoveTranslationButtonDisabled = UiConfigurationContext.Current.DisableRemoveTranslationButton,
                IsDeleteButtonVisible             = !UiConfigurationContext.Current.HideDeleteButton
            };

            // build tree
            var builder = new ResourceTreeBuilder();
            var sorter  = new ResourceTreeSorter();

            result.Tree = sorter.Sort(builder.BuildTree(allResources, ConfigurationContext.Current.EnableLegacyMode()));

            return(result);
        }
        public FileResult ExportResources(string format = "json")
        {
            var exporter  = ConfigurationContext.Current.Export.Providers.FindById(format);
            var resources = new GetAllResources.Query(true).Execute();
            var languages = new AvailableLanguages.Query().Execute();

            foreach (var resource in resources)
            {
                var exportableTranslations = new List <LocalizationResourceTranslation>();
                var invariantTranslation   = resource.Translations.FindByLanguage(CultureInfo.InvariantCulture);
                if (invariantTranslation != null)
                {
                    exportableTranslations.Add(invariantTranslation);
                }

                foreach (var language in languages)
                {
                    var t = resource.Translations.FindByLanguage(language);
                    if (t != null)
                    {
                        exportableTranslations.Add(t);
                    }
                }

                resource.Translations = exportableTranslations;
            }

            var result = exporter.Export(resources.ToList(), Request.Params);

            var stream = new MemoryStream();
            var writer = new StreamWriter(stream, Encoding.UTF8);

            writer.Write(result.SerializedData);
            writer.Flush();
            stream.Position = 0;

            return(File(stream, result.FileMimeType, result.FileName));
        }
 public IEnumerable <CultureInfo> Execute(AvailableLanguages.Query query)
 {
     return(_languageBranchRepository.ListEnabled().Where(l => l.QueryEditAccessRights(PrincipalInfo.CurrentPrincipal))
            .Select(l => new CultureInfo(l.LanguageID)));
 }
 public IEnumerable <CultureInfo> Execute(AvailableLanguages.Query query)
 {
     return(_supportedLanguages);
 }
Exemple #19
0
 public IEnumerable <CultureInfo> Execute(AvailableLanguages.Query query) => _noLanguages;