Join us this Friday for AI in Action at the Virtual Happy Hour! This free virtual event is open to all—enroll now on Academy and don’t miss out.

 

Resolving custom urls in XHTMLString

Vote:
 

I know EpiServer handles internal links in XHTML strin to expand links like ~/link/d9651bd2ab2a44afb74b550b4eb2acfc.aspx to meaningful URLS on runtime http://localhost:57906/en/alloy-meet/

We will be allowing our editors to add links to documents stored in external system, and we will be putting in the url something like extSystem://<document-id> in the markup (raw value in DB) and when rendering, it should be changed to working, friendly URL like: https://externalsystem.com/documents/<document-id>

So I'm looking for a way to identify and parse the links when XHTMLString is rendered. Any place where I could hook? Service to overrride, extend?

#222216
Edited, Apr 30, 2020 13:09
Vote:
 

Not very elegant perhaps, but you could hook into the PublishingContent event. Loop through all XhtmlString-properties, swapping out extSystem://<document-id> for your actual URL.

#222231
Apr 30, 2020 19:56
Vote:
 

I would recommend creating a new toolbar icon within tinymce. That way you will have the full link straight away, you could even integrate a search of the document management system to return the document id and then create the link. There are a lot of examples of adding a new button to tinymce in Episerver if you have a google.

#222251
May 01, 2020 0:22
Vote:
 

I second Paul's answer.

In fact, you could extend the Episever link editor with a field where the editor just adds the document IDthen the full external URL is returned. I just wrote a blog post which did some similar with telephone numbers.

I was thinking you could also extend the UrlResolver but I don't think that'll work anyway because it looks like Epi are using an extension method (GetShortcutAwareUrl) when rendering an XhtmlString.

#222264
May 01, 2020 15:18
Vote:
 

I actually went that path extending the URL field editor, which works fine. I initially went with custom scheme, becasue it allows me easily determine if the link is a true external link OR just link to another place in the system.

I'll extend that behavior to store full link in the field and make sure that I can properly distinguish my links vs external links.

While I have you all here, maybe you could also have a look into my other thread: Dijt FilteringSelect and EpiServer rest store issues

I hooked up RestStore with dijit/FilertingSelect and I've ran into some issues.

#222349
May 04, 2020 6:59
* You are NOT allowed to include any hyperlinks in the post because your account hasn't associated to your company. User profile should be updated.