feat: replace Monaco by Ace #32

Closed
jriou wants to merge 3 commits from dev/julien/ace into main
6 changed files with 20 additions and 2 deletions
Showing only changes of commit 577d19b9d8 - Show all commits

feat: disable editor
All checks were successful
/ pre-commit (push) Successful in 1m49s

Signed-off-by: Julien Riou <julien@riou.xyz>
Julien Riou 2025-09-22 07:18:38 +02:00
Signed by: jriou
GPG key ID: 9A099EDA51316854

View file

@ -38,6 +38,7 @@ The file format is **JSON**:
* **tls_key_file** (string): Path to TLS key file to enable HTTPS * **tls_key_file** (string): Path to TLS key file to enable HTTPS
* **ace_directory** (string): Serve [Ace](hhttps://ace.c9.io/) assets from this local directory (ex: "./node_modules/ace-builds"). See **Dependencies** for details. * **ace_directory** (string): Serve [Ace](hhttps://ace.c9.io/) assets from this local directory (ex: "./node_modules/ace-builds"). See **Dependencies** for details.
* **bootstrap_directory** (string): Serve [Bootstrap](https://getbootstrap.com/) assets from this local directory (ex: "./node_modules/bootstrap/dist"). See **Dependencies** for details. * **bootstrap_directory** (string): Serve [Bootstrap](https://getbootstrap.com/) assets from this local directory (ex: "./node_modules/bootstrap/dist"). See **Dependencies** for details.
* **disable_editor** (bool): Disable Ace editor.
The configuration file is not required but the service might not be exposed to the public. The configuration file is not required but the service might not be exposed to the public.

View file

@ -30,6 +30,7 @@ type Config struct {
TLSKeyFile string `json:"tls_key_file"` TLSKeyFile string `json:"tls_key_file"`
AceDirectory string `json:"ace_directory"` AceDirectory string `json:"ace_directory"`
BootstrapDirectory string `json:"bootstrap_directory"` BootstrapDirectory string `json:"bootstrap_directory"`
DisableEditor bool `json:"disable_editor"`
} }
func NewConfig() *Config { func NewConfig() *Config {

View file

@ -29,6 +29,7 @@ type PageData struct {
EnableUploadFileButton bool EnableUploadFileButton bool
AceDirectory string AceDirectory string
BootstrapDirectory string BootstrapDirectory string
DisableEditor bool
} }
type HomeHandler struct { type HomeHandler struct {

View file

@ -118,6 +118,7 @@ func (s *Server) Start() error {
Languages: s.config.Languages, Languages: s.config.Languages,
AceDirectory: s.config.AceDirectory, AceDirectory: s.config.AceDirectory,
BootstrapDirectory: s.config.BootstrapDirectory, BootstrapDirectory: s.config.BootstrapDirectory,
DisableEditor: s.config.DisableEditor,
} }
if s.config.ShowVersion { if s.config.ShowVersion {

View file

@ -58,11 +58,15 @@
</div> </div>
<div class="container mb-4"> <div class="container mb-4">
{{if .DisableEditor}}
<textarea class="form-control" id="content" name="content" cols="40" rows="12"></textarea>
{{else}}
<div class="row"> <div class="row">
<div id="editor" name="editor" class="form-control" <div id="editor" name="editor" class="form-control"
style="height: 300px; resize: vertical; overflow: auto;"></div> style="height: 300px; resize: vertical; overflow: auto;"></div>
<input type="hidden" id="content" /> <input type="hidden" id="content" />
</div> </div>
{{end}}
</div> </div>
<div class="container mb-4"> <div class="container mb-4">
<div class="row text-center justify-content-center"> <div class="row text-center justify-content-center">
@ -71,6 +75,7 @@
</div> </div>
</div> </div>
</div> </div>
{{if eq false .DisableEditor}}
<script <script
src="{{if .AceDirectory}}/static/ace-builds{{else}}https://cdn.jsdelivr.net/npm/ace-builds@1.43.3{{end}}/src-noconflict/ace.js" src="{{if .AceDirectory}}/static/ace-builds{{else}}https://cdn.jsdelivr.net/npm/ace-builds@1.43.3{{end}}/src-noconflict/ace.js"
type="text/javascript" charset="utf-8"></script> type="text/javascript" charset="utf-8"></script>
@ -103,6 +108,7 @@
e.formData.append('content', editor.getValue()); e.formData.append('content', editor.getValue());
}); });
</script> </script>
{{end}}
</form> </form>
{{block "footer" .}}{{end}} {{block "footer" .}}{{end}}

View file

@ -33,9 +33,16 @@
{{end}} {{end}}
</ul> </ul>
</div> </div>
{{if .DisableEditor}}
<div class="row">
<pre class="border px-3 pt-3" style="min-height: 300px; resize: vertical; overflow: auto;">
{{string .Note.Content}}
</pre>
</div>
{{else}}
<div class="row"> <div class="row">
<div id="editor" name="editor" class="form-control" <div id="editor" name="editor" class="form-control"
style="height: 300px; resize: vertical; overflow: auto;"></div> style="min-height: 300px; resize: vertical; overflow: auto;"></div>
</div> </div>
<script <script
src="{{if .AceDirectory}}/static/ace-builds{{else}}https://cdn.jsdelivr.net/npm/ace-builds@1.43.3{{end}}/src-noconflict/ace.js" src="{{if .AceDirectory}}/static/ace-builds{{else}}https://cdn.jsdelivr.net/npm/ace-builds@1.43.3{{end}}/src-noconflict/ace.js"
@ -46,6 +53,7 @@
editor.setReadOnly(true); editor.setReadOnly(true);
editor.getSession().setMode("ace/mode/{{.Note.Language}}"); editor.getSession().setMode("ace/mode/{{.Note.Language}}");
editor.getSession().selection.clearSelection(); editor.getSession().selection.clearSelection();
editor.setOptions({maxLines: Infinity});
if (document.documentElement.getAttribute('data-bs-theme') == 'light') { if (document.documentElement.getAttribute('data-bs-theme') == 'light') {
editor.setTheme("ace/theme/github_light_default"); editor.setTheme("ace/theme/github_light_default");
@ -61,8 +69,8 @@
editor.setTheme("ace/theme/github_dark") editor.setTheme("ace/theme/github_dark")
} }
}); });
</script> </script>
{{end}}
</div> </div>
{{end}} {{end}}