protected string getThumbnailPagerOutput(SingleImageData[] searchResults, SingleImageGalleryPlaceholderData data) { StringBuilder html = new StringBuilder(); html.Append("<div class=\"pager\">"); int numPages = (int)Math.Ceiling((double)searchResults.Length / data.NumThumbsPerPage); if (numPages <= 0) { numPages = 1; } int currPageNum = getCurrentPageNumber(searchResults, null, data); if (currPageNum > 1 && numPages > 1) { html.Append("<a href=\"" + getPagerUrl(currPageNum - 1, data) + "\">"); html.Append("« prev"); html.Append("</a> "); } html.Append("Page " + currPageNum.ToString() + " of " + numPages.ToString()); if (currPageNum < numPages && numPages > 1) { html.Append(" <a href=\"" + getPagerUrl(currPageNum + 1, data) + "\">"); html.Append("next »"); html.Append("</a> "); } html.Append("</div>"); return(html.ToString()); } // OutputPager
private SingleImageData[] sortByPageOrder(SingleImageGalleryPlaceholderData placeholderData, SingleImageData[] imageDatas, CmsPage[] orderedPages) { List <SingleImageData> ret = new List <SingleImageData>(); foreach (CmsPage p in orderedPages) { ret.AddRange(getImagesForPage(p, imageDatas)); } return(ret.ToArray()); }
} // OutputPager private string getPagerUrl(int pageNumber, SingleImageGalleryPlaceholderData data) { int startAt = (pageNumber - 1) * data.NumThumbsPerPage; // string query = PageUtils.getFromForm("q", ""); NameValueCollection urlParams = new NameValueCollection(); urlParams.Add("gn", startAt.ToString()); string url = CmsContext.getUrlByPagePath(CmsContext.currentPage.Path, urlParams); return(url); }
public SingleImageGalleryPlaceholderData getSingleImageGallery(CmsPage page, int identifier, CmsLanguage forLanguage, bool createNewIfDoesNotExist) { if (page.Id < 0 || identifier < 0) { return(new SingleImageGalleryPlaceholderData()); } string sql = "select * from singleimagegallery c where c.pageid = " + page.Id.ToString() + " and c.identifier = " + identifier.ToString() + " and langShortCode like '" + dbEncode(forLanguage.shortCode) + "' and deleted is null;"; DataSet ds = this.RunSelectQuery(sql); if (this.hasSingleRow(ds)) { DataRow dr = ds.Tables[0].Rows[0]; SingleImageGalleryPlaceholderData ret = new SingleImageGalleryPlaceholderData(); ret.PageIdToGatherImagesFrom = getPossiblyNullValue(dr, "PageIdToGatherImagesFrom", CmsContext.HomePage.Id); ret.RecursiveGatherImages = Convert.ToBoolean(dr["RecursiveGatherImages"]); ret.ThumbImageDisplayBoxWidth = Convert.ToInt32(dr["ThumbnailDisplayBoxWidth"]); ret.ThumbImageDisplayBoxHeight = Convert.ToInt32(dr["ThumbnailDisplayBoxHeight"]); ret.OverrideFullDisplayBoxSize = Convert.ToBoolean(dr["OverrideFullDisplayBoxSize"]); ret.FullSizeDisplayBoxWidth = Convert.ToInt32(dr["FullSizeDisplayBoxWidth"]); ret.FullSizeDisplayBoxHeight = Convert.ToInt32(dr["FullSizeDisplayBoxHeight"]); ret.NumThumbsPerRow = Convert.ToInt32(dr["NumThumbsPerRow"]); ret.NumThumbsPerPage = Convert.ToInt32(dr["NumThumbsPerPage"]); ret.TagsImagesMustHave = dr["ShowOnlyTags"].ToString().Split(new string[] { SingleImageData.TagStorageSeperator }, StringSplitOptions.RemoveEmptyEntries); return(ret); } else { if (createNewIfDoesNotExist) { return(createNewSingleImageGallery(page, identifier, forLanguage, new SingleImageGalleryPlaceholderData())); } else { throw new Exception("getSingleImageGallery database error: placeholder does not exist"); } } return(new SingleImageGalleryPlaceholderData()); } // getPlainTextContent
} // RenderEdit public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList) { string controlId = "SingleImageGallery_" + page.ID.ToString() + identifier.ToString() + langToRenderFor.shortCode; SingleImageGalleryDb db = new SingleImageGalleryDb(); SingleImageGalleryPlaceholderData placeholderData = db.getSingleImageGallery(page, identifier, langToRenderFor, true); SingleImageData[] imageDatas = new SingleImageData[0]; SingleImageDb singleImageDb = new SingleImageDb(); List <CmsPage> pagesToGatherImagesFrom = new List <CmsPage>(); // -- gather images to display from selected pages CmsPage startPage = CmsContext.getPageById(placeholderData.PageIdToGatherImagesFrom); if (placeholderData.RecursiveGatherImages) { Dictionary <int, CmsPage> allPages = startPage.getLinearizedPages(); pagesToGatherImagesFrom = new List <CmsPage>(allPages.Values); } else { pagesToGatherImagesFrom.Add(startPage); } imageDatas = singleImageDb.getSingleImages(pagesToGatherImagesFrom.ToArray(), langToRenderFor); imageDatas = filterOutDuplicateImagePaths(placeholderData, imageDatas); imageDatas = filterImagesByRequiredTags(placeholderData, imageDatas); imageDatas = sortByPageOrder(placeholderData, imageDatas, pagesToGatherImagesFrom.ToArray()); // -- override the full-sized display int imgIdToView = PageUtils.getFromForm("galleryimage", Int32.MinValue); if (imgIdToView >= 0) { foreach (SingleImageData i in imageDatas) { if (i.SingleImageId == imgIdToView) { writer.Write(renderSinglePageDisplayOfImage(placeholderData, i, imageDatas, pagesToGatherImagesFrom.ToArray())); return; } } // foreach } else { writer.Write(getGalleryView(placeholderData, imageDatas, pagesToGatherImagesFrom.ToArray(), langToRenderFor)); } } // RenderView
} // RenderView private SingleImageData[] filterOutDuplicateImagePaths(SingleImageGalleryPlaceholderData placeholderData, SingleImageData[] imageDatas) { List <string> existingPagePaths = new List <string>(); List <SingleImageData> ret = new List <SingleImageData>(); foreach (SingleImageData img in imageDatas) { if (existingPagePaths.IndexOf(img.ImagePath.Trim().ToLower()) == -1) { ret.Add(img); existingPagePaths.Add(img.ImagePath.Trim().ToLower()); } } return(ret.ToArray()); }
private SingleImageData[] filterImagesByRequiredTags(SingleImageGalleryPlaceholderData placeholderData, SingleImageData[] imageDatas) { // if nothing to filter by, show them all if (placeholderData.TagsImagesMustHave.Length == 0) { return(imageDatas); } List <SingleImageData> ret = new List <SingleImageData>(); foreach (SingleImageData img in imageDatas) { foreach (string reqiredTag in placeholderData.TagsImagesMustHave) { if (img.containsTag(reqiredTag)) { ret.Add(img); break; } } // foreach } return(ret.ToArray()); }
} // getPlainTextContent public SingleImageGalleryPlaceholderData createNewSingleImageGallery(CmsPage page, int identifier, CmsLanguage forLanguage, SingleImageGalleryPlaceholderData data) { string sql = "insert into singleimagegallery (pageid, identifier, langShortCode, PageIdToGatherImagesFrom,RecursiveGatherImages,ThumbnailDisplayBoxWidth,ThumbnailDisplayBoxHeight, OverrideFullDisplayBoxSize,FullSizeDisplayBoxWidth,FullSizeDisplayBoxHeight, NumThumbsPerRow, NumThumbsPerPage, ShowOnlyTags ) values ("; sql += page.Id.ToString() + ","; sql += identifier.ToString() + ", "; sql += "'" + dbEncode(forLanguage.shortCode) + "', "; sql += "" + data.PageIdToGatherImagesFrom + ", "; sql += "" + Convert.ToInt32(data.RecursiveGatherImages).ToString() + ", "; sql += "" + data.ThumbImageDisplayBoxWidth + ", "; sql += "" + data.ThumbImageDisplayBoxHeight + ", "; sql += "" + Convert.ToInt32(data.OverrideFullDisplayBoxSize).ToString() + ", "; sql += "" + (data.FullSizeDisplayBoxWidth).ToString() + ", "; sql += "" + (data.FullSizeDisplayBoxHeight).ToString() + ", "; sql += "" + (data.NumThumbsPerRow).ToString() + ", "; sql += "" + (data.NumThumbsPerPage).ToString() + ", "; sql += "'" + dbEncode(String.Join(SingleImageData.TagStorageSeperator, data.TagsImagesMustHave)) + "' "; sql += "); "; int newId = this.RunInsertQuery(sql); if (newId > -1) { if (page.setLastUpdatedDateTimeToNow()) { return(data); } } return(new SingleImageGalleryPlaceholderData()); } // createNewSingleImageGallery
} // createNewSingleImageGallery public bool saveUpdatedSingleImageGallery(CmsPage page, int identifier, CmsLanguage forLanguage, SingleImageGalleryPlaceholderData data) { string sql = "update singleimagegallery set "; sql += "PageIdToGatherImagesFrom = " + data.PageIdToGatherImagesFrom + ", "; sql += "RecursiveGatherImages = " + Convert.ToInt32(data.RecursiveGatherImages).ToString() + ", "; sql += "ThumbnailDisplayBoxHeight = " + data.ThumbImageDisplayBoxHeight + ", "; sql += "ThumbnailDisplayBoxWidth = " + data.ThumbImageDisplayBoxWidth + ", "; sql += "OverrideFullDisplayBoxSize = " + Convert.ToInt32(data.OverrideFullDisplayBoxSize).ToString() + ", "; sql += "FullSizeDisplayBoxWidth = " + (data.FullSizeDisplayBoxWidth).ToString() + ", "; sql += "FullSizeDisplayBoxHeight = " + (data.FullSizeDisplayBoxHeight).ToString() + ", "; sql += "NumThumbsPerRow = " + (data.NumThumbsPerRow).ToString() + ", "; sql += "NumThumbsPerPage = " + (data.NumThumbsPerPage).ToString() + ", "; sql += "ShowOnlyTags = '" + dbEncode(String.Join(SingleImageData.TagStorageSeperator, data.TagsImagesMustHave)) + "' "; sql += " where pageid= " + page.Id.ToString(); sql += " AND langShortCode like '" + dbEncode(forLanguage.shortCode) + "' "; sql += " AND identifier = " + identifier.ToString() + "; "; int numAffected = this.RunUpdateQuery(sql); if (numAffected > 0) { return(page.setLastUpdatedDateTimeToNow()); } else { return(false); } } // saveUpdatedSingleImageGallery
public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList) { string controlId = "SingleImageGallery_" + page.ID.ToString() + identifier.ToString() + langToRenderFor.shortCode; SingleImageGalleryDb db = new SingleImageGalleryDb(); SingleImageGalleryPlaceholderData placeholderData = db.getSingleImageGallery(page, identifier, langToRenderFor, true); string[] possibleTags = (new SingleImageDb()).getAllPossibleTags(); string action = PageUtils.getFromForm(controlId + "_action", ""); if (action == "updateSingleImageGallery") { placeholderData.PageIdToGatherImagesFrom = PageUtils.getFromForm(controlId + "PageIdToGatherImagesFrom", placeholderData.PageIdToGatherImagesFrom); placeholderData.RecursiveGatherImages = PageUtils.getFromForm(controlId + "RecursiveGatherImages", placeholderData.RecursiveGatherImages); placeholderData.ThumbImageDisplayBoxWidth = PageUtils.getFromForm(controlId + "ThumbnailDisplayBoxWidth", placeholderData.ThumbImageDisplayBoxWidth); placeholderData.ThumbImageDisplayBoxHeight = PageUtils.getFromForm(controlId + "ThumbnailDisplayBoxHeight", placeholderData.ThumbImageDisplayBoxHeight); placeholderData.OverrideFullDisplayBoxSize = PageUtils.getFromForm(controlId + "OverrideFullDisplayBoxSize", false); placeholderData.FullSizeDisplayBoxWidth = PageUtils.getFromForm(controlId + "FullSizeDisplayBoxWidth", placeholderData.FullSizeDisplayBoxWidth); placeholderData.FullSizeDisplayBoxHeight = PageUtils.getFromForm(controlId + "FullSizeDisplayBoxHeight", placeholderData.FullSizeDisplayBoxHeight); placeholderData.NumThumbsPerRow = PageUtils.getFromForm(controlId + "NumThumbsPerRow", placeholderData.NumThumbsPerRow); placeholderData.NumThumbsPerPage = PageUtils.getFromForm(controlId + "NumThumbsPerPage", placeholderData.NumThumbsPerPage); placeholderData.TagsImagesMustHave = PageUtils.getFromForm(controlId + "Tags"); db.saveUpdatedSingleImageGallery(page, identifier, langToRenderFor, placeholderData); } Dictionary <int, CmsPage> allPages = CmsContext.HomePage.getLinearizedPages(); NameValueCollection pageSelection = new NameValueCollection(); foreach (int pageId in allPages.Keys) { pageSelection.Add(pageId.ToString(), allPages[pageId].getPath(langToRenderFor)); } StringBuilder html = new StringBuilder(); html.Append("<table>" + Environment.NewLine); html.Append("<tr>"); html.Append("<td>Gather images from page:</td>"); html.Append("<td>" + PageUtils.getDropDownHtml(controlId + "PageIdToGatherImagesFrom", controlId + "PageIdToGatherImagesFrom", pageSelection, placeholderData.PageIdToGatherImagesFrom.ToString()) + "</td>"); html.Append("</tr>"); html.Append("<tr>"); html.Append("<td>Recursively gather images from sub-pages?</td>"); NameValueCollection recursiveOptions = new NameValueCollection(); recursiveOptions.Add(true.ToString(), "from the selected page and all its children"); recursiveOptions.Add(false.ToString(), "only the selected page"); html.Append("<td>" + PageUtils.getDropDownHtml(controlId + "RecursiveGatherImages", controlId + "RecursiveGatherImages", recursiveOptions, placeholderData.RecursiveGatherImages.ToString()) + "</td>"); html.Append("</tr>"); html.Append("<tr>"); html.Append("<td>Number of thumbnails per-row:</td>"); html.Append("<td>" + PageUtils.getInputTextHtml(controlId + "NumThumbsPerRow", controlId + "NumThumbsPerRow", placeholderData.NumThumbsPerRow.ToString(), 3, 3) + "</td>"); html.Append("</tr>"); html.Append("<tr>"); html.Append("<td>Number of thumbnails per-page:</td>"); html.Append("<td>" + PageUtils.getInputTextHtml(controlId + "NumThumbsPerPage", controlId + "NumThumbsPerPage", placeholderData.NumThumbsPerPage.ToString(), 3, 3) + "</td>"); html.Append("</tr>"); html.Append("<tr>"); html.Append("<td>Thumbnail size:</td>"); html.Append("<td>"); html.Append(PageUtils.getInputTextHtml(controlId + "ThumbnailDisplayBoxWidth", controlId + "ThumbnailDisplayBoxWidth", placeholderData.ThumbImageDisplayBoxWidth.ToString(), 3, 4)); html.Append(" x "); html.Append(PageUtils.getInputTextHtml(controlId + "ThumbnailDisplayBoxHeight", controlId + "ThumbnailDisplayBoxHeight", placeholderData.ThumbImageDisplayBoxHeight.ToString(), 3, 4)); html.Append("</td>"); html.Append("</tr>"); html.Append("<tr>"); html.Append("<td>Full-size display:</td>"); html.Append("<td>"); html.Append(PageUtils.getCheckboxHtml("Override full-sized display size", controlId + "OverrideFullDisplayBoxSize", controlId + "OverrideFullDisplayBoxSize", true.ToString(), placeholderData.OverrideFullDisplayBoxSize)); html.Append("<br />"); html.Append("Size: "); html.Append(PageUtils.getInputTextHtml(controlId + "FullSizeDisplayBoxWidth", controlId + "FullSizeDisplayBoxWidth", placeholderData.FullSizeDisplayBoxWidth.ToString(), 3, 4)); html.Append(" x "); html.Append(PageUtils.getInputTextHtml(controlId + "FullSizeDisplayBoxHeight", controlId + "FullSizeDisplayBoxHeight", placeholderData.FullSizeDisplayBoxHeight.ToString(), 3, 4)); html.Append("</td>"); html.Append("</tr>"); if (possibleTags.Length > 0) { html.Append("<tr><td>Images must be tagged with:<br />(when no tags are selected, all images are displayed)</td><td>"); foreach (string t in possibleTags) { if (t != "") { html.Append(PageUtils.getCheckboxHtml(t.Trim(), controlId + "Tags", "tag_" + t, t.Trim(), Array.IndexOf(placeholderData.TagsImagesMustHave, t) > -1)); html.Append("<br />"); } } // foreach html.Append("</td></tr>"); } html.Append("</table>" + Environment.NewLine); html.Append(PageUtils.getHiddenInputHtml(controlId + "_action", "updateSingleImageGallery")); writer.Write(html.ToString()); } // RenderEdit
private int getCurrentPageNumber(SingleImageData[] searchResults, SingleImageData imageToShow, SingleImageGalleryPlaceholderData placeholderData) { int numPages = (int)Math.Ceiling((double)searchResults.Length / placeholderData.NumThumbsPerPage); if (numPages <= 0) { numPages = 1; } int startAtItemNumber = 0; if (imageToShow != null) { for (int i = 0; i < searchResults.Length; i++) { if (searchResults[i].SingleImageId == imageToShow.SingleImageId) { int rem = 0; Math.DivRem(i, placeholderData.NumThumbsPerPage, out rem); startAtItemNumber = i - rem; break; } } } else { startAtItemNumber = PageUtils.getFromForm("gn", Int32.MinValue); } if (startAtItemNumber >= searchResults.Length) { startAtItemNumber = searchResults.Length - 1; } else if (startAtItemNumber < 0) { startAtItemNumber = 0; } int currPageNum = (int)Math.Ceiling((double)startAtItemNumber / placeholderData.NumThumbsPerPage) + 1; return(currPageNum); }
public string getGalleryView(SingleImageGalleryPlaceholderData placeholderData, SingleImageData[] imageDatas, CmsPage[] pagesToGatherImagesFrom, CmsLanguage langToRenderFor) { if (imageDatas.Length == 0) { return("<p><strong>There currently aren't any images to view in this gallery</strong></p>"); } StringBuilder html = new StringBuilder(); string pagerHtml = getThumbnailPagerOutput(imageDatas, placeholderData); html.Append("<p>" + pagerHtml + "</p>"); int startAtItemNumber = PageUtils.getFromForm("gn", 0); if (startAtItemNumber >= imageDatas.Length) { startAtItemNumber = imageDatas.Length - 1; } int endAt = Math.Min(startAtItemNumber + placeholderData.NumThumbsPerPage - 1, imageDatas.Length - 1); if (startAtItemNumber == 0 && endAt == 0 && imageDatas.Length == 1) { html.Append(renderThumbnail(placeholderData, imageDatas[0], langToRenderFor)); } else { html.Append("<table>" + Environment.NewLine); bool rowStarted = false; for (int i = startAtItemNumber; i <= endAt; i++) { if (endAt <= 0) { break; } if (i % placeholderData.NumThumbsPerRow == 0) { if (rowStarted) { html.Append("</tr>" + Environment.NewLine); } html.Append("<tr>" + Environment.NewLine); rowStarted = true; } SingleImageData image = imageDatas[i]; html.Append("<td>"); html.Append(renderThumbnail(placeholderData, image, langToRenderFor)); if (CmsContext.currentPage.currentUserCanWrite) { CmsPage pageContainingImage = image.getPageContainingImage(pagesToGatherImagesFrom); if (pageContainingImage != null) { html.Append("<br />"); html.Append("<a title=\"found on page '" + pageContainingImage.Title.Replace("\"", "") + "'\" href=\"" + pageContainingImage.Url + "\">( found here )</a>"); } } html.Append("</td>" + Environment.NewLine); } // for if (rowStarted) { html.Append("</tr>"); } html.Append("</table>" + Environment.NewLine); } // else html.Append("<p>" + pagerHtml + "</p>"); return(html.ToString()); } // RenderView
private string renderThumbnail(SingleImageGalleryPlaceholderData placeholderData, SingleImageData img, CmsLanguage langToRenderFor) { string fullDisplayUrl = ""; Dictionary <string, string> pageParams = new Dictionary <string, string>(); pageParams.Add("galleryimage", img.SingleImageId.ToString()); fullDisplayUrl = CmsContext.currentPage.getUrl(pageParams); SingleImageDisplayInfo displayInfo = new SingleImageDisplayInfo(); displayInfo.FullImageDisplayUrl = fullDisplayUrl; displayInfo.PopupDisplayBox = new System.Drawing.Size(-1, -1); displayInfo.ImagePath = img.ImagePath; displayInfo.ThumbImageDisplayBox = new System.Drawing.Size(placeholderData.ThumbImageDisplayBoxWidth, placeholderData.ThumbImageDisplayBoxHeight); displayInfo.Caption = img.Caption; displayInfo.Credits = img.Credits; int fullImageBoxWidth = -1; int fullImageBoxHeight = -1; if (placeholderData.OverrideFullDisplayBoxSize) { fullImageBoxWidth = placeholderData.FullSizeDisplayBoxWidth; fullImageBoxHeight = placeholderData.FullSizeDisplayBoxHeight; } else { fullImageBoxWidth = CmsConfig.getConfigValue("SingleImage.FullSizeDisplayWidth", -1); fullImageBoxHeight = CmsConfig.getConfigValue("SingleImage.FullSizeDisplayHeight", -1); } displayInfo.FullImageDisplayBox = new System.Drawing.Size(fullImageBoxWidth, fullImageBoxHeight); // -- Multilingual CreditsPromptPrefix string creditPrefix = CmsConfig.getConfigValue("SingleImage.CreditsPromptPrefix", ""); string[] creditPrefixParts = creditPrefix.Split(new char[] { CmsConfig.PerLanguageConfigSplitter }, StringSplitOptions.RemoveEmptyEntries); if (creditPrefixParts.Length >= CmsConfig.Languages.Length) { int index = CmsLanguage.IndexOf(langToRenderFor.shortCode, CmsConfig.Languages); if (index >= 0) { creditPrefix = creditPrefixParts[index]; } } // -- Multilingual ClickToEnlargeText string clickToEnlargeText = CmsConfig.getConfigValue("SingleImage.ClickToEnlargeText", ""); string[] clickToEnlargeTextParts = clickToEnlargeText.Split(new char[] { CmsConfig.PerLanguageConfigSplitter }, StringSplitOptions.RemoveEmptyEntries); if (clickToEnlargeTextParts.Length >= CmsConfig.Languages.Length) { int index = CmsLanguage.IndexOf(langToRenderFor.shortCode, CmsConfig.Languages); if (index >= 0) { clickToEnlargeText = clickToEnlargeTextParts[index]; } } displayInfo.CreditsPromptPrefix = creditPrefix; displayInfo.ClickToEnlargeText = clickToEnlargeText; string displayTemplate = "<a href=\"{5}\"><img src=\"{2}\" width=\"{0}\" height=\"{1}\" /></a>"; displayTemplate = CmsConfig.getConfigValue("SingleImage.WithLinkTemplate", displayTemplate); displayInfo.ThumbDisplayWithLinkTemplate = displayTemplate; displayInfo.ThumbDisplayWithoutLinkTemplate = displayTemplate; return(SingleImage.getStandardHtmlView(displayInfo)); }
} // RenderView private string renderSinglePageDisplayOfImage(SingleImageGalleryPlaceholderData placeholderData, SingleImageData imageToShow, SingleImageData[] imageDatas, CmsPage[] pagesToGatherImagesFrom) { string nextUrl = ""; string prevUrl = ""; for (int i = 0; i < imageDatas.Length; i++) { if (imageToShow.SingleImageId == imageDatas[i].SingleImageId) { Dictionary <string, string> pageParams = new Dictionary <string, string>(); if (i > 0) { pageParams.Add("galleryimage", imageDatas[i - 1].SingleImageId.ToString()); prevUrl = CmsContext.currentPage.getUrl(pageParams); } if (i < imageDatas.Length - 1) { pageParams.Clear(); pageParams.Add("galleryimage", imageDatas[i + 1].SingleImageId.ToString()); nextUrl = CmsContext.currentPage.getUrl(pageParams); } break; } } // for List <string> navLinks = new List <string>(); if (prevUrl != "") { navLinks.Add("<a href=\"" + prevUrl + "\">« prev</a>"); } int currentPageNum = getCurrentPageNumber(imageDatas, imageToShow, placeholderData); navLinks.Add("<a href=\"" + getPagerUrl(currentPageNum, placeholderData) + "\">return to gallery</a>"); if (nextUrl != "") { navLinks.Add("<a href=\"" + nextUrl + "\">next »</a>"); } StringBuilder html = new StringBuilder(); html.Append("<div class=\"SingleImageGallery SingleImageDisplay\">"); html.Append("<p class=\"pager\">"); html.Append(String.Join(" | ", navLinks.ToArray())); if (imageToShow.Caption.Trim() != "") { html.Append("<div class=\"caption top\">"); html.Append(imageToShow.Caption); html.Append("</div>"); // caption } html.Append("</p>"); int fullImageBoxWidth = CmsConfig.getConfigValue("SingleImage.FullSizeDisplayWidth", -1); int fullImageBoxHeight = CmsConfig.getConfigValue("SingleImage.FullSizeDisplayHeight", -1); if (placeholderData.OverrideFullDisplayBoxSize) { fullImageBoxWidth = placeholderData.FullSizeDisplayBoxWidth; fullImageBoxHeight = placeholderData.FullSizeDisplayBoxHeight; } string imgUrl = showThumbPage.getThumbDisplayUrl(imageToShow.ImagePath, fullImageBoxWidth, fullImageBoxHeight); System.Drawing.Size imgSize = showThumbPage.getDisplayWidthAndHeight(imageToShow.ImagePath, fullImageBoxWidth, fullImageBoxHeight); string width = ""; string height = ""; if (!imgSize.IsEmpty) { width = " width=\"" + imgSize.Width + "\""; height = " height=\"" + imgSize.Height.ToString() + "\""; } html.Append("<img src=\"" + imgUrl + "\"" + width + "" + height + ">"); if (imageToShow.Caption.Trim() != "") { html.Append("<div class=\"caption bottom\">"); html.Append(imageToShow.Caption); html.Append("</div>"); // caption } if (imageToShow.Credits.Trim() != "") { html.Append("<div class=\"credits\">"); string creditsPrefix = CmsConfig.getConfigValue("SingleImage.CreditsPrefix", ""); html.Append(creditsPrefix + imageToShow.Credits); html.Append("</div>"); // credits } html.Append("</div>"); return(html.ToString()); }