//official feed public virtual IActionResult OfficialFeed() { if (!_permissionService.Authorize(StandardPermissionProvider.ManagePlugins)) { return(AccessDeniedView()); } var model = new OfficialFeedListModel(); //versions model.AvailableVersions.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); foreach (var version in _officialFeedManager.GetVersions()) { model.AvailableVersions.Add(new SelectListItem { Text = version.Name, Value = version.Id.ToString() }); } //pre-select current version //current version name and named on official site do not match. that's why we use "Contains" var currentVersionItem = model.AvailableVersions.FirstOrDefault(x => x.Text.Contains(NopVersion.CurrentVersion)); if (currentVersionItem != null) { model.SearchVersionId = int.Parse(currentVersionItem.Value); currentVersionItem.Selected = true; } //categories var categories = _officialFeedManager.GetCategories(); model.AvailableCategories.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); foreach (var category in categories) { model.AvailableCategories.Add(new SelectListItem { Text = GetCategoryBreadCrumbName(category, categories), Value = category.Id.ToString() }); } //prices model.AvailablePrices.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); model.AvailablePrices.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Configuration.Plugins.OfficialFeed.Price.Free"), Value = "10" }); model.AvailablePrices.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Configuration.Plugins.OfficialFeed.Price.Commercial"), Value = "20" }); return(View(model)); }
/// <summary> /// Prepare search model of plugins of the official feed /// </summary> /// <param name="searchModel">Search model of plugins of the official feed</param> /// <returns>Search model of plugins of the official feed</returns> public virtual OfficialFeedPluginSearchModel PrepareOfficialFeedPluginSearchModel(OfficialFeedPluginSearchModel searchModel) { if (searchModel == null) { throw new ArgumentNullException(nameof(searchModel)); } //prepare available versions searchModel.AvailableVersions.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); foreach (var version in _officialFeedManager.GetVersions()) { searchModel.AvailableVersions.Add(new SelectListItem { Text = version.Name, Value = version.Id.ToString() }); } //pre-select current version //current version name and named on official site do not match. that's why we use "Contains" var currentVersionItem = searchModel.AvailableVersions.FirstOrDefault(x => x.Text.Contains(NopVersion.CurrentVersion)); if (currentVersionItem != null) { searchModel.SearchVersionId = int.Parse(currentVersionItem.Value); currentVersionItem.Selected = true; } //prepare available plugin categories var pluginCategories = _officialFeedManager.GetCategories(); searchModel.AvailableCategories.Add(new SelectListItem { Text = _localizationService.GetResource("Admin.Common.All"), Value = "0" }); foreach (var pluginCategory in pluginCategories) { var pluginCategoryNames = new List <string>(); var tmpCategory = pluginCategory; while (tmpCategory != null) { pluginCategoryNames.Add(tmpCategory.Name); tmpCategory = pluginCategories.FirstOrDefault(category => category.Id == tmpCategory.ParentCategoryId); } pluginCategoryNames.Reverse(); searchModel.AvailableCategories.Add(new SelectListItem { Value = pluginCategory.Id.ToString(), Text = string.Join(" >> ", pluginCategoryNames) }); } //prepare available prices searchModel.AvailablePrices.Add(new SelectListItem { Value = "0", Text = _localizationService.GetResource("Admin.Common.All") }); searchModel.AvailablePrices.Add(new SelectListItem { Value = "10", Text = _localizationService.GetResource("Admin.Configuration.Plugins.OfficialFeed.Price.Free") }); searchModel.AvailablePrices.Add(new SelectListItem { Value = "20", Text = _localizationService.GetResource("Admin.Configuration.Plugins.OfficialFeed.Price.Commercial") }); //prepare page parameters searchModel.PageSize = 15; searchModel.AvailablePageSizes = "15"; return(searchModel); }