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("");
        }
        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());
        }
        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));
        }