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
>> > > > >
>> > > > >
>>
>>
>>

Reply via email to