public ActionResult Index(string package) { log.DebugFormat("Controller action requested for package {0}", package); Package packageFound = CkanHelper.GetClient().GetPackage(package, new CacheSettings(SettingsHelper.GetPackageCacheDuration())); SettingsHelper.FilterTitle(packageFound); TagHelper.FilterTags(packageFound.Tags); if (package != null) { this.ConfigureBreadCrumbs(packageFound); this.ConfigureMetaTags(packageFound); } return(View(packageFound)); }
/// <summary> /// Get all tags from the CKAN group. /// </summary> /// <returns></returns> public static List <Tag> GetAllTags(int limit) { CacheSettings settings = new CacheSettings(SettingsHelper.GetAllPackagesCacheDuration(), SettingsHelper.GetAllPackagesCacheBackgroundUpdate()); // Create the CKAN search parameters var searchParameters = new PackageSearchParameters(); searchParameters.Groups.Add(SettingsHelper.GetCatalogGroup()); // Collect the results List <Tag> tags = CkanHelper.GetClient().SearchPackagesGetTagCounts(searchParameters, settings); // Remove filtered tags tags = TagHelper.FilterTags(tags); if (limit > 0) { tags = TagHelper.LimitTags(tags, limit); } return(tags); }
public ActionResult Index(string q, int?page, string order_by, string tag, string mode) { log.DebugFormat("Controller action requested"); this.ConfigureBreadCrumbs(q, tag); // Create the CKAN search parameters var searchParameters = new PackageSearchParameters(); searchParameters.AggregateTagCounts = true; searchParameters.Query = q; searchParameters.Groups.Add(SettingsHelper.GetCatalogGroup()); // Ordering if (!String.IsNullOrEmpty(order_by)) { searchParameters.OrderBy = order_by; } // Tag if (!String.IsNullOrEmpty(tag)) { searchParameters.Tags.Add(tag); } // Build the view model for the results PackageSearchResultsModel model = new PackageSearchResultsModel(); Pager pager = null; if (mode == "table") { model.DisplayMode = ResultsDisplayMode.Table; searchParameters.Offset = 0; // TODO: In the table mode all results are currently returned and paginated client side. // This isn't scalable so this will need looked at in the future (AJAX pagination maybe?) searchParameters.Limit = CkanHelper.GetPackageCount(); } else // mode == list (default) { // Set up the pagination int pageNumber = 1; if (page != null) { pageNumber = (int)page; } pager = new Pager(pageNumber, SettingsHelper.GetSearchResultsPerPage()); searchParameters.Offset = pager.RecordOffset; searchParameters.Limit = pager.RecordsPerPage; } // Execute the search model.SearchParameters = searchParameters; model.SearchResults = CkanHelper.GetClient().SearchPackages <Package>(searchParameters, new CacheSettings(SettingsHelper.GetSearchResultsCacheDuration())); // Filter the titles SettingsHelper.FilterTitles(model.SearchResults.Results); // Filter the tags model.SearchResults.Tags = TagHelper.FilterTags(model.SearchResults.Tags); // Set the pager if we are using it if (pager != null) { // Set the number of records to be paged pager.RecordCount = model.SearchResults.Count; // Add the pager to the model model.Pager = pager; } // Render the view return(View(model)); }