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 <romb...@apache.org> 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 <
> > stan.ieu...@gmail.com>
> > 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:* dk...@apache.org
> > > *Trimis:* 9 august 2018 17:59
> > > *Către:* ieu...@apache.org
> > > *Cc:* users@sling.apache.org
> > > *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 <dk...@apache.org>
> > > wrote:
> > >
> > > >
> > > >
> > > > On Sun, Jun 17, 2018, 9:26 PM Eugen Stan <ieu...@apache.org>
> > > > 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
> > > > >
> > > > >
>
>
>

Reply via email to