public bool saveUpdatedImageGallery(CmsPage page, int identifier, ImageGalleryData data) { string sql = "update imagegallery set "; sql += "subDir = \"" + dbEncode(data.subDir) + "\", "; sql += "thumbSize = " + data.thumbSize.ToString() + ", "; sql += "largeSize = " + data.largeSize.ToString() + ", "; sql += "numThumbsPerRow = " + data.numThumbsPerRow.ToString() + " "; sql += " where pageid= " + page.Id.ToString(); sql += " AND identifier = " + identifier.ToString() + "; "; //sql = sql + " SELECT LAST_INSERT_ID() as newId;"; int numAffected = this.RunUpdateQuery(sql); if (numAffected > 0) { bool b = InsertOrUpdateImageGalleryImages(page, identifier, data); if (b) { return(page.setLastUpdatedDateTimeToNow()); } else { return(false); } } else { return(false); } }
} // InsertOrUpdateImageGalleryImages public bool createNewImageGallery(CmsPage page, int identifier, ImageGalleryData data) { string sql = "insert into imagegallery (pageid, identifier, subDir, thumbSize, largeSize, numThumbsPerRow ) values ("; sql = sql + page.Id.ToString() + "," + identifier.ToString() + ","; sql += "\"" + dbEncode(data.subDir) + "\", "; sql += data.thumbSize.ToString() + ", "; sql += data.largeSize.ToString() + ", "; sql += data.numThumbsPerRow.ToString() + " "; sql += "); "; int newId = this.RunInsertQuery(sql); if (newId > -1) { data.ImageGalleryId = newId; bool b = InsertOrUpdateImageGalleryImages(page, identifier, data); if (b) { return(page.setLastUpdatedDateTimeToNow()); } else { return(false); } } else { return(false); } }
public ImageGalleryData getImageGallery(CmsPage page, int identifier, bool createNewIfDoesNotExist) { if (page.Id < 0 || identifier < 0) { return(new ImageGalleryData()); } string sql = ""; sql = "select g.ImageGalleryId, g.subDir, g.thumbSize, g.largeSize, g.numThumbsPerRow, i.ImageGalleryImageId, i.Caption, I.Filename from imagegallery g left join imagegalleryimages i on i.ImageGalleryId = g.ImageGalleryId"; sql += " where g.pageid = " + page.Id.ToString() + " and g.identifier = " + identifier.ToString() + " and g.deleted is null;"; DataSet ds = this.RunSelectQuery(sql); if (this.hasRows(ds)) { ImageGalleryData data = new ImageGalleryData(); DataRow dr = ds.Tables[0].Rows[0]; data.ImageGalleryId = Convert.ToInt32(dr["ImageGalleryId"]); data.subDir = (dr["subDir"].ToString().Trim()); data.thumbSize = Convert.ToInt32(dr["thumbSize"]); data.largeSize = Convert.ToInt32(dr["largeSize"]); data.numThumbsPerRow = Convert.ToInt32(dr["numThumbsPerRow"]); foreach (DataRow r in ds.Tables[0].Rows) { if (r["ImageGalleryImageId"] != System.DBNull.Value && r["ImageGalleryImageId"] != null) { ImageGalleryImageData img = new ImageGalleryImageData(); img.Filename = r["Filename"].ToString(); img.Caption = r["Caption"].ToString(); img.ImageGalleryImageId = Convert.ToInt32(r["ImageGalleryImageId"]); data.addImage(img); } } return(data); } else { if (createNewIfDoesNotExist) { ImageGalleryData data = new ImageGalleryData(); bool b = createNewImageGallery(page, identifier, data); if (!b) { throw new Exception("getImageGallery database error: Error creating new placeholder"); } else { return(data); } } else { throw new Exception("getImageGallery database error: placeholder does not exist"); } } } // getImageGallery
} // getImageGallery private bool InsertOrUpdateImageGalleryImages(CmsPage page, int identifier, ImageGalleryData data) { if (data.ImageGalleryId < 0) { return(false); } foreach (ImageGalleryImageData img in data.ImageData) { if (img.ImageGalleryImageId < 0) { // -- insert string sql = "Insert into imagegalleryimages (ImageGalleryId, Caption, Filename) VALUES "; sql += "("; sql += data.ImageGalleryId.ToString() + ", "; sql += "\"" + this.dbEncode(img.Caption) + "\", "; sql += "\"" + dbEncode(img.Filename) + "\" "; sql += ")"; int newId = this.RunInsertQuery(sql); if (newId < 0) { return(false); } else { img.ImageGalleryImageId = newId; // continue } } else { // -- update string sql = "Update imagegalleryimages SET "; sql += "ImageGalleryId = " + data.ImageGalleryId.ToString() + ", "; sql += "Caption = \"" + img.Caption + "\", "; sql += "Filename = \"" + img.Filename + "\" "; sql += " where ImageGalleryImageId = " + img.ImageGalleryImageId; int numAffected = this.RunUpdateQuery(sql); if (numAffected < 0) { return(false); } // else continue } } // foreach return(true); } // InsertOrUpdateImageGalleryImages
private string getHtmlForThumbView(CmsPage page, ImageGalleryData data, string ImageGalleryId, bool inEditMode) { StringBuilder html = new StringBuilder(); string DirOnDiskToView = getDirOnDiskToView(data); if (!Directory.Exists(DirOnDiskToView)) { return("Error with Image Gallery: ImageGallery directory does not exist!"); } string[] JPGFiles = Directory.GetFiles(DirOnDiskToView, "*.jpg"); if (JPGFiles.Length < 1) { return("no images are in this image gallery"); } html.Append("<table>"); int imgCount = 0; ArrayList formCaptionNames = new ArrayList(); foreach (string jpg in JPGFiles) { if (imgCount % data.numThumbsPerRow == 0) { html.Append("<tr>"); } string imgFilenameUnderAppPath = data.subDir + Path.GetFileName(jpg); string thumbUrl = CmsContext.UserInterface.ShowThumbnailPage.getThumbDisplayUrl(imgFilenameUnderAppPath, data.thumbSize, -1); ImageGalleryImageData imgData = data.getImageData(imgFilenameUnderAppPath); NameValueCollection imgParams = new NameValueCollection(); imgParams.Add("galleryMode", Convert.ToInt32(RenderMode.FullSize).ToString()); imgParams.Add("galleryImg", Path.GetFileName(jpg)); string fullSizeUrl = CmsContext.getUrlByPagePath(page.Path, imgParams); html.Append("<td class=\"ImageGalleryImage_td\">"); if (!inEditMode) { html.Append("<a class=\"ImageGalleryImageLink\" href=\"" + fullSizeUrl + "\">"); } html.Append("<img class=\"ImageGalleryImage\" src=\"" + thumbUrl + "\">"); if (!inEditMode) { html.Append("</a>"); } html.Append("<br>"); if (inEditMode) { string tbName = System.Web.HttpUtility.UrlEncode("imgCaption" + ImageGalleryId + "_" + imgFilenameUnderAppPath); formCaptionNames.Add(tbName); string tb = PageUtils.getInputTextHtml(tbName, tbName, imgData.Caption, 15, 255); tb = "<nobr>caption: " + tb + "</nobr>"; html.Append(tb); } else { html.Append(imgData.Caption); } html.Append("</td>"); if (imgCount % data.numThumbsPerRow == data.numThumbsPerRow) { html.Append("</tr>"); } imgCount++; } if (imgCount % data.numThumbsPerRow != data.numThumbsPerRow) { html.Append("</tr>"); } html.Append("</table>"); if (inEditMode) { string csv = ""; foreach (string id in formCaptionNames) { csv = csv + id + ","; } string h = PageUtils.getHiddenInputHtml(ImageGalleryId + "_captions", csv); html.Append(h); } return(html.ToString()); } // getHtmlForThumbView
} // RenderView private string getDirOnDiskToView(ImageGalleryData data) { return(System.Web.Hosting.HostingEnvironment.MapPath(CmsContext.ApplicationPath + data.subDir)); }
} // RenderEdit public override void RenderInViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList) { ImageGalleryData data = new ImageGalleryData(); data.subDir = "images" + DirSeperator + "ImageGallery" + DirSeperator; data.thumbSize = 200; data.largeSize = 500; data.numThumbsPerRow = 3; ImageGalleryDb db = new ImageGalleryDb(); data = db.getImageGallery(page, identifier, true); if (!data.subDir.EndsWith(DirSeperator)) { data.subDir += DirSeperator; } if (currentViewRenderMode == RenderMode.FullSize) { // -- render full size writer.Write("<div class=\"ImageGallery FullSize\">"); string jpg = PageUtils.getFromForm("galleryImg", ""); if (jpg == "") { writer.Write("Invalid galleryImg parameter"); return; } string imgCaption = ""; int currentImageDataIndex = -1; for (int i = 0; i < data.ImageData.Length; i++) { ImageGalleryImageData d = data.ImageData[i]; if (Path.GetFileName(d.Filename) == Path.GetFileName(jpg) || d.Filename == jpg) { imgCaption = "<p align=\"center\" class=\"caption full\">" + d.Caption + "</p>"; currentImageDataIndex = i; break; } } string imgFilenameUnderAppPath = data.subDir + Path.GetFileName(jpg); string largeUrl = CmsContext.UserInterface.ShowThumbnailPage.getThumbDisplayUrl(imgFilenameUnderAppPath, data.largeSize, -1); string backUrl = CmsContext.getUrlByPagePath(page.Path); writer.Write("<p class=\"ImageGalleryBackLink\"><a class=\"ImageGalleryBackLink\" href=\"" + backUrl + "\">« back to thumbnails</a><p>"); List <string> nextPrevLinks = new List <string>(); if (currentImageDataIndex > 0) { NameValueCollection prevImgParams = new NameValueCollection(); prevImgParams.Add("galleryMode", Convert.ToInt32(RenderMode.FullSize).ToString()); prevImgParams.Add("galleryImg", Path.GetFileName(data.ImageData[currentImageDataIndex - 1].Filename)); string prevUrl = CmsContext.getUrlByPagePath(page.Path, prevImgParams); string prevHtml = "<a class=\"ImageGalleryBackLink prev\" href=\"" + prevUrl + "\">« prev</a>"; nextPrevLinks.Add(prevHtml); } if (data.ImageData.Length > 1 && currentImageDataIndex < (data.ImageData.Length - 1)) { NameValueCollection nextImgParams = new NameValueCollection(); nextImgParams.Add("galleryMode", Convert.ToInt32(RenderMode.FullSize).ToString()); nextImgParams.Add("galleryImg", Path.GetFileName(data.ImageData[currentImageDataIndex + 1].Filename)); string nextUrl = CmsContext.getUrlByPagePath(page.Path, nextImgParams); string nextHtml = "<a class=\"ImageGalleryBackLink next\" href=\"" + nextUrl + "\">next »</a>"; nextPrevLinks.Add(nextHtml); } if (nextPrevLinks.Count > 0) { writer.Write("<p class=\"ImageGalleryBackLink\">" + string.Join(" | ", nextPrevLinks.ToArray()) + "</p>"); } writer.Write("<img class=\"ImageGalleryFullSizedImage\" src=\"" + largeUrl + "\">"); writer.WriteLine(imgCaption); } else { // -- render the directory writer.Write("<div class=\"ImageGallery thumbnails\">"); string ImageGalleryId = "ImageGallery_" + page.Id.ToString() + "_" + identifier.ToString(); string thumbViewHtml = getHtmlForThumbView(page, data, ImageGalleryId, false); writer.WriteLine(thumbViewHtml); } // render directory writer.Write("</div>"); } // RenderView
public override void RenderInEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList) { ImageGalleryDb db = new ImageGalleryDb(); ImageGalleryData data = new ImageGalleryData(); data.subDir = ""; data.thumbSize = 200; data.largeSize = 500; data.numThumbsPerRow = 3; data = db.getImageGallery(page, identifier, true); string ImageGalleryId = "ImageGallery_" + page.Id.ToString() + "_" + identifier.ToString(); // ------- CHECK THE FORM FOR ACTIONS string action = Hatfield.Web.Portal.PageUtils.getFromForm(ImageGalleryId + "_Action", ""); if (action.Trim().ToLower() == "update") { data.ImageGalleryId = PageUtils.getFromForm(ImageGalleryId + "_DataId", -1); data.subDir = PageUtils.getFromForm("subDir_" + ImageGalleryId, ""); data.thumbSize = PageUtils.getFromForm("thumbSize_" + ImageGalleryId, data.thumbSize); data.largeSize = PageUtils.getFromForm("largeSize_" + ImageGalleryId, data.largeSize); data.numThumbsPerRow = PageUtils.getFromForm("numThumbsPerRow_" + ImageGalleryId, data.numThumbsPerRow); string[] captionIds = PageUtils.getFromForm(ImageGalleryId + "_captions"); foreach (string captionId in captionIds) { // captionId is in the form // "imgCaption"+ImageGalleryId+"_"+imgFilenameUnderAppPath; if (captionId != "") { string capId = System.Web.HttpUtility.UrlDecode(captionId); if (capId.StartsWith("imgCaption" + ImageGalleryId + "_")) { string imgFilenameUnderAppPath = capId.Substring(("imgCaption" + ImageGalleryId + "_").Length); string caption = PageUtils.getFromForm(System.Web.HttpUtility.UrlEncode(capId), ""); ImageGalleryImageData img = data.getImageData(imgFilenameUnderAppPath); img.Caption = caption; img.Filename = imgFilenameUnderAppPath; if (img.ImageGalleryImageId < 0) { data.addImage(img); } } } } db.saveUpdatedImageGallery(page, identifier, data); } // ------- START RENDERING // note: no need to put in the <form></form> tags. StringBuilder html = new StringBuilder(); html.Append("<strong>Image Gallery Settings:</strong><br>"); html.Append("<table>"); string[] subDirs = getAllAvailableSubDirs(); string s = PageUtils.getDropDownHtml("subDir_" + ImageGalleryId, "subDir_" + ImageGalleryId, subDirs, data.subDir); html.Append("<tr><td>Image SubDirectory:</td>"); html.Append("<td>" + s + "</td></tr>"); s = PageUtils.getInputTextHtml("numThumbsPerRow_" + ImageGalleryId, "numThumbsPerRow_" + ImageGalleryId, data.numThumbsPerRow.ToString(), 3, 5); html.Append("<tr><td>Number of Thumbnails per row:</td>"); html.Append("<td>" + s + "</td></tr>"); s = PageUtils.getInputTextHtml("thumbSize_" + ImageGalleryId, "thumbSize_" + ImageGalleryId, data.thumbSize.ToString(), 3, 5); html.Append("<tr><td>Thumbnail Size:</td>"); html.Append("<td>" + s + "</td></tr>"); s = PageUtils.getInputTextHtml("largeSize_" + ImageGalleryId, "largeSize_" + ImageGalleryId, data.largeSize.ToString(), 3, 5); html.Append("<tr><td>Full-Sized Image size:</td>"); html.Append("<td>" + s + "</td></tr>"); html.Append("</table>"); string thumbViewHtml = getHtmlForThumbView(page, data, ImageGalleryId, true); writer.WriteLine(thumbViewHtml); html.Append("<input type=\"hidden\" name=\"" + ImageGalleryId + "_Action\" value=\"update\">"); html.Append("<input type=\"hidden\" name=\"" + ImageGalleryId + "_DataId\" value=\"" + data.ImageGalleryId.ToString() + "\">"); writer.WriteLine(html.ToString()); } // RenderEdit