The Flexmark OSGi Bundle has now been released: https://search.maven.org/search?q=a:flexmark-osgi
On Sat, Aug 25, 2018 at 8:26 AM Daniel Klco <[email protected]> wrote: > I just provided a PR against Flexmark to add OSGi support. Assuming that > gets merged and released, adding markdown support to Sling will be pretty > easy as it's just installing the flexmark-osgi and jsoup bundles and then > whatever code we want to wrap around it: > > https://github.com/vsch/flexmark-java/pull/261 > > On Mon, Aug 13, 2018 at 11:07 AM Robert Munteanu <[email protected]> > wrote: > >> Hi Dan, >> >> On Thu, 2018-08-09 at 14:06 -0400, Daniel Klco wrote: >> > Unfortunately, I'm not going to be at adapt.to :-( wrong side of the >> > pond. >> > >> > So for commonmark, I'm assuming you're referring to this one here: >> > >> > https://github.com/atlassian/commonmark-java >> > >> > We could embed the JAR into a bundle to provide markdown support and >> > the >> > implementation of the Sling Models and any other services. Let me >> > take a >> > look at it in my copious free time ;-) >> >> Have you seen [1]? It's definitely buggy and missing features, but it >> might work for your use case. In that scenario, we could graduate it >> from the whiteboard. >> >> I'm still waiting for a little time to also allow usage as a >> ResourceDecorator, and that would allow a lot more flexibility in >> usage. >> >> Robert >> >> [1]: >> https://github.com/apache/sling-whiteboard/tree/master/mdresourceprovider >> > >> > On Thu, Aug 9, 2018 at 12:05 PM Ioan Eugen Stan < >> > [email protected]> >> > wrote: >> > >> > > Hello Daniel, >> > > >> > > I'm very happy to hear you have a use case for it and I hope we can >> > > get it >> > > included soon. >> > > >> > > Are you coming to Adapt.to? We might do some work there. >> > > >> > > I'm swamped with other work and can't work on this until then. If >> > > you need >> > > it sooner, I can't help you much. >> > > >> > > Regarding markdown support, I failed to convince commonmark >> > > developer to >> > > merge my osgi PR's. Maybe you can push a bit and make it happen. If >> > > not we >> > > could try to push for flexmark. The developer might be more open to >> > > contributions. This is for longer term. >> > > >> > > Short term you can use the versions I published. >> > > >> > > I saw another discussion about sling and markdown and I saw nice >> > > features >> > > being eiscussed (copy front matter properties to jcr properties, >> > > caching, >> > > etc) . >> > > >> > > https://github.com/vsch/flexmark-java >> > > >> > > >> > > *De la:* [email protected] >> > > *Trimis:* 9 august 2018 17:59 >> > > *Către:* [email protected] >> > > *Cc:* [email protected] >> > > *Subiect:* Re: [DISCUSSION] markdown support for Sling CMS >> > > >> > > Hey Eugen, >> > > >> > > Now that Sling CMS 0.9.0 is out I was thinking adding markdown >> > > support to >> > > Sling CMS would be a great addition (in part because I have a use >> > > case for >> > > it for filtered user generated content) >> > > >> > > I've created an issue for it: >> > > >> > > https://issues.apache.org/jira/browse/SLING-7819 >> > > >> > > Do you want to create a PR for integrating this? How can I help? >> > > >> > > Thanks, >> > > Dan >> > > >> > > On Wed, Jun 20, 2018 at 10:16 PM Daniel Klco <[email protected]> >> > > wrote: >> > > >> > > > >> > > > >> > > > On Sun, Jun 17, 2018, 9:26 PM Eugen Stan <[email protected]> >> > > > wrote: >> > > > >> > > > > Hello Daniel and all, >> > > > > >> > > > > I've been working to deliver a piece of functionality that >> > > > > leverages >> > > > > Markdown support and I think it can be a great addition for >> > > > > managing >> > > > > content inside a Sling, more specifically Sling CMS. >> > > > > >> > > > > My work is by no means ready to be released into the open but I >> > > > > would >> > > > > like to share some ideas and get some feedback. I think it >> > > > > could make a >> > > > > great adition to Sling CMS. >> > > > > >> > > > > I've started from commonsmark-java [1] and I have made some >> > > > > PR's to add >> > > > > proper osgi support and Karaf features. Until they are >> > > > > upstreamed, I've >> > > > > published them to my public repository on bintray so you can >> > > > > test it out >> > > > > [2]. >> > > > > >> > > > > I'm currenlty using this functionality to manage terms of use >> > > > > and >> > > > > privacy policy files for our web platform. We have a >> > > > > requirement that >> > > > > they need to be translated and I believe that a text based >> > > > > format has >> > > > > many advantages in this situation than an office document. Most >> > > > > of them >> > > > > are related to the that: >> > > > > >> > > > > - content can be easily version controlled >> > > > > >> > > > > - content can be transformed easily into multiple output >> > > > > formats: html, >> > > > > text, pdf >> > > > > >> > > > > - content is easy to view/edit >> > > > > >> > > > > - rich text editors exist for markdown that can be added >> > > > > >> > > > > >> > > > > The way I am using it in my application is to register a Sling >> > > > > Model >> > > > > that allows me to convert from Markdown content to html on the >> > > > > fly >> > > > > (caching can be added). >> > > > >> > > > >> > > > > I've also defined a script "page/markdown" via >> > > > > sling:resourceType so I >> > > > > can leverage that functionality. My implementation is based on >> > > > > fling >> > > > > sample and uses thymeleaf. >> > > > > >> > > > > Bellow are some code snippets that I use. My implementation >> > > > > needs to >> > > > > handle content into multiple languages and we use a fallback >> > > > > mechanism: >> > > > > If requested language is not available, then we fallback to the >> > > > > default >> > > > > version - which is English version for most cases. >> > > > > >> > > > > ---- >> > > > > >> > > > > @Model(adaptables = {Resource.class, >> > > > > SlingHttpServletRequest.class}) >> > > > > @FieldDefaults(level = AccessLevel.PROTECTED) >> > > > > public class Page { >> > > > > >> > > > > @SlingObject Resource resource; >> > > > > >> > > > > @SlingObject(injectionStrategy = OPTIONAL) >> > > > > SlingHttpServletRequest request; >> > > > > >> > > > > @OSGiService HtmlRenderer htmlRenderer; >> > > > > @OSGiService Parser parser; >> > > > > >> > > > > List<PageTranslation> translations; >> > > > > >> > > > > PageTranslation requestedTranslation; >> > > > > >> > > > > @PostConstruct >> > > > > protected void resolveContent() { >> > > > > Locale lang = requestedLanguage(); >> > > > > translations = getPageTranslations(); >> > > > > >> > > > > log.warn("Parsing translation for resources {}", >> > > > > translations); >> > > > > try { >> > > > > requestedTranslation = >> > > > > findRequestedTranslationOrUseDefault(); >> > > > > } catch (Exception e) { >> > > > > log.warn("Exception getting content ", e); >> > > > > } >> > > > > } >> > > > > >> > > > > private List<PageTranslation> getPageTranslations() { >> > > > > List<PageTranslation> translations = new ArrayList<>(); >> > > > > >> > > > > resource >> > > > > .getChild("lang") >> > > > > .getChildren() >> > > > > .forEach( >> > > > > resource1 -> { >> > > > > PageTranslation translation = >> > > > > resource1.adaptTo(PageTranslation.class); >> > > > > if (translation != null) { >> > > > > translations.add(translation); >> > > > > } >> > > > > }); >> > > > > return translations; >> > > > > } >> > > > > >> > > > > public String getTitle() { >> > > > > return requestedTranslation.getTitle(); >> > > > > } >> > > > > >> > > > > public String getLanguage() { >> > > > > return requestedTranslation.getLanguage(); >> > > > > } >> > > > > >> > > > > public String getContent() { >> > > > > String content = requestedTranslation.getContent(); >> > > > > Node doc = parser.parse(content); >> > > > > return htmlRenderer.render(doc); >> > > > > } >> > > > > >> > > > > ---- >> > > > > >> > > > > I'm hoping this can be added to Sling CMS, pending the markdown >> > > > > changes >> > > > > are upstreamed. >> > > > > >> > > > > I believe text based formats are cool and they solve some >> > > > > problems in an >> > > > > interesting way. >> > > > > >> > > > >> > > > I've used markdown a fair bit and agree for text heavy use cases. >> > > > >> > > > >> > > > > What do you think? Daniel, would you help me shape this so it >> > > > > can be >> > > > > included in Sling CMS ? >> > > > >> > > > >> > > > Totally. It'd seem like we'd need to include a markdown editor, >> > > > script >> > > > and model to render the markdown content. That way we could show >> > > > a HTML >> > > > editor and a markdown editor which might be nice from anyone >> > > > coming from a >> > > > markdown too such as Jekyll. >> > > > >> > > > Not related: I haven't seen a Sling CMS feature >> > > > > in Sling Karaf features. I would like to add one in the near >> > > > > future. >> > > > > >> > > > >> > > > That'd be great! >> > > > >> > > > >> > > > > >> > > > > Other notes: I've targeted asciidoc via asciidoctor but there >> > > > > are issues >> > > > > with running asciidoctorj in osgi. >> > > > > >> > > > > Regards, >> > > > > >> > > > > Eugen >> > > > > >> > > > > [1] https://github.com/atlassian/commonmark-java/pulls >> > > > > >> > > > > [2] https://bintray.com/netdava/maven/commonmark-java >> > > > > >> > > > > >> >> >>
