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?
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.
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.
I second Paul's answer.
In fact, you could extend the Episever link editor with a field where the editor just adds the document ID—then 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.
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.