private FileAggItem[] FetchAutoAggregatedPageFiles(CmsPage aggregatorPage, int aggIdentifier, CmsLanguage aggLang, RenderParameters renderParams, CmsUrlFormat pageLinkUrlFormat, CmsUrlFormat fileLinkUrlFormat) { CmsPage rootPageToGatherFrom = aggregatorPage; if (renderParams.PageIdToGatherFilesFrom >= 0) { rootPageToGatherFrom = CmsContext.getPageById(renderParams.PageIdToGatherFilesFrom); } CmsContext.PageGatheringMode gatherMode = CmsContext.PageGatheringMode.ChildPagesOnly; if (renderParams.RecursiveGatherFiles) { gatherMode = CmsContext.PageGatheringMode.FullRecursion; } List <string> phTypesToSearchFor = new List <string>(); phTypesToSearchFor.Add("FileLibraryDetails"); CmsPage[] pageFilePages = CmsContext.getAllPagesWithPlaceholder("PageFiles", rootPageToGatherFrom, gatherMode); PageFilesDb pageFilesDb = new PageFilesDb(); PageFilesItemData[] fileItems = pageFilesDb.getPageFilesItemDatas(pageFilePages, aggLang); return(FileAggItem.FromPageFilesItemData(fileItems, pageLinkUrlFormat, fileLinkUrlFormat)); }
private string handleAssociateExistingSubmit(CmsPage aggPage, int aggIdentifier, CmsLanguage aggLang, string controlId, List <FileAggItem> filesToShow, CmsUrlFormat pageLinkUrlFormat, CmsUrlFormat fileLinkUrlFormat) { if (PageUtils.getFromForm(controlId + "action", "") != "associateFile") { return(""); } int pageIdToAssociate = PageUtils.getFromForm(controlId + "AssociatePageId", -1); CmsPage pageToAssociate = CmsContext.getPageById(pageIdToAssociate); if (pageToAssociate.ID >= 0) { CmsPlaceholderDefinition[] phDefs = pageToAssociate.getPlaceholderDefinitions("FileLibraryDetails"); foreach (CmsPlaceholderDefinition phDef in phDefs) { bool b = new filelibraryaggregator2Db().AssociateDetailsPageWithAggregator(aggPage, aggIdentifier, aggLang, pageToAssociate, phDef.Identifier, aggLang); if (!b) { return(formatErrorMsg("Error: could not add '" + pageToAssociate.Title + "' to this listing: there was a database error")); } } // foreach List <FileLibraryDetailsData> arr = db.fetchDetailsData(pageToAssociate); filesToShow.AddRange(FileAggItem.FromFileLibraryDetailsData(arr.ToArray(), base.categoryList, pageLinkUrlFormat, fileLinkUrlFormat)); } return(""); }
public static bool ArrayContainsFile(FileAggItem[] haystack, FileAggItem fileToFind) { Dictionary <string, FileAggItem> hash = new Dictionary <string, FileAggItem>(); foreach (FileAggItem f in haystack) { hash.Add(f.GetContentHash(), f); } return(hash.ContainsKey(fileToFind.GetContentHash())); }
public static string RenderToHtmlList(FileAggItem[] uniqueFilesToShow, RenderParameters renderParams, bool canWrite) { StringBuilder html = new StringBuilder(); if (uniqueFilesToShow.Length > 0) { if (renderParams.ListingTitle != "") { html.Append("<div class=\"SimpleFileAggregatorHeader\">" + renderParams.ListingTitle + "</div>"); } if (renderParams.ShowByCategory) { string[] categories = FileAggItem.GetAllCategoryNames(uniqueFilesToShow); foreach (string fileCat in categories) { FileAggItem[] filesInCat = FileAggItem.GetAllInCategory(uniqueFilesToShow, fileCat); if (filesInCat.Length > 0) { html.Append("<div class=\"SimpleFileAggregatorCategoryHeader\">" + fileCat + "</div>"); html.Append("<ul class=\"SimpleFileAggregator\">"); filesInCat = FileAggItem.SortFilesByTitle(filesInCat); foreach (FileAggItem fileToShow in filesInCat) { string htmlLink = fileToShow.getHtmlLink(renderParams, canWrite); html.Append("<li>" + htmlLink + "</li>"); } // foreach html.Append("</ul>"); } } // foreach category } else { // -- non-categorized display FileAggItem[] sortedFilesToShow = FileAggItem.SortFilesByTitle(uniqueFilesToShow); html.Append("<ul class=\"SimpleFileAggregator\">"); foreach (FileAggItem fileToShow in sortedFilesToShow) { string htmlLink = fileToShow.getHtmlLink(renderParams, canWrite); html.Append("<li>" + htmlLink + "</li>"); } // foreach html.Append("</ul>"); } // if not show by category } return(html.ToString()); }
private FileAggItem[] FetchManuallyLinkedFileLibraryDetails(CmsPage aggregatorPage, int aggIdentifier, CmsLanguage aggLang, RenderParameters renderParams, CmsUrlFormat pageLinkUrlFormat, CmsUrlFormat fileLinkUrlFormat) { List <CmsPage> pages = new List <CmsPage>(); int[] linkedPageIds = new filelibraryaggregator2Db().FetchPageIdsAssociatedWithPage(aggregatorPage, aggIdentifier, aggLang); foreach (int linkedPageId in linkedPageIds) { if (!CmsPage.ArrayContainsPageId(pages.ToArray(), linkedPageId)) { pages.Add(CmsContext.getPageById(linkedPageId)); } } // foreach List <FileLibraryDetailsData> filesToShow = db.fetchDetailsData(pages.ToArray(), aggLang); return(FileAggItem.FromFileLibraryDetailsData(filesToShow.ToArray(), base.categoryList, pageLinkUrlFormat, fileLinkUrlFormat)); }
} // FetchAllFilesToShow private string renderAssociateExistingForm(CmsPage page, string controlId, CmsLanguage lang, FileAggItem[] filesAlreadyShown, CmsUrlFormat pageLinkUrlFormat, CmsUrlFormat fileLinkUrlFormat) { // -- find files to show. CmsPage[] allFilePages = CmsContext.getAllPagesWithPlaceholder("FileLibraryDetails", CmsContext.HomePage, CmsContext.PageGatheringMode.FullRecursion); NameValueCollection dropDownOptions = new NameValueCollection(); dropDownOptions.Add("-1", "-- select an existing file -- "); List <FileLibraryDetailsData> allFileDetailsData = db.fetchDetailsData(allFilePages, lang); foreach (FileLibraryDetailsData file in allFileDetailsData) { if (!FileAggItem.ArrayContainsFile(filesAlreadyShown, FileAggItem.FromFileLibraryDetailsData(file, base.categoryList, pageLinkUrlFormat, fileLinkUrlFormat))) { CmsPage p = CmsContext.getPageById(file.DetailsPageId); // this page is not already shown, so add it to the drop down dropDownOptions.Add(file.DetailsPageId.ToString(), p.getTitle(lang)); } } // foreach file if (dropDownOptions.Keys.Count <= 1) { return(""); // do not render anything if there aren't any files already shown. } // Traditional upload StringBuilder html = new StringBuilder(); html.Append("<p>" + EOL); string formId = controlId + "associateFileForm"; html.Append(page.getFormStartHtml(formId) + EOL); html.Append("<div>Add an existing file to this display:</div>" + EOL); html.Append("<p>" + EOL); html.Append(PageUtils.getDropDownHtml(controlId + "AssociatePageId", controlId + "AssociatePageId", dropDownOptions, "")); html.Append("</p>" + EOL); html.Append("<p>" + EOL); html.Append(PageUtils.getHiddenInputHtml(controlId + "action", "associateFile") + EOL); html.Append("</p>" + EOL); html.Append("<input type=\"submit\" name=\"" + controlId + "FileUpload\" value=\"Add to listing\" />" + EOL); html.Append(page.getFormCloseHtml(formId) + EOL); html.Append("</p>" + EOL); return(html.ToString()); }
/// <summary> /// Render the placeholder in ViewMode /// </summary> /// <param name="writer"></param> /// <param name="page"></param> /// <param name="identifier"></param> /// <param name="langToRenderFor"></param> /// <param name="paramList"></param> public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList) { base.categoryList = db.fetchCategoryList(langToRenderFor); string controlId = "simplefileaggregator_" + page.ID.ToString() + "_" + identifier.ToString() + langToRenderFor.shortCode; RenderParameters renderParams = RenderParameters.FromPlaceholderParamList(paramList); CmsUrlFormat pageLinkFormat = CmsUrlFormat.RelativeToRoot; CmsUrlFormat fileLinkFormat = CmsUrlFormat.RelativeToRoot; List <FileAggItem> filesToShow = new List <FileAggItem>(FetchAllFilesToShow(page, identifier, langToRenderFor, renderParams, pageLinkFormat, fileLinkFormat)); StringBuilder html = new StringBuilder(); bool canWrite = page.currentUserCanWrite; if (renderFromEditMode) // don't render forms if we are in Edit Mode. { canWrite = false; } if (canWrite) { html.Append("<p>" + handleAssociateExistingSubmit(page, identifier, langToRenderFor, controlId, filesToShow, pageLinkFormat, fileLinkFormat) + "</p>" + EOL); html.Append("<p>" + base.handleUploadSubmit(page, identifier, langToRenderFor, controlId) + "</p>" + EOL); } FileAggItem[] uniqueFilesToShow = FileAggItem.RemoveDuplicates(filesToShow); html.Append(RenderToHtmlList(uniqueFilesToShow, renderParams, canWrite)); if (canWrite) { html.Append(renderAssociateExistingForm(page, controlId, langToRenderFor, uniqueFilesToShow, pageLinkFormat, fileLinkFormat)); html.Append(base.renderUploadForm(page, langToRenderFor, controlId)); } // List<FileLibraryDetailsData> filesToDisplay = FileLibraryDetailsData.FetchDetailsDataForPages(pagesToGetDetailsFrom); writer.Write(html.ToString()); }
private FileAggItem[] FetchAutoAggregatedFileLibraryDetails(CmsPage aggregatorPage, int aggIdentifier, CmsLanguage aggLang, RenderParameters renderParams, CmsUrlFormat pageLinkUrlFormat, CmsUrlFormat fileLinkUrlFormat) { CmsPage rootPageToGatherFrom = aggregatorPage; if (renderParams.PageIdToGatherFilesFrom >= 0) { rootPageToGatherFrom = CmsContext.getPageById(renderParams.PageIdToGatherFilesFrom); } CmsContext.PageGatheringMode gatherMode = CmsContext.PageGatheringMode.ChildPagesOnly; if (renderParams.RecursiveGatherFiles) { gatherMode = CmsContext.PageGatheringMode.FullRecursion; } List <string> phTypesToSearchFor = new List <string>(); phTypesToSearchFor.Add("FileLibraryDetails"); CmsPage[] fileDetailsPages = CmsContext.getAllPagesWithPlaceholder("FileLibraryDetails", rootPageToGatherFrom, gatherMode); List <FileLibraryDetailsData> filesToShow = db.fetchDetailsData(fileDetailsPages, aggLang); return(FileAggItem.FromFileLibraryDetailsData(filesToShow.ToArray(), base.categoryList, pageLinkUrlFormat, fileLinkUrlFormat)); }
private static int CompareFilesByTitle(FileAggItem x, FileAggItem y) { return(string.Compare(x.Title, y.Title)); }