Beispiel #1
0
        /// <summary>
        /// Returns list of packages from online gallery for a single page
        /// </summary>
        /// <param name="pkgType">Theme, Widget or Extension</param>
        /// <param name="page">Current page</param>
        /// <param name="sortOrder">Order - newest, most downloaded etc.</param>
        /// <param name="searchVal">Search term if it is search request</param>
        /// <returns>List of packages</returns>
        public static List <JsonPackage> FromGallery(string pkgType, int page = 0, Gallery.OrderType sortOrder = Gallery.OrderType.Newest, string searchVal = "")
        {
            var packages = new List <JsonPackage>();
            var gallery  = CachedPackages.Where(p => p.Location == "G" || p.Location == "I");

            if (pkgType != "all")
            {
                gallery = gallery.Where(p => p.PackageType == pkgType).ToList();
            }

            foreach (var pkg in gallery)
            {
                if (string.IsNullOrEmpty(searchVal))
                {
                    packages.Add(pkg);
                }
                else
                {
                    if (pkg.Title.IndexOf(searchVal, StringComparison.OrdinalIgnoreCase) != -1 ||
                        pkg.Description.IndexOf(searchVal, StringComparison.OrdinalIgnoreCase) != -1
                        ||
                        (!string.IsNullOrWhiteSpace(pkg.Tags) &&
                         pkg.Tags.IndexOf(searchVal, StringComparison.OrdinalIgnoreCase) != -1))
                    {
                        packages.Add(pkg);
                    }
                }
            }

            Gallery.GalleryPager = new Pager(page, packages.Count, pkgType);

            if (packages.Count > 0)
            {
                switch (sortOrder)
                {
                case Gallery.OrderType.Downloads:
                    packages = packages.OrderByDescending(p => p.DownloadCount).ThenBy(p => p.Title).ToList();
                    break;

                case Gallery.OrderType.Rating:
                    packages = packages.OrderByDescending(p => p.Rating).ThenBy(p => p.Title).ToList();
                    break;

                case Gallery.OrderType.Newest:
                    packages = packages.OrderByDescending(p => Convert.ToDateTime(p.LastUpdated, Utils.GetDefaultCulture())).ThenBy(p => p.Title).ToList();
                    break;

                case Gallery.OrderType.Alphanumeric:
                    packages = packages.OrderBy(p => p.Title).ToList();
                    break;
                }
            }
            return(packages.Skip(page * Constants.PageSize).Take(Constants.PageSize).ToList());
        }
        public static IEnumerable LoadGalleryPage(string pkgType, int page, Gallery.OrderType sortOrder, string searchVal)
        {
            if (!WebUtils.CheckRightsForAdminSettingsPage(false))
            {
                return(null);
            }
            if (!WebUtils.CheckIfPrimaryBlog(false))
            {
                return(null);
            }

            return(PackageRepository.FromGallery(pkgType, page, sortOrder, searchVal));
        }