Converting Lstring ContentItem Data from Custom Module to HT

Posted by Community Admin on 04-Aug-2018 15:14

Converting Lstring ContentItem Data from Custom Module to HTML Image

All Replies

Posted by Community Admin on 18-Feb-2013 00:00

I have a custom module with a long Text field, named Logo.   It contains a single Image and other HTML.  I want to display the logo image on the page, so I just assign the value to a literal, ("myCompany" is of type DynamicContent).

var logo = myCompany.GetValue<Lstring>("Logo").Value;
        litLogo.Text = logo;

The result displays this HTML on the page:

<img src="[images|OpenAccessDataProvider]421d54cc-469b-6485-baf1-ff00000f0a6a" title="godfrey-logo">

Any help is appreciated.

Coty

Posted by Community Admin on 18-Feb-2013 00:00

Going to make this a two part question, the first above.  Basically how do you pull a long Text field from a custom module and displaying as HTML so that all images show up that are embedded?

Second - in looking at my custom module I added a Media field named logo that holds the company logo instead.  The block below works to pull this data.  Is this the correct/most efficient way to pull an image from a custom module?

//Get image from custom module
LibrariesManager libraryManager = LibrariesManager.GetManager();
var logos = myPartner.GetValue<Telerik.Sitefinity.Model.ContentLinks.ContentLink[]>("Logo");
foreach (var logoLink in logos)
    var image = libraryManager.GetImage(logoLink.ChildItemId);
    //add image to page
    litLogo.Text = "<img src='" + image.Url + "' /img>";

Thanks!

Coty

Posted by Community Admin on 19-Feb-2013 00:00

Hi Coty,

Regarding your questions:

Long Text field
I think you should use the LinkParser to get the right html from your text field. You can use it like this:

var parser = LinkParser.ResolveLinks("CONTENT");

It has some more overloads, if you need them.

Getting an image
Your code is fine. You could make it a bit smaller like this:

var contentLinks = (ContentLink[])item.GetValue("myPartner");
var imageContentLink = contentLinks.Count() > 1 ? contentLinks.OrderBy(x => x.Ordinal).First() : contentLinks.FirstOrDefault();
litLogo.Text = string.Format("<img src='0' />", imageContentLink.ChildItemId.GetImage().MediaUrl);

Kind regards,
Daniel

Posted by Community Admin on 19-Feb-2013 00:00

Sorry, for this last code to work, you will need an extension method.
Just put this method in a static class, named e.g. 'Extensions':

public static Image GetImage(this Guid imageId)
   var manager = LibrariesManager.GetManager();
   return (imageId != Guid.Empty) ? manager.GetImage(imageId) : null;

Kind regards,
Daniel

This thread is closed