Пример #1
0
        public override Rss.RssItem[] GetRssFeedItems(CmsPage page, CmsPlaceholderDefinition placeholderDefinition, CmsLanguage langToRenderFor)
        {
            List <Rss.RssItem> ret = new List <Rss.RssItem>();

            UserImageGalleryDb db = (new UserImageGalleryDb());

            UserImageGalleryPlaceholderData placeholderData = db.getUserImageGalleryPlaceholderData(page, placeholderDefinition.Identifier, langToRenderFor, true);
            string imageStorageDir = placeholderData.getImageStorageDirectory(page);

            CmsLocalImageOnDisk[] allResources = CmsLocalImageOnDisk.FetchAllImagesInDirectory(imageStorageDir, UserImageGalleryPlaceholderData.ImageExtensionsToDisplay);

            foreach (CmsLocalImageOnDisk image in allResources)
            {
                Rss.RssItem item  = new Rss.RssItem();
                string      title = image.getImageCaption();
                if (title == "")
                {
                    title = image.FileName;
                }
                item.Title = title;

                Dictionary <string, string> pageParams = new Dictionary <string, string>();
                pageParams.Add(UrlParamName, image.ResourceId.ToString());
                item.Link = new Uri(page.getUrl(pageParams));


                item.Description = renderFullSize(placeholderData, image, page, langToRenderFor);

                ret.Add(item);
            } // foreach


            return(ret.ToArray());
        }
Пример #2
0
        public override string Render()
        {
            StringBuilder html = new StringBuilder();

            string thumbDir = CmsContext.UserInterface.ShowThumbnailPage.ThumbImageCacheDirectory;

            FileInfo[] files = (new DirectoryInfo(thumbDir)).GetFiles();
            html.Append("Attempting to delete " + files.Length + " files in the thumbnail cache...<br>");
            int deleted = 0;

            foreach (FileInfo f in files)
            {
                try
                {
                    f.Delete();
                    deleted++;
                }
                catch
                { }
            } // foreach

            int numCached = CmsLocalImageOnDisk.DeleteAllCachedThumbnailUrls();

            html.Append(deleted.ToString() + " files and " + numCached + " URLs in the thumbnail cache have been deleted.<br>");



            return(html.ToString());
        }
