Пример #1
0
        private ActionResult PackageUpdate(string view, string extensionType, int?reportId, PagerParameters pagerParameters)
        {
            if (_shellSettings.Name != ShellSettings.DefaultName || !Services.Authorizer.Authorize(StandardPermissions.SiteOwner, T("Not authorized to add sources")))
            {
                return(new HttpUnauthorizedResult());
            }

            Pager pager = new Pager(Services.WorkContext.CurrentSite, pagerParameters);

            if (!_packagingSourceManager.GetSources().Any())
            {
                Services.Notifier.Error(T("No Gallery feed configured"));
                return(View(view, new PackagingListViewModel {
                    Entries = new List <UpdatePackageEntry>()
                }));
            }

            // Get status from background task state or directly
            _backgroundPackageUpdateStatus.Value =
                _backgroundPackageUpdateStatus.Value ??
                _packageUpdateService.GetPackagesStatus(_packagingSourceManager.GetSources());

            foreach (var error in _backgroundPackageUpdateStatus.Value.Errors)
            {
                for (var scan = error; scan != null; scan = scan.InnerException)
                {
                    Services.Notifier.Warning(T("Package retrieve error: {0}", scan.Message));
                }
            }

            IEnumerable <UpdatePackageEntry> updatedPackages = _backgroundPackageUpdateStatus.Value.Entries
                                                               .Where(updatePackageEntry =>
                                                                      updatePackageEntry.ExtensionsDescriptor.ExtensionType.Equals(extensionType) &&
                                                                      updatePackageEntry.NewVersionToInstall != null)
                                                               .ToList();

            int totalItemCount = updatedPackages.Count();

            if (pager.PageSize != 0)
            {
                updatedPackages = updatedPackages.Skip((pager.Page - 1) * pager.PageSize).Take(pager.PageSize);
            }

            return(View(view, new PackagingListViewModel {
                LastUpdateCheckUtc = _backgroundPackageUpdateStatus.Value.DateTimeUtc,
                Entries = updatedPackages,
                Pager = Shape.Pager(pager).TotalItemCount(totalItemCount)
            }));
        }
        public IEnumerable <string> Displaying(ExtensionDescriptor extensionDescriptor, RequestContext requestContext)
        {
            // Get status from background task state or directly
            _backgroundPackageUpdateStatus.Value =
                _backgroundPackageUpdateStatus.Value ??
                _packageUpdateService.GetPackagesStatus(_packagingSourceManager.GetSources());

            UpdatePackageEntry updatePackageEntry = _backgroundPackageUpdateStatus.Value.Entries
                                                    .Where(package => package.ExtensionsDescriptor.Id.Equals(extensionDescriptor.Id)).FirstOrDefault();

            if (updatePackageEntry != null)
            {
                if (updatePackageEntry.NewVersionToInstall != null)
                {
                    UrlHelper urlHelper = new UrlHelper(requestContext);
                    yield return(T("Version {0} is available (See <a href=\"{1}\">Updates</a>).", updatePackageEntry.NewVersionToInstall.Version,
                                   urlHelper.Action(DefaultExtensionTypes.IsTheme(updatePackageEntry.ExtensionsDescriptor.ExtensionType)
                                            ? "ThemesUpdates"
                                            : "ModulesUpdates",
                                                    "GalleryUpdates")).ToString());
                }
            }
        }
 public void Sweep()
 {
     _backgroundPackageUpdateStatus.Value = _packageUpdateService.GetPackagesStatus(_packagingSourceManager.GetSources());
 }