public HelperResult GetExtendedHtml( string tableStyle = "table table-striped table-bordered table-hover footable toggle-square", string headerStyle = "webgrid-header", string footerStyle = "webgrid-footer", string rowStyle = null, string alternatingRowStyle = null, string selectedRowStyle = null, string caption = null, bool displayHeader = true, bool fillEmptyRows = false, string emptyRowCellValue = null, IEnumerable <WebGridColumnHelper> columns = null, IEnumerable <string> exclusions = null, WebGridPagerModes mode = WebGridPagerModes.Numeric | WebGridPagerModes.NextPrevious, string firstText = null, string previousText = null, string nextText = null, string lastText = null, int numericLinksCount = 5, Object htmlAttributes = null, bool displayTotalItems = true, string totalItemsText = "Total items") { HtmlString result; AdminPages adminPages = new AdminPages(); AdminPage adminPage = adminPages.GetPageByCurrentAction(); if (adminPages.IsPermissionGranted(adminPage.PageId, PermissionCode.Read)) { WebGrid webGrid = this; IHtmlString webGridHtml = webGrid.GetHtml(tableStyle, headerStyle, footerStyle, rowStyle, alternatingRowStyle, selectedRowStyle, caption, displayHeader, fillEmptyRows, emptyRowCellValue, columns, exclusions, mode, firstText, previousText, nextText, lastText, numericLinksCount, htmlAttributes); string webGridHtmlString = webGridHtml.ToString(); HtmlDocument htmlDocument = new HtmlDocument(); //TH Attributes htmlDocument.LoadHtml(webGridHtmlString); HtmlNodeCollection htmlNodeCollection = htmlDocument.DocumentNode.SelectSingleNode("//thead/tr").SelectNodes("th"); int i = 0; foreach (WebGridColumnHelper c in columns) { if (c.ThAttributes.IsNotNull()) { HtmlNode htmlNodeTh = HtmlNode.CreateNode(htmlNodeCollection[i].OuterHtml.Insert(3, " " + c.ThAttributes + " ")); htmlNodeCollection[i].ParentNode.ReplaceChild(htmlNodeTh, htmlNodeCollection[i]); } if (c.DataHide.IsNotNull()) { HtmlNode htmlNodeTh = HtmlNode.CreateNode(htmlNodeCollection[i].OuterHtml.Insert(3, " data-hide=\"" + c.DataHide.ToString().ToLower().Split('_').ToCSV(',') + "\" ")); htmlNodeCollection[i].ParentNode.ReplaceChild(htmlNodeTh, htmlNodeCollection[i]); } i++; } webGridHtmlString = htmlDocument.DocumentNode.OuterHtml; //Sort icon if (webGrid.SortColumn.IsNotEmptyOrWhiteSpace()) { htmlDocument.LoadHtml(webGridHtmlString); HtmlNode htmlNodeAnchor = htmlDocument.DocumentNode.SelectSingleNode("//a[contains(@href,'sort=" + webGrid.SortColumn + "')]"); if (htmlNodeAnchor != null) { string imgSortDirection; if (webGrid.SortDirection == SortDirection.Ascending) { imgSortDirection = "imgSortDirectionASC"; } else { imgSortDirection = "imgSortDirectionDESC"; } HtmlNode htmlNodeIcon = HtmlNode.CreateNode("<div class=\"" + imgSortDirection + "\"></div>"); htmlNodeAnchor.ParentNode.AppendChild(htmlNodeIcon); // Fix a bug http://stackoverflow.com/questions/759355/image-tag-not-closing-with-htmlagilitypack if (HtmlNode.ElementsFlags.ContainsKey("img")) { HtmlNode.ElementsFlags["img"] = HtmlElementFlag.Closed; } else { HtmlNode.ElementsFlags.Add("img", HtmlElementFlag.Closed); } webGridHtmlString = htmlDocument.DocumentNode.OuterHtml; } } //Total Row Count htmlDocument.LoadHtml(webGridHtmlString); HtmlNode htmlNodeTFoot = htmlDocument.DocumentNode.SelectSingleNode("//tfoot/tr/td"); if (htmlNodeTFoot != null) { string pager = webGrid.Pager(numericLinksCount: 10, mode: WebGridPagerModes.All).ToString(); if (displayTotalItems) { pager = "<span class=\"pager-total-items-text\">" + totalItemsText + ":</span> <span class=\"pager-total-items-value\">" + webGrid.TotalRowCount.ToString() + "</span><span class=\"pager-pagination\">" + pager + "</span>"; } htmlNodeTFoot.InnerHtml = pager; // Fix a bug http://stackoverflow.com/questions/759355/image-tag-not-closing-with-htmlagilitypack if (HtmlNode.ElementsFlags.ContainsKey("img")) { HtmlNode.ElementsFlags["img"] = HtmlElementFlag.Closed; } else { HtmlNode.ElementsFlags.Add("img", HtmlElementFlag.Closed); } webGridHtmlString = htmlDocument.DocumentNode.OuterHtml; } result = new HtmlString(webGridHtmlString); } else { result = new HtmlString("<span class=\"label label-danger\">" + Resources.Strings.InsufficientPermissions + "</span>"); } return(new HelperResult(writer => { writer.Write(result); })); }
public override void Execute() { WriteLiteral("\r\n\r\n"); WriteLiteral("\r\n"); DefineSection("PackageHead", () => { WriteLiteral("\r\n <script type=\"text/javascript\" src=\""); #line 7 "..\..\packages\Default.cshtml" Write(Href("scripts/Default.js")); #line default #line hidden WriteLiteral("\"></script>\r\n <noscript>"); #line 8 "..\..\packages\Default.cshtml" Write(PackageManagerResources.JavascriptRequired); #line default #line hidden WriteLiteral("</noscript>\r\n"); }); WriteLiteral("\r\n"); #line 10 "..\..\packages\Default.cshtml" 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 <string, string> { { "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 <IPackage> 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 <IPackage> 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 <string>(), autoSortAndPage: false, rowCount: totalPackages); } catch (Exception exception) { #line default #line hidden WriteLiteral(" <div class=\"error message\">"); #line 69 "..\..\packages\Default.cshtml" Write(exception.Message); #line default #line hidden WriteLiteral("</div>\r\n"); #line 70 "..\..\packages\Default.cshtml" return; } #line default #line hidden WriteLiteral("\r\n"); #line 74 "..\..\packages\Default.cshtml" 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) { #line default #line hidden WriteLiteral(" <div class=\"success message\">\r\n <img class=\"inline\" sr" + "c=\""); #line 91 "..\..\packages\Default.cshtml" Write(Href(SiteAdmin.GetVirtualPath("~/images/ok.png"))); #line default #line hidden WriteLiteral("\" alt=\""); #line 91 "..\..\packages\Default.cshtml" Write(Html.Raw(message)); #line default #line hidden WriteLiteral("\" /> "); #line 91 "..\..\packages\Default.cshtml" Write(Html.Raw(message)); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); WriteLiteral(" <br />\r\n"); #line 94 "..\..\packages\Default.cshtml" } } #line default #line hidden WriteLiteral("<form method=\"get\" action=\"\" class=\"group\">\r\n <div class=\"left form-actions\">\r" + "\n <label>"); #line 99 "..\..\packages\Default.cshtml" Write(PackageManagerResources.ShowLabel); #line default #line hidden WriteLiteral(":\r\n "); #line 100 "..\..\packages\Default.cshtml" Write(Html.DropDownList("view", from v in new[] { View.Installed, View.Online, View.Updates } select new SelectListItem { Text = GetViewName(v), Value = v.ToString() })); #line default #line hidden WriteLiteral("\r\n </label> \r\n \r\n"); #line 104 "..\..\packages\Default.cshtml" if (PackageManagerModule.PackageSources.Count() > 1) { #line default #line hidden #line 105 "..\..\packages\Default.cshtml" WriteLiteral(" <span "); #line default #line hidden #line 105 "..\..\packages\Default.cshtml" if (view == View.Installed) { #line default #line hidden #line 105 "..\..\packages\Default.cshtml" Write(Html.Raw("style=\"display: none\"")); #line default #line hidden #line 105 "..\..\packages\Default.cshtml" ; } #line default #line hidden WriteLiteral(">\r\n \r\n <label>"); #line 108 "..\..\packages\Default.cshtml" Write(PackageManagerResources.PackageSourceLabel); #line default #line hidden WriteLiteral(":</label>\r\n "); #line 109 "..\..\packages\Default.cshtml" Write(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) } )); #line default #line hidden WriteLiteral("\r\n </span>\r\n"); #line 117 "..\..\packages\Default.cshtml" } #line default #line hidden WriteLiteral(" </div>\r\n\r\n <div class=\"right\">\r\n <fieldset class=\"no-border\">\r\n " + " <input type=\"text\" id=\"search\" name=\"search\" size=\"30\" value=\""); #line 122 "..\..\packages\Default.cshtml" Write(searchTerm); #line default #line hidden WriteLiteral("\" />\r\n <input type=\"submit\" value=\""); #line 123 "..\..\packages\Default.cshtml" Write(PackageManagerResources.SearchLabel); #line default #line hidden WriteLiteral("\" />\r\n <input type=\"reset\" id=\"searchReset\" value=\""); #line 124 "..\..\packages\Default.cshtml" Write(PackageManagerResources.ClearLabel); #line default #line hidden WriteLiteral("\" />\r\n </fieldset>\r\n </div>\r\n</form>\r\n\r\n"); #line 129 "..\..\packages\Default.cshtml" if (view != View.Online && !projectManager.LocalRepository.GetPackages().Any()) { var onlineLink = Href(PageUtils.GetPackagesHome()) + "?view=" + View.Online; #line default #line hidden #line 131 "..\..\packages\Default.cshtml" Write(Html.Raw(String.Format(CultureInfo.CurrentCulture, PackageManagerResources.NoPackagesInstalled, Html.Encode(onlineLink)))); #line default #line hidden #line 131 "..\..\packages\Default.cshtml" return; } #line default #line hidden WriteLiteral("\r\n"); #line 135 "..\..\packages\Default.cshtml" if (!grid.Rows.Any()) { #line default #line hidden WriteLiteral(" <h3>"); #line 136 "..\..\packages\Default.cshtml" Write(PackageManagerResources.NoPackagesFound); #line default #line hidden WriteLiteral("</h3>\r\n"); #line 137 "..\..\packages\Default.cshtml" } else { #line default #line hidden WriteLiteral(" <ul id=\"package-list\">\r\n"); #line 140 "..\..\packages\Default.cshtml" var dataDictionary = new Dictionary <string, object>(1); #line default #line hidden #line 141 "..\..\packages\Default.cshtml" foreach (var item in grid.Rows) { IPackage package = item.Value; dataDictionary["package"] = package; #line default #line hidden WriteLiteral(" <li>\r\n <div class=\"column-left\">\r\n "); #line 146 "..\..\packages\Default.cshtml" Write(RenderPage("_Package.cshtml", dataDictionary)); #line default #line hidden WriteLiteral("\r\n </div>\r\n <div class=\"right\">\r\n <form meth" + "od=\"get\" action=\""); #line 149 "..\..\packages\Default.cshtml" Write(Href(GetPostUrl(view, package, projectManager))); #line default #line hidden WriteLiteral("\">\r\n <input type=\"hidden\" name=\"page\" value=\""); #line 150 "..\..\packages\Default.cshtml" Write(grid.PageIndex + 1); #line default #line hidden WriteLiteral("\" />\r\n <input type=\"hidden\" name=\"package\" value=\""); #line 151 "..\..\packages\Default.cshtml" Write(package.Id); #line default #line hidden WriteLiteral("\" />\r\n <input type=\"hidden\" name=\"version\" value=\""); #line 152 "..\..\packages\Default.cshtml" Write(package.Version); #line default #line hidden WriteLiteral("\" />\r\n <input type=\"hidden\" name=\"packageName\" value=\""); #line 153 "..\..\packages\Default.cshtml" Write(package.GetDisplayName()); #line default #line hidden WriteLiteral("\" />\r\n <input class=\"formatted\" type=\"submit\" value=\""); #line 154 "..\..\packages\Default.cshtml" Write(GetSubmitText(view, package, projectManager)); #line default #line hidden WriteLiteral("\" />\r\n </form>\r\n </div>\r\n <div class=\"clear\"" + "></div>\r\n </li>\r\n"); #line 159 "..\..\packages\Default.cshtml" } #line default #line hidden WriteLiteral(" </ul>\r\n"); #line 161 "..\..\packages\Default.cshtml" } #line default #line hidden #line 162 "..\..\packages\Default.cshtml" if (totalPackages > PackagesPerPage) { #line default #line hidden WriteLiteral(" <div class=\"pager\">\r\n <strong>"); #line 164 "..\..\packages\Default.cshtml" Write(PackageManagerResources.PageLabel); #line default #line hidden WriteLiteral(": </strong>\r\n "); #line 165 "..\..\packages\Default.cshtml" Write(grid.Pager(WebGridPagerModes.FirstLast | WebGridPagerModes.NextPrevious, nextText: PackageManagerResources.NextText, previousText: PackageManagerResources.PreviousText)); #line default #line hidden WriteLiteral("\r\n </div>\r\n"); #line 169 "..\..\packages\Default.cshtml" } #line default #line hidden WriteLiteral("\r\n\r\n"); }