Пример #3
0
        public void RenderSelectedItem_InViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            UserImageGalleryDb db   = (new UserImageGalleryDb());
            StringBuilder      html = new StringBuilder();

            UserImageGalleryPlaceholderData placeholderData = db.getUserImageGalleryPlaceholderData(page, identifier, langToRenderFor, true);
            CmsLocalImageOnDisk             currentImage    = getCurrentImageResource();

            CmsLocalImageOnDisk[] allResources = CmsLocalImageOnDisk.FetchAllImagesInDirectory(placeholderData.getImageStorageDirectory(page), UserImageGalleryPlaceholderData.ImageExtensionsToDisplay);

            string action = PageUtils.getFromForm("action_" + currentImage.ResourceId.ToString(), "");

            if (String.Compare(action, "updateCaption", true) == 0)
            {
                string newCaption = PageUtils.getFromForm("caption_" + currentImage.ResourceId.ToString(), "");
                currentImage.setImageCaption(newCaption);
                currentImage.SaveToDatabase();
            }
            else if (String.Compare(action, "deleteImage", true) == 0)
            {
                bool b = CmsLocalImageOnDisk.Delete(currentImage, true);
                html.Append("<div class=\"UserImageGallery\">" + getImageRemovedText(langToRenderFor) + " <a href=\"" + page.Url + "\">" + getReturnToGalleryText(langToRenderFor) + "</a></div>");
                writer.Write(html.ToString());
                return;
            }

            html.Append("<div class=\"UserImageGallery\">");
            html.Append(getSelectedItem_NextPrevLinks(placeholderData, currentImage, allResources, langToRenderFor));
            html.Append(renderFullSize(placeholderData, currentImage, page, langToRenderFor));
            html.Append("</div>");

            writer.Write(html.ToString());
        }
        protected override void Render(HtmlTextWriter writer)
        {
            CmsLanguage   lang               = CmsContext.currentLanguage;
            string        imgText            = CmsConfig.getConfigValue("UserImageGallery.ImageText", "Number of images", lang);
            string        noGalleryText      = CmsConfig.getConfigValue("UserImageGallery.NoGalleryText", "No image galleries are currently available", lang);
            CmsPage       galleryPage        = CmsContext.currentPage;
            int           numGalleriesOutput = 0;
            StringBuilder html               = new StringBuilder();

            CmsPage[] sortedPages = CmsPage.SortPagesBySortOrdinal(galleryPage.ChildPages);
            for (int i = sortedPages.Length - 1; i >= 0; i--)
            {
                CmsPage g = sortedPages[i];
                if (true) // g.showInMenu
                {
                    UserImageGalleryDb db = new UserImageGalleryDb();
                    UserImageGalleryPlaceholderData data = new UserImageGalleryPlaceholderData();
                    data = db.getUserImageGalleryPlaceholderData(g, 1, CmsContext.currentLanguage, true);

                    string dirOnDiskToView = data.getImageStorageDirectory(g);

                    if (Directory.Exists(dirOnDiskToView))
                    {
                        DirectoryInfo di = new DirectoryInfo(dirOnDiskToView);

                        int update = Hatfield.Web.Portal.PageUtils.getFromForm("update", 0);
                        if (update == 1 && g.currentUserCanWrite)
                        {
                            CmsLocalImageOnDisk[] updates = CmsLocalImageOnDisk.UpdateFolderInDatabase(di);
                        }

                        CmsLocalImageOnDisk[] allResources = CmsLocalImageOnDisk.FetchAllImagesInDirectory(di, UserImageGalleryPlaceholderData.ImageExtensionsToDisplay);

                        if (allResources.Length >= 1)
                        {
                            numGalleriesOutput++;

                            string thumbUrl = showThumbPage.getThumbDisplayUrl(allResources[0], 100, 100);;
                            html.Append("<tr><td><a href=\"" + g.Url + "\"><img border=\"0\" src=\"" + thumbUrl + "\"></a></td><td><a href=\"" + g.Url + "\">" + g.Title + "</a><br />(" + allResources.Length + " images)</td></tr>");
                        }
                    }
                }
            } // foreach

            if (numGalleriesOutput > 0)
            {
                writer.Write("<table cellspacing=\"10\">");
                writer.Write(html.ToString());

                writer.Write("</table>");
            }
            else
            {
                writer.Write("<em>" + noGalleryText + "</em>");
            }
        }
Пример #5
0
        /// <summary>
        /// returns a blank (newly created) resource if not found
        /// </summary>
        /// <returns></returns>
        private CmsLocalImageOnDisk getCurrentImageResource()
        {
            int resId = getCurrentImageResourceId();

            if (resId >= 0)
            {
                return(CmsLocalImageOnDisk.FetchLastRevision(resId));
            }
            return(new CmsLocalImageOnDisk());
        }
Пример #6
0
        public PlaceholderDisplay getCurrentDisplayMode()
        {
            CmsLocalImageOnDisk r = getCurrentImageResource();

            if (r.ResourceId < 0)
            {
                return(PlaceholderDisplay.MultipleItems);
            }
            else
            {
                return(PlaceholderDisplay.SelectedItem);
            }
        }
Пример #7
0
        public void RenderSelectedItem_InEditMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            UserImageGalleryDb db   = (new UserImageGalleryDb());
            StringBuilder      html = new StringBuilder();

            UserImageGalleryPlaceholderData placeholderData = db.getUserImageGalleryPlaceholderData(page, identifier, langToRenderFor, true);
            CmsLocalImageOnDisk             currentImage    = getCurrentImageResource();

            html.Append("<div class=\"UserImageGallery\">");
            html.Append(renderFullSize(placeholderData, currentImage, page, langToRenderFor));
            html.Append("</div>");

            writer.Write(html.ToString());
        }
