public override Rss.RssItem[] GetRssFeedItems(CmsPage page, CmsPlaceholderDefinition placeholderDefinition, CmsLanguage langToRenderFor) { base.categoryList = db.fetchCategoryList(langToRenderFor); RenderParameters renderParams = RenderParameters.FromPlaceholderParamList(placeholderDefinition.ParamList); CmsUrlFormat pageLinkFormat = CmsUrlFormat.FullIncludingProtocolAndDomainName; CmsUrlFormat fileLinkFormat = CmsUrlFormat.FullIncludingProtocolAndDomainName; FileAggItem[] filesToShow = FetchAllFilesToShow(page, placeholderDefinition.Identifier, langToRenderFor, renderParams, pageLinkFormat, fileLinkFormat); List <Rss.RssItem> ret = new List <Rss.RssItem>(); foreach (FileAggItem file in filesToShow) { Rss.RssItem rssItem = CreateAndInitRssItem(page, langToRenderFor); // -- link directly to the file url rssItem.Link = new Uri(file.FileDownloadURL, UriKind.RelativeOrAbsolute); rssItem.Guid = new Rss.RssGuid(rssItem.Link); rssItem.Title = file.Title; rssItem.Description = file.Description; rssItem.PubDate_GMT = file.LastModified.ToUniversalTime(); ret.Add(rssItem); } // foreach file return(ret.ToArray()); } // GetRssFeedItems
public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList) { // CmsContext.setCurrentCultureInfo(langToRenderFor); EventCalendarDb db = new EventCalendarDb(); EventCalendarDb.EventCalendarDetailsData entity = db.fetchDetailsData(page, identifier, langToRenderFor, true); CmsUrlFormat fileUrlFormat = CmsUrlFormat.RelativeToRoot; CmsPage parentPage = page.ParentPage; StringBuilder html = new StringBuilder(); html.Append("<table border=\"0\" cellspacing=\"10\" style=\"margin-bottom: 3em;\" >"); html.Append("<tr valign=\"top\">"); html.Append("<td>" + getDescriptionText(langToRenderFor) + ":</td>"); html.Append("<td>" + StringUtils.nl2br(entity.Description) + "</td>"); html.Append("</tr>"); html.Append("<tr valign=\"top\">"); html.Append("<td>" + getCategoryText(langToRenderFor) + ":</td>"); html.Append("<td>"); html.Append(db.fetchCategoryByIdAndLang(langToRenderFor, entity.CategoryId).Title); html.Append("</td>"); html.Append("</tr>"); html.Append("<tr valign=\"top\">"); html.Append("<td>" + getStartDateTimeText(langToRenderFor) + ":</td>"); html.Append("<td>" + entity.StartDateTime.ToString("yyyy-MM-dd, h:mm tt") + "</td>"); html.Append("</tr>"); html.Append("<tr valign=\"top\">"); html.Append("<td>" + getEndDateTimeText(langToRenderFor) + ":</td>"); html.Append("<td>" + entity.EndDateTime.ToString("yyyy-MM-dd, h:mm tt") + "</td>"); html.Append("</tr>"); html.Append(renderAttachedFileList(page, langToRenderFor, fileUrlFormat)); html.Append("</table>"); html.Append("<a class=\"backToPrev\" href=\""); html.Append(parentPage.getUrl(langToRenderFor)); html.Append("\">"); html.Append(getBackToText(langToRenderFor)); html.Append(" "); html.Append(parentPage.Title); html.Append("</a>"); writer.Write(html.ToString()); }
/// <summary> /// Render the file details page in view mode /// </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) { UpdateFileLibraryCommandsInEditMenu(page); addCssAndScript(page); StringBuilder html = new StringBuilder(); categoryList = db.fetchCategoryList(langToRenderFor); FileLibraryDetailsData fileData = db.fetchDetailsData(page, identifier, langToRenderFor, true); CmsUrlFormat fileUrlFormat = CmsUrlFormat.RelativeToRoot; html.Append(renderBackLinks(page, langToRenderFor, fileData)); html.Append(checkEventAttached(page, identifier, langToRenderFor, fileData)); html.Append("<p style=\"padding: 0.5em;\">" + EOL); html.Append(renderLeftPane(page, identifier, langToRenderFor, fileData, fileUrlFormat)); html.Append(renderRightPane(page, identifier, langToRenderFor, fileData, fileUrlFormat)); html.Append("</p>" + EOL); writer.Write(html.ToString()); }
/// <summary> /// Render the file details page in edit mode /// </summary> /// <param name="writer"></param> /// <param name="page"></param> /// <param name="identifier"></param> /// <param name="langToRenderFor"></param> /// <param name="paramList"></param> public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList) { string controlId = "fileLibrary_" + page.Id.ToString() + "_" + identifier.ToString() + "_" + langToRenderFor.shortCode + "_"; addCssAndScript(page); StringBuilder html = new StringBuilder(); categoryList = db.fetchCategoryList(langToRenderFor); html.Append(handleFormSubmit(page, identifier, langToRenderFor, controlId)); FileLibraryDetailsData fileData = db.fetchDetailsData(page, identifier, langToRenderFor, false); CmsUrlFormat fileUrlFormat = CmsUrlFormat.RelativeToRoot; html.Append("<p style=\"padding: 0.5em;\">" + EOL); html.Append(renderLeftPane(page, identifier, langToRenderFor, fileData, fileUrlFormat)); html.Append(renderRightPaneForm(page, identifier, langToRenderFor, fileData, controlId, fileUrlFormat)); html.Append(PageUtils.getHiddenInputHtml(controlId + "action", "update") + EOL); html.Append("</p>" + EOL); writer.Write(html.ToString()); }
/// <summary> /// Get all the files attached to this event and render the html. /// </summary> /// <param name="page"></param> /// <param name="lang"></param> /// <returns></returns> protected string renderAttachedFileList(CmsPage page, CmsLanguage lang, CmsUrlFormat fileUrlFormat) { List <FileLibraryDetailsData> fileList = new FileLibraryDb().fetchDetailsData(lang, page); if (fileList.Count == 0) { return(""); } WebPortalUser u = CmsContext.currentWebPortalUser; List <string> renderedLinks = new List <string>(); foreach (FileLibraryDetailsData f in fileList) { string link = renderAttachedFile(lang, f, u, fileUrlFormat); if (link != "") { renderedLinks.Add(link); } } if (renderedLinks.Count == 0) { return(""); } StringBuilder html = new StringBuilder(); html.Append("<tr valign=\"top\">"); html.Append("<td>" + getAttachedFilesText(lang) + ":</td>"); html.Append("<td>" + renderedLinks[0] + "</td>"); html.Append("</tr>"); for (int x = 1; x < renderedLinks.Count; x++) { html.Append("<tr valign=\"top\">"); html.Append("<td> </td>"); html.Append("<td>" + renderedLinks[x] + "</td>"); html.Append("</tr>"); } 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()); }
public string getDownloadUrl(CmsUrlFormat urlFormat) { CmsPage page = CmsContext.getPageById(this.DetailsPageId); string baseUrl = GetFileStorageDirectoryUrl(page, this.Identifier, this.Lang); string url = baseUrl + System.IO.Path.GetFileName(getFilenameOnDisk(page, this.Identifier, this.Lang)); switch (urlFormat) { case CmsUrlFormat.RelativeToRoot: break; case CmsUrlFormat.FullIncludingProtocolAndDomainName: if (System.Web.HttpContext.Current == null || System.Web.HttpContext.Current.Request == null || System.Web.HttpContext.Current.Server == null) { throw new Exception("getUrlByPagePath() requires a running web request!"); } System.Web.HttpRequest r = System.Web.HttpContext.Current.Request; string rootUrl = r.Url.Scheme + "://" + r.Url.Host; if (!r.Url.IsDefaultPort) { rootUrl += ":" + r.Url.Port.ToString(); } url = rootUrl + url; break; default: throw new ArgumentException("unknown CmsUrlFormat specified!!"); } return(url); }
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 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)); }
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)); }
public static FileAggItem[] FromPageFilesItemData(PageFilesItemData[] sourceDetails, CmsUrlFormat pageLinkUrlFormat, CmsUrlFormat fileLinkUrlFormat) { List <FileAggItem> ret = new List <FileAggItem>(); foreach (PageFilesItemData file in sourceDetails) { ret.Add(FromPageFilesItemData(file, pageLinkUrlFormat, fileLinkUrlFormat)); } return(ret.ToArray()); }
public static FileAggItem FromPageFilesItemData(PageFilesItemData sourceDetails, CmsUrlFormat pageLinkUrlFormat, CmsUrlFormat fileLinkUrlFormat) { CmsPage detailsPage = CmsContext.getPageById(sourceDetails.DetailsPageId); Dictionary <string, string> pageUrlParams = new Dictionary <string, string>(); pageUrlParams.Add(PageFiles.CurrentFileIdFormName, sourceDetails.Id.ToString()); string PageDisplayURL = detailsPage.getUrl(pageUrlParams, sourceDetails.Lang, pageLinkUrlFormat); string FileDownloadURL = sourceDetails.getDownloadUrl(fileLinkUrlFormat); string Title = sourceDetails.Title; string Description = sourceDetails.Abstract; string CategoryName = detailsPage.getTitle(sourceDetails.Lang); // use the page title as the category DateTime lastModified = sourceDetails.lastModified; return(new FileAggItem(PageDisplayURL, FileDownloadURL, Title, Description, CategoryName, lastModified)); }
public static NewsAggItem FromNewsArticleDetailsData(NewsArticleDb.NewsArticleDetailsData sourceDetails, CmsUrlFormat linkUrlFormat) { CmsPage detailsPage = CmsContext.getPageById(sourceDetails.DetailsPageId); DateTime dateOfNews = sourceDetails.DateOfNews; string PageDisplayURL = detailsPage.getUrl(sourceDetails.Lang, linkUrlFormat); string Title = detailsPage.getTitle(sourceDetails.Lang); string NewsArticleHtml = detailsPage.renderPlaceholdersToString("HtmlContent", sourceDetails.Lang, CmsPage.RenderPlaceholderFilterAction.RunAllPageAndPlaceholderFilters); return(new NewsAggItem(dateOfNews, PageDisplayURL, Title, NewsArticleHtml)); }
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(""); }
/// <summary> /// Render right hand side of the file details page (all details) /// </summary> /// <param name="detailsPage"></param> /// <param name="identifier"></param> /// <param name="lang"></param> /// <param name="fileData"></param> /// <returns></returns> protected string renderRightPane(CmsPage detailsPage, int identifier, CmsLanguage lang, FileLibraryDetailsData fileData, CmsUrlFormat fileUrlFormat) { string fName = fileData.FileName; StringBuilder html = new StringBuilder(); html.Append("<div style=\"float: left;\" class=\"listing\">" + EOL); html.Append(renderDiv(getFileText(lang), FileLibraryDetailsData.getDownloadAnchorHtml(detailsPage, identifier, lang, fName, fileUrlFormat))); html.Append(renderDiv(getCategoryText(lang), fileData.getCategoryName(categoryList))); html.Append(renderDiv(getAuthorText(lang), fileData.Author)); html.Append(renderDiv(getDocumentAbstractText(lang), StringUtils.nl2br(fileData.Description))); if (getFileTypeName(fileData).EndsWith("graphic", StringComparison.CurrentCultureIgnoreCase)) { string imgPreviewUrl = CmsContext.UserInterface.ShowThumbnailPage.getThumbDisplayUrl(FileLibraryDetailsData.getDownloadUrl(detailsPage, identifier, lang, fName, fileUrlFormat), 200, -1); string imgTag = "<img border=\"0\" src=\"" + imgPreviewUrl + "\"></a>"; html.Append(renderDiv(getImagePreviewText(lang), FileLibraryDetailsData.getDownloadAnchorHtml(detailsPage, identifier, lang, fName, imgTag, "_blank", "", fileUrlFormat))); } bool eventRequired = FileLibraryCategoryData.isEventRequired(categoryList, fileData.CategoryId); if (eventRequired) { string eventHtml = "(n/a)"; if (fileData.EventPageId > -1) { CmsPage eventPage = CmsContext.getPageById(fileData.EventPageId); eventHtml = "<a href=\"" + eventPage.getUrl(lang) + "\">" + eventPage.getTitle(lang) + "</a>" + EOL; } html.Append(renderDiv(getAttachedEventText(lang), eventHtml)); } WebPortalUser u = WebPortalUser.FetchUser(fileData.CreatedBy, CmsPortalApplication.GetInstance()); string uploadPersonName = (u == null) ? fileData.CreatedBy : u.FullName; html.Append(renderDiv(getUploadedByText(lang), uploadPersonName)); html.Append(renderDiv(getLastUpdatedText(lang), detailsPage.LastUpdatedDateTime.ToString("MMMM d yyyy h:mm tt"))); html.Append("</div>" + EOL); return(html.ToString()); }
/// <summary> /// Derive a html anchor to download the current file /// </summary> /// <param name="aggregatorPage"></param> /// <param name="identifier"></param> /// <param name="fileName"></param> /// <returns></returns> public static string getDownloadAnchorHtml(CmsPage fileDetailsPage, int identifier, CmsLanguage lang, string fileName, CmsUrlFormat fileUrlFormat) { return(getDownloadAnchorHtml(fileDetailsPage, identifier, lang, fileName, fileName, "_blank", "", fileUrlFormat)); }
/// <summary> /// returns the user accessible URL for a page /// The pagePath should NEVER includes the language shortCode. /// Note: does not check if the path exists. /// </summary> /// <param name="pagePath"></param> /// <param name="paramList"></param> /// <returns></returns> public static string getUrlByPagePath(string pagePath, NameValueCollection paramList, CmsUrlFormat urlFormat) { return(getUrlByPagePath(pagePath, paramList, urlFormat, currentLanguage)); }
/// <summary> /// returns the user accessible URL for a page. /// The pagePath should NEVER includes the language shortCode. /// Note: does not check if the path exists. /// </summary> /// <param name="pagePath"></param> /// <param name="urlFormat"></param> /// <returns></returns> public static string getUrlByPagePath(string pagePath, CmsUrlFormat urlFormat) { return(getUrlByPagePath(pagePath, urlFormat, currentLanguage)); }
private NewsAggItem[] FetchAllNewsAggItems(CmsPage aggregatorPage, int aggIdentifier, CmsLanguage aggLang, RenderParameters renderParams, CmsUrlFormat linkUrlFormat) { List <NewsAggItem> ret = new List <NewsAggItem>(); ret.AddRange(FetchAutoAggregatedNewsArticleDetails(aggregatorPage, aggIdentifier, aggLang, renderParams, linkUrlFormat)); // -- fetch all manually added news items here return(ret.ToArray()); }
} // NewsAggItem class private NewsAggItem[] FetchAutoAggregatedNewsArticleDetails(CmsPage aggregatorPage, int aggIdentifier, CmsLanguage aggLang, RenderParameters renderParams, CmsUrlFormat linkUrlFormat) { CmsPage rootPageToGatherFrom = aggregatorPage; if (renderParams.PageIdToGatherNewsFrom >= 0) { rootPageToGatherFrom = CmsContext.getPageById(renderParams.PageIdToGatherNewsFrom); } CmsContext.PageGatheringMode gatherMode = CmsContext.PageGatheringMode.ChildPagesOnly; if (renderParams.RecursiveGatherNews) { gatherMode = CmsContext.PageGatheringMode.FullRecursion; } CmsPage[] newsDetailsPages = CmsContext.getAllPagesWithPlaceholder("NewsArticleDetails", rootPageToGatherFrom, gatherMode); NewsArticleDb.NewsArticleDetailsData[] newsToShow = new NewsArticleDb().getNewsDetailsByYear(newsDetailsPages, renderParams.AggregatorData.YearToDisplay, aggLang); return(NewsAggItem.FromNewsArticleDetailsData(newsToShow, linkUrlFormat)); }
public static NewsAggItem[] FromNewsArticleDetailsData(NewsArticleDb.NewsArticleDetailsData[] sourceDetails, CmsUrlFormat linkUrlFormat) { List <NewsAggItem> ret = new List <NewsAggItem>(); foreach (NewsArticleDb.NewsArticleDetailsData news in sourceDetails) { ret.Add(FromNewsArticleDetailsData(news, linkUrlFormat)); } return(ret.ToArray()); }
/// <summary> /// get the list of FileAggItems to show. The returned array is not sorted, and can have multiple copies of the same file. /// </summary> /// <param name="aggregatorPage"></param> /// <param name="renderParams"></param> /// <returns></returns> private FileAggItem[] FetchAllFilesToShow(CmsPage aggregatorPage, int aggIdentifier, CmsLanguage aggLang, RenderParameters renderParams, CmsUrlFormat pageLinkUrlFormat, CmsUrlFormat fileLinkUrlFormat) { List <FileAggItem> ret = new List <FileAggItem>(); // -- auto aggregated FileLibraryDetail ret.AddRange(FetchAutoAggregatedFileLibraryDetails(aggregatorPage, aggIdentifier, aggLang, renderParams, pageLinkUrlFormat, fileLinkUrlFormat)); // -- manually linked FileLibraryDetail ret.AddRange(FetchManuallyLinkedFileLibraryDetails(aggregatorPage, aggIdentifier, aggLang, renderParams, pageLinkUrlFormat, fileLinkUrlFormat)); // -- auto aggregated PageFiles if (renderParams.IncludePageFiles) { ret.AddRange(FetchAutoAggregatedPageFiles(aggregatorPage, aggIdentifier, aggLang, renderParams, pageLinkUrlFormat, fileLinkUrlFormat)); } return(ret.ToArray()); } // FetchAllFilesToShow
} // 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()); }
public static FileAggItem[] FromFileLibraryDetailsData(FileLibraryDetailsData[] sourceDetails, List <FileLibraryCategoryData> categoryList, CmsUrlFormat pageLinkUrlFormat, CmsUrlFormat fileLinkUrlFormat) { List <FileAggItem> ret = new List <FileAggItem>(); foreach (FileLibraryDetailsData file in sourceDetails) { ret.Add(FromFileLibraryDetailsData(file, categoryList, pageLinkUrlFormat, fileLinkUrlFormat)); } return(ret.ToArray()); }
/// <summary> /// returns the user accessible URL for a page. /// The pagePath should NEVER includes the language shortCode. /// Note: does not check if the path exists. /// </summary> /// <param name="pagePath"></param> /// <returns></returns> public static string getUrlByPagePath(string pagePath, CmsUrlFormat urlFormat, CmsLanguage pageLanguage) { // -- replace spaces in the path string spaceReplacementChar = "+"; if (spaceReplacementChar != "") { pagePath = pagePath.Replace(" ", spaceReplacementChar); } string url = ""; // use the language path in the URL if configured to do so. string langPath = ""; if (CmsConfig.UseLanguageShortCodeInPageUrls) { langPath = "/" + pageLanguage.shortCode.ToLower(); } if (pagePath == "/" || (CmsConfig.UseLanguageShortCodeInPageUrls && string.Compare("/" + pageLanguage.shortCode, pagePath, true) == 0)) { pagePath += "/default"; } pagePath = langPath + pagePath; url = CmsContext.ApplicationPath + pagePath + ".aspx"; url = url.Replace("///", "/"); url = url.Replace("//", "/"); switch (urlFormat) { case CmsUrlFormat.RelativeToRoot: break; case CmsUrlFormat.FullIncludingProtocolAndDomainName: if (System.Web.HttpContext.Current == null || System.Web.HttpContext.Current.Request == null || System.Web.HttpContext.Current.Server == null) { throw new Exception("getUrlByPagePath() requires a running web request!"); } // there is a way to get the bindings (domain names) for the current website from IIS using Microsoft.Web.Administration.dll (found in c:\windows\system32\inetsrv\) // info and code is here: http://blogs.msdn.com/b/carlosag/archive/2011/01/21/get-iis-bindings-at-runtime-without-being-an-administrator.aspx System.Web.HttpRequest r = System.Web.HttpContext.Current.Request; string rootUrl = r.Url.Scheme + "://" + r.Url.Host; if (!r.Url.IsDefaultPort) { rootUrl += ":" + r.Url.Port.ToString(); } url = rootUrl + url; break; default: throw new ArgumentException("unknown CmsUrlFormat specified!!"); } return(url); }
/// <summary> /// Derive a html anchor to download the current file (overload) /// </summary> /// <param name="aggregatorPage"></param> /// <param name="identifier"></param> /// <param name="fileName"></param> /// <param name="displayHtml"></param> /// <param name="target"></param> /// <param name="cssClass"></param> /// <returns></returns> public static string getDownloadAnchorHtml(CmsPage fileDetailsPage, int identifier, CmsLanguage lang, string fileName, string displayHtml, string target, string cssClass, CmsUrlFormat fileUrlFormat) { StringBuilder html = new StringBuilder("<a href=\""); html.Append(getDownloadUrl(fileDetailsPage, identifier, lang, fileName, fileUrlFormat)); html.Append("\""); if (target != "") { html.Append(" target=\"" + target + "\" "); } if (cssClass != "") { html.Append(" class=\"" + cssClass + "\" "); } html.Append(">"); html.Append(displayHtml); html.Append("</a>"); return(html.ToString()); }
/// <summary> /// Render left hand side of the file details page (file icon and size) /// </summary> /// <param name="detailsPage"></param> /// <param name="identifier"></param> /// <param name="lang"></param> /// <param name="fileData"></param> /// <returns></returns> protected string renderLeftPane(CmsPage detailsPage, int identifier, CmsLanguage lang, FileLibraryDetailsData fileData, CmsUrlFormat fileUrlFormat) { string fName = fileData.FileName; StringBuilder html = new StringBuilder(); html.Append("<div style=\"float: left; text-align: center;\">" + EOL); string iconTag = IconUtils.getIconTag(CmsContext.ApplicationPath, true, fileData.fileExtension); html.Append(renderDiv(FileLibraryDetailsData.getDownloadAnchorHtml(detailsPage, identifier, lang, fName, iconTag, "_blank", "", fileUrlFormat))); html.Append(renderDiv(FileLibraryDetailsData.getDownloadAnchorHtml(detailsPage, identifier, lang, fName, getDownloadText(lang), "_blank", "downloadLink", fileUrlFormat))); html.Append("<p style=\"font-style: italic; font-size: smaller;\">(" + getLinkOpensNewWindowText(lang) + ")</p>" + EOL); html.Append(renderDiv(getFileTypeName(fileData))); long size = FileLibraryDetailsData.getFileSize(detailsPage, identifier, lang, fName); html.Append(renderDiv(StringUtils.formatFileSize(size))); html.Append("</div>" + EOL); return(html.ToString()); }
/// <summary> /// returns the user accessible URL for a page /// The pagePath should NEVER includes the language shortCode. /// Note: does not check if the path exists. /// </summary> /// <param name="pagePath"></param> /// <param name="paramList"></param> /// <param name="pageLanguage"></param> /// <param name="urlFormat"></param> /// <returns></returns> public static string getUrlByPagePath(string pagePath, NameValueCollection paramList, CmsUrlFormat urlFormat, CmsLanguage pageLanguage) { string url = getUrlByPagePath(pagePath, urlFormat, pageLanguage); string urlQueryStartChar = "?"; if (url.IndexOf("?") > -1) { urlQueryStartChar = "&"; } bool first = true; foreach (string key in paramList.Keys) { string val = paramList[key]; if (first) { url = url + urlQueryStartChar + key + "=" + System.Web.HttpUtility.UrlEncode(val); first = false; } else { url = url + "&" + key + "=" + System.Web.HttpUtility.UrlEncode(val); } } return(url); }
/// <summary> /// Under edit mode, render the right hand side of the file details page as form (HTML INPUT or TEXTAREA, etc...) /// </summary> /// <param name="detailsPage"></param> /// <param name="identifier"></param> /// <param name="lang"></param> /// <param name="fileData"></param> /// <param name="controlId"></param> /// <returns></returns> protected string renderRightPaneForm(CmsPage detailsPage, int identifier, CmsLanguage lang, FileLibraryDetailsData fileData, string controlId, CmsUrlFormat fileUrlFormat) { string fName = fileData.FileName; StringBuilder html = new StringBuilder(); html.Append("<div style=\"float: left;\" class=\"listing\">" + EOL); html.Append(renderDiv(getFileText(lang), FileLibraryDetailsData.getDownloadAnchorHtml(detailsPage, identifier, lang, fName, fileUrlFormat))); string cssClass = "fileLibrary_categoryId"; string popupCategory = FileLibraryCategoryData.getEditPopupAnchor(lang, cssClass, getEditText(lang)); string htmlId = controlId + "categoryId"; NameValueCollection categoryColl = new NameValueCollection(); foreach (FileLibraryCategoryData c in categoryList) { categoryColl.Add(c.CategoryId.ToString(), c.CategoryName); } string selectCategory = getCategoryOption(lang, controlId, fileData.CategoryId); html.Append(renderDiv(getCategoryText(lang) + " " + popupCategory, selectCategory)); htmlId = controlId + "author"; html.Append(renderDiv(getAuthorText(lang), PageUtils.getInputTextHtml(htmlId, htmlId, fileData.Author, 30, 50))); htmlId = controlId + "description"; html.Append(renderDiv(getDocumentAbstractText(lang), PageUtils.getTextAreaHtml(htmlId, htmlId, fileData.Description, 25, 5))); if (getFileTypeName(fileData).EndsWith("graphic", StringComparison.CurrentCultureIgnoreCase)) { string imgPreviewUrl = CmsContext.UserInterface.ShowThumbnailPage.getThumbDisplayUrl(FileLibraryDetailsData.getDownloadUrl(detailsPage, identifier, lang, fName, fileUrlFormat), 200, -1); string imgTag = "<img border=\"0\" src=\"" + imgPreviewUrl + "\"></a>"; html.Append(renderDiv(getImagePreviewText(lang), FileLibraryDetailsData.getDownloadAnchorHtml(detailsPage, identifier, lang, fName, imgTag, "_blank", "", fileUrlFormat))); } bool eventRequired = FileLibraryCategoryData.isEventRequired(categoryList, fileData.CategoryId); if (eventRequired || fileData.EventPageId >= 0) { htmlId = controlId + "eventPageId"; html.Append(renderDiv(getAttachedEventText(lang), getEventOption(lang, controlId, fileData.EventPageId, eventRequired))); } WebPortalUser u = WebPortalUser.FetchUser(fileData.CreatedBy, CmsPortalApplication.GetInstance()); string uploadPersonName = (u == null) ? fileData.CreatedBy : u.FullName; html.Append(renderDiv(getUploadedByText(lang), uploadPersonName)); html.Append(renderDiv(getLastUpdatedText(lang), detailsPage.LastUpdatedDateTime.ToString("MMMM d yyyy h:mm tt"))); html.Append("</div>" + EOL); return(html.ToString()); }
public static FileAggItem FromFileLibraryDetailsData(FileLibraryDetailsData sourceDetails, List <FileLibraryCategoryData> categoryList, CmsUrlFormat pageLinkUrlFormat, CmsUrlFormat fileLinkUrlFormat) { CmsPage detailsPage = CmsContext.getPageById(sourceDetails.DetailsPageId); string PageDisplayURL = detailsPage.getUrl(sourceDetails.Lang, pageLinkUrlFormat); string FileDownloadURL = FileLibraryDetailsData.getDownloadUrl(detailsPage, sourceDetails.Identifier, sourceDetails.Lang, sourceDetails.FileName, fileLinkUrlFormat); string Title = detailsPage.getTitle(sourceDetails.Lang); string Description = sourceDetails.Description; string CategoryName = FileLibraryCategoryData.getCategoryFromList(categoryList, sourceDetails.CategoryId).CategoryName; DateTime lastModified = detailsPage.LastUpdatedDateTime; return(new FileAggItem(PageDisplayURL, FileDownloadURL, Title, Description, CategoryName, lastModified)); }