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());
        }
Пример #7
0
        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));
 }
Пример #17
0
 /// <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));
 }
Пример #18
0
 /// <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());
            }
Пример #25
0
        /// <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());
        }
Пример #28
0
        /// <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));
            }