public string GetImage(string description, string root)
    {
        if (mImagesShown++ >= mItemsCollapseAfter)
        {
            return(string.Empty);
        }

        if (string.IsNullOrEmpty(description))
        {
            return(string.Empty);
        }

        List <HtmlImage> list = HtmlImageExtractor.Extract(description);

        if (list.Count == 0)
        {
            return(string.Empty);
        }

        Uri rooturi = null;
        Uri uri     = null;

        Uri.TryCreate(root, UriKind.Absolute, out rooturi);
        Uri.TryCreate(rooturi, list[0].Src, out uri);
        Uri imgrewriteuri = new Uri(SessionManager.WebsiteUri, "AccountFeedItemPicture.aspx?src=");

        return(string.Format("<img class='sncore_blog_image' border='0' src='{0}{1}'>",
                             imgrewriteuri, Renderer.UrlEncode(uri.ToString())));
    }
示例#2
0
    public void linkSummarize_Click(object sender, EventArgs e)
    {
        List <HtmlImage> list     = HtmlImageExtractor.Extract(inputSummary.Content);
        string           imageuri = string.Empty;

        if (list.Count > 0)
        {
            imageuri = list[0].Src;
            imageuri = imageuri.Replace("AccountStoryPicture.aspx", "AccountStoryPictureThumbnail.aspx");
        }
        else
        {
            TransitAccountStory ts = SessionManager.StoryService.GetAccountStoryById(
                SessionManager.Ticket, RequestId);

            imageuri = string.Format("AccountStoryPictureThumbnail.aspx?id={0}", ts.AccountStoryPictureId);
        }
        labelSummary.Text = string.Format(
            "<table cellpadding='4' cellspacing='4'>\n" +
            "<tr>\n" +
            "<td valign='middle'>\n" +
            "<a href='{2}'><img border='0' src='{0}'></a>\n" +
            "</td>\n" +
            "<td valign='middle'>\n" +
            "<p><a href='{2}'>{3}</a></p>\n" +
            "<p>{1}</p>\n" +
            "</td>\n" +
            "</tr>\n" +
            "</table>",
            imageuri,
            Renderer.GetSummary(inputSummary.Content),
            string.Format("AccountStoryView.aspx?id={0}", RequestId),
            Renderer.Render(inputName.Text));
    }
示例#3
0
        public void ExtractMultipleImages()
        {
            string html = "<html><img src='http://www.server.com/image.gif' alt='altvalue' width=10 height=20>" +
                          "<img src='http://www.server.com/anotherimage.gif'></html>";
            List <HtmlImage> images = HtmlImageExtractor.Extract(html);

            Assert.AreEqual(images.Count, 2);
        }
示例#4
0
        public void ExtractRelativeImages()
        {
            string html = "<html><img src='image.gif' alt='altvalue' width=10 height=20>" +
                          "<img src='http://www.two.com/image.gif'></html>";
            List <HtmlImage> images = HtmlImageExtractor.Extract(html, new Uri("http://www.one.com"));

            Assert.AreEqual(images.Count, 2);
            Assert.AreEqual("http://www.one.com/image.gif", images[0].Src);
            Assert.AreEqual("http://www.two.com/image.gif", images[1].Src);
        }
示例#5
0
        public void ExtractAllProperties()
        {
            string           html   = "<html><img src='http://www.server.com/image.gif' alt='altvalue' width=10 height=20></html>";
            List <HtmlImage> images = HtmlImageExtractor.Extract(html);

            Assert.AreEqual(images.Count, 1);
            Assert.AreEqual("http://www.server.com/image.gif", images[0].Src);
            Assert.AreEqual("altvalue", images[0].Alt);
            Assert.AreEqual(10, images[0].Width);
            Assert.AreEqual(20, images[0].Height);
        }
示例#6
0
        public void ExtractBasic()
        {
            string           html   = "<html><img src='http://www.server.com/image.gif'></html>";
            List <HtmlImage> images = HtmlImageExtractor.Extract(html);

            Assert.AreEqual(images.Count, 1);
            Assert.AreEqual("http://www.server.com/image.gif", images[0].Src);
            Assert.IsTrue(string.IsNullOrEmpty(images[0].Alt));
            Assert.AreEqual(-1, images[0].Width);
            Assert.AreEqual(-1, images[0].Height);
        }
    public string GetImage(string description)
    {
        if (mImagesShown++ >= mItemsCollapseAfter)
        {
            return(string.Empty);
        }

        if (string.IsNullOrEmpty(description))
        {
            return(string.Empty);
        }

        List <HtmlImage> list = HtmlImageExtractor.Extract(description);

        if (list.Count == 0)
        {
            return(string.Empty);
        }

        return(string.Format("<img class='sncore_blog_image' border='0' src='{0}'>", list[0].Src));
    }
示例#8
0
        public int UpdateImages(ManagedSecurityContext sec)
        {
            GetACL().Check(sec, DataOperation.Update);

            int result   = 0;
            Uri basehref = null;

            Uri.TryCreate(mInstance.LinkUrl, UriKind.Absolute, out basehref);

            IList items = Session.CreateCriteria(typeof(AccountFeedItem))
                          .Add(Expression.Eq("AccountFeed.Id", mInstance.Id))
                          .List();

            foreach (AccountFeedItem item in items)
            {
                IList <HtmlImage> images = null;

                try
                {
                    images = HtmlImageExtractor.Extract(item.Description, basehref);
                }
                catch
                {
                    continue;
                }

                TimeSpan tsDistribution = new TimeSpan(0, 30, 0);

                foreach (HtmlImage image in images)
                {
                    AccountFeedItemImg x_img = null;

                    // images may appear only once, repeating images don't get updated
                    // nor images linked from multiple feeds or feed items

                    x_img = (AccountFeedItemImg)Session.CreateCriteria(typeof(AccountFeedItemImg))
                            .Add(Expression.Eq("Url", image.Src)).UniqueResult();

                    if (x_img != null)
                    {
                        // image already exists
                        continue;
                    }

                    x_img                 = new AccountFeedItemImg();
                    x_img.Created         = item.Created.Subtract(tsDistribution); // shuffle images
                    tsDistribution        = tsDistribution.Add(new TimeSpan(0, 30, 0));
                    x_img.Modified        = DateTime.UtcNow;
                    x_img.AccountFeedItem = item;
                    x_img.Description     = image.Alt;
                    x_img.Interesting     = false;
                    x_img.Url             = image.Src;

                    // fetch the image to get its size
                    try
                    {
                        WebClient client = new WebClient();
                        client.Headers["Accept"]     = "*/*";
                        client.Headers["User-Agent"] = ManagedConfiguration.GetValue(Session, "SnCore.Web.UserAgent", "SnCore/1.0");
                        byte[] data = client.DownloadData(x_img.Url);
                        if (data == null)
                        {
                            throw new Exception("Missing file data.");
                        }
                        ThumbnailBitmap bitmap = new ThumbnailBitmap(data);
                        x_img.Thumbnail = bitmap.Thumbnail;
                        x_img.Visible   = mInstance.PublishImgs;

                        // hide images smaller than the thumbnail size
                        if (bitmap.FullSize.Height < ThumbnailBitmap.s_ThumbnailSize.Height ||
                            bitmap.FullSize.Width < ThumbnailBitmap.s_ThumbnailSize.Width)
                        {
                            x_img.Visible = false;
                        }
                    }
                    catch (Exception ex)
                    {
                        x_img.LastError = ex.Message;
                        x_img.Visible   = false;
                    }

                    Session.Save(x_img);
                    result++;
                }
            }

            return(result);
        }