Пример #8
0
        public void RenderMultipleItems_InViewMode(HtmlTextWriter writer, CmsPage page, int identifier, CmsLanguage langToRenderFor, string[] paramList)
        {
            UserImageGalleryDb db   = (new UserImageGalleryDb());
            StringBuilder      html = new StringBuilder();

            UserImageGalleryPlaceholderData placeholderData = db.getUserImageGalleryPlaceholderData(page, identifier, langToRenderFor, true);
            string imageStorageDir = placeholderData.getImageStorageDirectory(page);

            if (!System.IO.Directory.Exists(imageStorageDir))
            {
                bool b = placeholderData.createImageStorageDirectory(page);
                if (!b)
                {
                    if (CmsContext.currentUserIsSuperAdmin)
                    {
                        html.Append("<h1>System Error: could not create image storage directory: '" + imageStorageDir + "'</h1>");
                    }
                    else
                    {
                        html.Append("<h1>System Error: could not create image storage directory!!</h1>");
                    }
                    writer.Write(html.ToString());
                    return;
                }
            }

            CmsLocalImageOnDisk[] allResources = CmsLocalImageOnDisk.FetchAllImagesInDirectory(imageStorageDir, UserImageGalleryPlaceholderData.ImageExtensionsToDisplay);

            if (allResources.Length == 0 && page.currentUserCanWrite)
            {
                CmsLocalImageOnDisk.UpdateFolderInDatabase(new System.IO.DirectoryInfo(imageStorageDir));
                allResources = CmsLocalImageOnDisk.FetchAllImagesInDirectory(imageStorageDir, UserImageGalleryPlaceholderData.ImageExtensionsToDisplay);
            }

            html.Append("<div class=\"UserImageGallery\">");
            html.Append(getGalleryView(placeholderData, allResources, page, langToRenderFor));
            html.Append("</div>");

            if (page.currentUserCanWrite)
            {
                html.Append(getSwfUploadHtml(page, placeholderData, langToRenderFor));
            }

            writer.Write(html.ToString());
        }
Пример #9
0
        } // RenderView

        private int getCurrentPageNumber(CmsLocalImageOnDisk[] searchResults, CmsLocalImageOnDisk imageToShow, UserImageGalleryPlaceholderData placeholderData)
        {
            int numPages = (int)Math.Ceiling((double)searchResults.Length / placeholderData.NumThumbsPerPage);

            if (numPages <= 0)
            {
                numPages = 1;
            }

            int startAtItemNumber = 0;

            if (imageToShow != null && imageToShow.ResourceId >= 0)
            {
                for (int i = 0; i < searchResults.Length; i++)
                {
                    if (searchResults[i].ResourceId == imageToShow.ResourceId)
                    {
                        int rem = 0;
                        Math.DivRem(i, placeholderData.NumThumbsPerPage, out rem);
                        startAtItemNumber = i - rem;
                        break;
                    }
                }
            }
            else
            {
                startAtItemNumber = PageUtils.getFromForm("ugp", 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);
        }
Пример #10
0
        /// <summary>
        /// returns the number of image galleries updated.
        /// </summary>
        /// <returns></returns>
        public static int UpdateDatabaseCacheOfImageInfos()
        {
            // -- Update the CmsLocalImageOnDisk database cache from the disk source.
            int ret = 0;
            UserImageGalleryDb db = (new UserImageGalleryDb());

            UserImageGalleryPlaceholderData[] phs = db.getAllUserImageGalleryPlaceholderDatas();
            foreach (UserImageGalleryPlaceholderData ph in phs)
            {
                CmsPage p = CmsContext.getPageById(ph.PageId);
                if (p.ID >= 0)
                {
                    string dir = ph.getImageStorageDirectory(p);
                    if (dir != String.Empty)
                    {
                        CmsLocalImageOnDisk[] updates = CmsLocalImageOnDisk.UpdateFolderInDatabase(new System.IO.DirectoryInfo(dir));
                        ret++;
                    } // if
                }     // if
            }         // foreach
            return(ret);
        }
Пример #11
0
        public string getGalleryView(UserImageGalleryPlaceholderData placeholderData, CmsLocalImageOnDisk[] imageDatas, CmsPage page, CmsLanguage lang)
        {
            if (imageDatas.Length == 0)
            {
                return("<p><strong>" + getEmptyGalleryText(lang) + "</strong></p>");
            }

            StringBuilder html = new StringBuilder();

            string pagerHtml = getThumbnailPagerOutput(imageDatas, placeholderData, lang);

            html.Append("<p>" + pagerHtml + "</p>");

            int startAtItemNumber = PageUtils.getFromForm("ugp", 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], page));
            }
            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;
                    }

                    CmsLocalImageOnDisk image = imageDatas[i];
                    html.Append("<td>");
                    html.Append(renderThumbnail(placeholderData, image, page));
                    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
