View Issue Details

IDProjectCategoryView StatusLast Update
0034124mantisbtmarkdownpublic2024-10-28 13:27
Reporterhotzeplotz Assigned Tocommunity  
PrioritylowSeverityfeatureReproducibilityN/A
Status closedResolutionfixed 
Product Version2.26.1 
Target Version2.27.0Fixed in Version2.27.0 
Summary0034124: Add syntax highlighting to markdown codeblocks
Description

Having nice syntax highlighting in codeblocks.

As an additional to 0034040

TagsNo tags attached.

Relationships

related to 0034040 closedcommunity Markdown processing code cleanup (part 2) 
has duplicate 0034383 closeddregad Add a switch to control the usage of syntax hightlighting. 
has duplicate 0007859 closeddregad Patch: Code Highlighting in Mantis 
has duplicate 0004318 closeddregad Code tag for bugnotes 

Activities

dregad

dregad

2024-03-18 03:59

developer   ~0068668

PR https://github.com/mantisbt/mantisbt/pull/1976

hotzeplotz

hotzeplotz

2024-04-01 12:51

reporter   ~0068764

As stated by @atrol in this comment, prismjs needs to be tracked to avoid using a third party that is not maintained.

dregad

dregad

2024-04-01 16:10

developer   ~0068770

Also take in consideration my remark in PR 1976:

I also think it would be a good idea to allow use of a CDN when MantisBT is configured with $g_cdn_enabled = ON;, possibly with https://prismjs.com/plugins/autoloader, but this can be done as a separate work item.

Some ideas for future improvement (not needed as part of this PR unless you're feeling fancy and got time on your hands �)

hotzeplotz

hotzeplotz

2024-04-04 12:31

reporter   ~0068789

Have created a PR to show how it could work.

$g_cdn_enabled

is currently not respected, not yet.

allow the admin to pick additional languages

Autoloading works very fine so far. Allowing to pick defaults, means "packaging" of a default file. Will do it later if it seems good in general.

hotzeplotz

hotzeplotz

2024-04-06 11:14

reporter   ~0068793

Last edited: 2024-04-06 11:15

g_cdn_enabled

Added, works fine. The themes are reduced to the basic ones, because only the base themes are delivered by "https://cdnjs.com/libraries/prism/1.29.0"

Related Changesets

MantisBT: master 1b3ca867

2024-07-26 19:10

hotzeplotz

Committer: community


Details Diff
Syntax highlighting for code blocks

This improves the MantisCoreFormatting plugin by adding syntax
highlighting for code blocks.

This implementation is based on Prism.js, using a single js file, to
make it easier to replace it with an other solution if needed in the
future.

Features:
- activate or deactivate syntax highlighting completely
- select a theme from those provided by the Prism.js main repository
- activate one or more plugins (see below)
- autoload languages as needed (i.e. ```xxxx will load language xxxx);
with $g_cdn_enabled = ON; the resources are loaded from [1]
- nothing is loaded if there are no <code> blocks

Bundled plugins:
- copy-to-clipboard: https://prismjs.com/plugins/copy-to-clipboard/
- show-language: https://prismjs.com/plugins/show-language/
- show-invisibles: https://prismjs.com/plugins/show-invisibles/
- line-numbers: https://prismjs.com/plugins/line-numbers/
- normalize-whitespace (default): https://prismjs.com/plugins/normalize-whitespace/
- match-braces (with "rainbow braces"): https://prismjs.com/plugins/match-braces/
- diff-highlight: https://prismjs.com/plugins/diff-highlight/
- inline-color: https://prismjs.com/plugins/inline-color/
- previewers: https://prismjs.com/plugins/previewers/

Fixes 0034124, PR https://github.com/mantisbt/mantisbt/pull/1986

[1]: https://cdnjs.cloudflare.com/ajax/libs/prism/1.29.0/prism.min.js

Signed-off-by: Damien Regad <dregad@mantisbt.org>
Affected Issues
0034124
mod - css/ace-mantis.css Diff File
mod - plugins/MantisCoreFormatting/MantisCoreFormatting.php Diff File
mod - plugins/MantisCoreFormatting/files/markdown.css Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/README.md Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-abap.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-abnf.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-actionscript.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-ada.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-agda.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-al.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-antlr4.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-apacheconf.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-apex.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-apl.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-applescript.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-aql.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-arduino.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-arff.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-armasm.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-arturo.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-asciidoc.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-asm6502.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-asmatmel.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-aspnet.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-autohotkey.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-autoit.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-avisynth.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-avro-idl.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-awk.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-bash.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-basic.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-batch.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-bbcode.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-bbj.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-bicep.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-birb.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-bison.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-bnf.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-bqn.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-brainfuck.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-brightscript.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-bro.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-bsl.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-c.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cfscript.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-chaiscript.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cil.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cilkc.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cilkcpp.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-clike.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-clojure.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cmake.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cobol.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-coffeescript.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-concurnas.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cooklang.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-coq.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-core.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cpp.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-crystal.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-csharp.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cshtml.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-csp.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-css-extras.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-css.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-csv.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cue.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-cypher.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-d.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-dart.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-dataweave.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-dax.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-dhall.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-diff.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-django.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-dns-zone-file.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-docker.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-dot.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-ebnf.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-editorconfig.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-eiffel.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-ejs.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-elixir.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-elm.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-erb.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-erlang.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-etlua.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-excel-formula.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-factor.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-false.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-firestore-security-rules.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-flow.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-fortran.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-fsharp.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-ftl.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-gap.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-gcode.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-gdscript.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-gedcom.min.js Diff File
add - plugins/MantisCoreFormatting/files/syntax-highlighting/components/prism-gettext.min.js Diff File