@* Generator: WebPage *@ @using System.Globalization; @using NuGet; @section PackageHead{ } @{ Page.SectionTitle = PackageManagerResources.SectionTitle; // Page Constants const int PackagesPerPage = 10; const string FilterCookieName = "packagesFilter"; // Request parameters var view = GetView(PageUtils.GetFilterValue(Request, FilterCookieName, "view")); var searchTerm = Request.QueryString["search"]; var packageSourceName = PageUtils.GetFilterValue(Request, FilterCookieName, "source"); var packageSource = PageUtils.GetPackageSource(packageSourceName); PageUtils.PersistFilter(Response, FilterCookieName, new Dictionary { { "view", view.ToString() }, { "source", packageSourceName }, }); // Add values to ModelState ModelState.SetModelValue("view", view.ToString()); WebProjectManager projectManager; WebGrid grid; int totalPackages = 0; try { // This entire block needs ot be inside a try catch block. This is necessary because exceptions could be fired at two places // 1. When trying to connect to the remote repository. 2. When executing the Linq expression IEnumerable packages; projectManager = new WebProjectManager(packageSource.Source, PackageManagerModule.SiteRoot); // Read packages switch (view) { case View.Updates: packages = projectManager.GetPackagesWithUpdates(searchTerm, packageSource.FilterPreferredPackages); break; case View.Online: IQueryable remotePackages = projectManager.GetRemotePackages(searchTerm, packageSource.FilterPreferredPackages); totalPackages = remotePackages.Count(); packages = WebProjectManager.CollapseVersions(remotePackages); break; default: packages = projectManager.GetInstalledPackages(searchTerm); break; } if (view != View.Online) { totalPackages = packages.Count(); } grid = new WebGrid(rowsPerPage: PackagesPerPage, pageFieldName: "page"); packages = packages.Skip(grid.PageIndex * PackagesPerPage) .Take(PackagesPerPage); grid.Bind(packages.ToList(), columnNames: Enumerable.Empty(), autoSortAndPage: false, rowCount: totalPackages); } catch (Exception exception) {
@exception.Message
return; } } @{ var completedAction = Request.QueryString["action-completed"]; if (!completedAction.IsEmpty()) { var packageName = Html.Encode(Request.QueryString["packageName"]); string message = null; if (completedAction.Equals("Install", StringComparison.OrdinalIgnoreCase)) { message = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.InstallSuccess, packageName); } else if (completedAction.Equals("Uninstall", StringComparison.OrdinalIgnoreCase)) { message = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.UninstallSuccess, packageName); } else if (completedAction.Equals("Update", StringComparison.OrdinalIgnoreCase)) { message = String.Format(CultureInfo.CurrentCulture, PackageManagerResources.UpdateSuccess, packageName); } if (message != null) {
@Html.Raw(message) @Html.Raw(message)

} } }
@if (PackageManagerModule.PackageSources.Count() > 1) {   @Html.DropDownList("source", from f in PackageManagerModule.PackageSources.OrderBy(p => p.Name) select new SelectListItem { Value = f.Name, Text = f.Name, Selected = f.Name.Equals(packageSourceName, StringComparison.OrdinalIgnoreCase) } ) }
@if (view != View.Online && !projectManager.LocalRepository.GetPackages().Any()) { var onlineLink = Href(PageUtils.GetPackagesHome()) + "?view=" + View.Online; @Html.Raw(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.NoPackagesInstalled, Html.Encode(onlineLink))) return; } @if (!grid.Rows.Any()) {

@PackageManagerResources.NoPackagesFound

} else {
    @{ var dataDictionary = new Dictionary(1); } @foreach (var item in grid.Rows) { IPackage package = item.Value; dataDictionary["package"] = package;
  • @RenderPage("_Package.cshtml", dataDictionary)
  • }
} @if (totalPackages > PackagesPerPage) {
@PackageManagerResources.PageLabel: @grid.Pager(WebGridPagerModes.FirstLast | WebGridPagerModes.NextPrevious, nextText: PackageManagerResources.NextText, previousText: PackageManagerResources.PreviousText)
} @functions { private enum View { Installed, Updates, Online }; private static readonly IDictionary _viewMapping = new Dictionary(StringComparer.OrdinalIgnoreCase) { { "Installed", View.Installed }, { "Updates", View.Updates }, { "Online", View.Online } }; private static View GetView(string viewName) { View view; if (String.IsNullOrEmpty(viewName) || !_viewMapping.TryGetValue(viewName, out view)) { view = View.Installed; } return view; } private static string GetViewName(View view) { switch (view) { case View.Online: return PackageManagerResources.OnlineLabel; case View.Updates: return PackageManagerResources.UpdatesLabel; default: return PackageManagerResources.InstalledLabel; } } private static string GetSubmitText(View view, IPackage package, WebProjectManager projectManager) { switch (view) { case View.Online: return projectManager.IsPackageInstalled(package) ? PackageManagerResources.UninstallPackage : PackageManagerResources.InstallPackage; case View.Updates: return PackageManagerResources.UpdatePackage; default: return PackageManagerResources.UninstallPackage; } } private static string GetPostUrl(View view, IPackage package, WebProjectManager projectManager) { switch (view) { case View.Online: return projectManager.IsPackageInstalled(package) ? "Uninstall" : "Install"; case View.Updates: return "Update"; default: return "Uninstall"; } } }