Пример #12
0
        private string renderThumbnail(UserImageGalleryPlaceholderData placeholderData, CmsLocalImageOnDisk img, CmsPage page)
        {
            string caption = img.getImageCaption();

            StringBuilder html = new StringBuilder();

            html.Append("<div class=\"image\">");

            if (caption.Trim() != "" && (
                    placeholderData.CaptionLocation == UserImageGalleryPlaceholderData.CaptionDisplayLocation.Top ||
                    placeholderData.CaptionLocation == UserImageGalleryPlaceholderData.CaptionDisplayLocation.TopAndBottom))
            {
                html.Append("<div class=\"caption top\">");
                html.Append(caption);
                html.Append("</div>"); // caption
            }


            string imgTag = img.getImageHtmlTag(placeholderData.ThumbnailDisplayBoxWidth, placeholderData.ThumbnailDisplayBoxHeight, "");

            Dictionary <string, string> pageParams = new Dictionary <string, string>();

            pageParams.Add(UrlParamName, img.ResourceId.ToString());
            html.Append("<a href=\"" + page.getUrl(pageParams) + "\">");
            html.Append(imgTag);
            html.Append("</a>");


            if (caption.Trim() != "" && (
                    placeholderData.CaptionLocation == UserImageGalleryPlaceholderData.CaptionDisplayLocation.Bottom ||
                    placeholderData.CaptionLocation == UserImageGalleryPlaceholderData.CaptionDisplayLocation.TopAndBottom))
            {
                html.Append("<div class=\"caption bottom\">");
                html.Append(caption);
                html.Append("</div>"); // caption
            }

            html.Append("</div>");

            return(html.ToString());
        }
Пример #13
0
        private string renderFullSize(UserImageGalleryPlaceholderData placeholderData, CmsLocalImageOnDisk imgToShow, CmsPage page, CmsLanguage lang)
        {
            string caption = imgToShow.getImageCaption();

            StringBuilder html = new StringBuilder();

            html.Append("<div class=\"image\">");

            if (caption.Trim() != "" && (
                    placeholderData.CaptionLocation == UserImageGalleryPlaceholderData.CaptionDisplayLocation.Top ||
                    placeholderData.CaptionLocation == UserImageGalleryPlaceholderData.CaptionDisplayLocation.TopAndBottom))
            {
                html.Append("<div class=\"caption top\">");
                html.Append(caption);
                html.Append("</div>"); // caption
            }


            string imgTag = imgToShow.getImageHtmlTag(placeholderData.FullSizeDisplayBoxWidth, placeholderData.FullSizeDisplayBoxHeight, "");

            html.Append(imgTag);

            if (page.currentUserCanWrite)
            {
                html.Append("<div class=\"caption bottom\">");
                string formId = "userImageGallery";
                html.Append(page.getFormStartHtml(formId));
                html.Append(PageUtils.getHiddenInputHtml(UserImageGallery.UrlParamName, imgToShow.ResourceId.ToString()));
                html.Append(PageUtils.getHiddenInputHtml("action_" + imgToShow.ResourceId.ToString(), "updateCaption"));
                html.Append(PageUtils.getInputTextHtml("caption_" + imgToShow.ResourceId.ToString(), "caption_" + imgToShow.ResourceId.ToString(), caption, 40, 200));
                html.Append(" <input type=\"submit\" value=\"" + getSetCaptionText(lang) + "\">");
                html.Append(page.getFormCloseHtml(formId));
                html.Append("</div>"); // caption


                html.Append(page.getFormStartHtml(formId));
                html.Append(PageUtils.getHiddenInputHtml(UserImageGallery.UrlParamName, imgToShow.ResourceId.ToString()));
                html.Append(PageUtils.getHiddenInputHtml("action_" + imgToShow.ResourceId.ToString(), "deleteImage"));
                html.Append("<p align=\"right\">");
                html.Append(" <input type=\"submit\" value=\"" + getRemoveImageText(lang) + "\">");
                html.Append("</p>");
                html.Append(page.getFormCloseHtml(formId));
            }
            else if (caption.Trim() != "" && (
                         placeholderData.CaptionLocation == UserImageGalleryPlaceholderData.CaptionDisplayLocation.Bottom ||
                         placeholderData.CaptionLocation == UserImageGalleryPlaceholderData.CaptionDisplayLocation.TopAndBottom))
            {
                html.Append("<div class=\"caption bottom\">");
                html.Append(caption);
                html.Append("</div>"); // caption
            }

            html.Append("</div>");

            return(html.ToString());
        }
Пример #14
0
        private string getSelectedItem_NextPrevLinks(UserImageGalleryPlaceholderData placeholderData, CmsLocalImageOnDisk imageToShow, CmsLocalImageOnDisk[] allImagesInGallery, CmsLanguage lang)
        {
            string nextUrl = "";

            string prevUrl = "";

            for (int i = 0; i < allImagesInGallery.Length; i++)
            {
                if (imageToShow.ResourceId == allImagesInGallery[i].ResourceId)
                {
                    Dictionary <string, string> pageParams = new Dictionary <string, string>();

                    if (i > 0)
                    {
                        pageParams.Add(UrlParamName, allImagesInGallery[i - 1].ResourceId.ToString());
                        prevUrl = CmsContext.currentPage.getUrl(pageParams);
                    }
                    if (i < allImagesInGallery.Length - 1)
                    {
                        pageParams.Clear();
                        pageParams.Add(UrlParamName, allImagesInGallery[i + 1].ResourceId.ToString());
                        nextUrl = CmsContext.currentPage.getUrl(pageParams);
                    }
                    break;
                }
            } // for



            List <string> navLinks = new List <string>();

            if (prevUrl != "")
            {
                navLinks.Add("<a href=\"" + prevUrl + "\">&#171; " + getPrevLinkText(lang) + "</a>");
            }

            int currentPageNum = getCurrentPageNumber(allImagesInGallery, imageToShow, placeholderData);

            navLinks.Add("<a href=\"" + getPagerUrl(currentPageNum, placeholderData) + "\">" + getReturnToGalleryText(lang) + "</a>");
            if (nextUrl != "")
            {
                navLinks.Add("<a href=\"" + nextUrl + "\">" + getNextLinkText(lang) + " &#187;</a>");
            }

            return("<p class=\"pager\">" + (String.Join(" | ", navLinks.ToArray())) + "</p>");
        }
        protected void FolderTreeView_SelectedNodeChanged(object sender, EventArgs e)
        {
            int imagesPerRow = 2;

            FolderTreeView.SelectedNode.Expand();


            DirectoryInfo di = new DirectoryInfo(FolderTreeView.SelectedNode.Value);

            CmsLocalImageOnDisk[] dirResources = CmsLocalImageOnDisk.UpdateFolderInDatabase(di);
            // CmsResource.GetResourcesInDirectory(di.FullName);

            CmsLocalImageOnDisk[] imgResources = FilterOutNonImageFiles(dirResources);



            StringBuilder html      = new StringBuilder();
            List <string> filenames = new List <string>();

            filenames.Add(di.FullName);
            int fileNum = 0; bool rowStarted = false;

            html.Append("<table cellpadding=\"2\" cellspacing=\"2\" width=\"100%\">");
            foreach (CmsLocalImageOnDisk res in imgResources)
            {
                bool updateResource = false;

                string imgHtmlTag = res.getImageHtmlTag(120, -1, "");
                // -- create the file's Url
                string fileUrl = res.getUrl(Context);


                string fiName = res.FileName;
                if (fiName.IndexOf("'") > -1)
                {
                    fiName  = fiName.Replace("'", "\\'");
                    fileUrl = fileUrl.Replace("'", "\\'");
                }


                if (!fileUrl.StartsWith(CmsContext.ApplicationPath))
                {
                    fileUrl = CmsContext.ApplicationPath + fileUrl;
                }


                int    phThumbWidth   = 999;
                int    phThumbHeight  = 222;
                string thumbUrlFormat = showThumbPage.getThumbDisplayUrl(res, phThumbWidth, phThumbHeight);
                thumbUrlFormat = thumbUrlFormat.Replace(phThumbWidth.ToString(), "{0}");
                thumbUrlFormat = thumbUrlFormat.Replace(phThumbHeight.ToString(), "{1}");

                if (fileNum % imagesPerRow == 0)
                {
                    if (rowStarted)
                    {
                        html.Append("</tr>");
                    }
                    html.Append("<tr>");
                }

                int[] dimensions = res.getImageDimensions();
                if (dimensions.Length != 2)
                {
                    dimensions = WebEditor.Helpers.InlineImageBrowser2.getImageDimensions(res.FilePath);
                    res.setImageDimensions(dimensions);
                    updateResource = true;
                }


                string imgId = "file_" + res.ResourceId.ToString();
                html.Append("<td align=\"center\">");
                string onclick = "doSelImg('" + imgId + "'); parent.selectImage('" + fiName + "','" + fileUrl + "'," + dimensions[0] + ", " + dimensions[1] + ", '" + thumbUrlFormat + "'); ";
                if (IsCKEditor)
                {
                    onclick = "ckSelImg('" + imgId + "', '" + fileUrl.Replace("'", "\\'") + "'," + dimensions[0] + ", " + dimensions[1] + ");";
                }
                html.Append(" <a href=\"#\" onclick=\"" + onclick + " return false;\">");

                html.Append(imgHtmlTag);

                html.Append("</a> ");
                html.Append("<br /><div style=\"font-family: arial; font-size: 8pt; text-align: center; width: 120px; overflow: hidden;\">" + res.FileName + "</div>");

                if (SelImagePath != "" && fileUrl == SelImagePath)
                {
                    html.Append("<script>" + onclick + "</script>" + Environment.NewLine);
                }

                html.Append("</td>");

                filenames.Add(res.FilePath);

                fileNum++;

                if (updateResource)
                {
                    bool b = res.SaveToDatabase();
                    if (!b)
                    {
                        Console.Write("resource failed to update.");
                    }
                }
            } // foreach
            if (rowStarted)
            {
                html.Append("</tr>");
            }
            html.Append("</table>");


            ph_ImagePanel.Controls.Add(new LiteralControl(html.ToString()));
        }