Marc van der Wal f220e71544 Éditeur de zone : meilleurs messages de diagnostic
Quand le code appelle named-checkzone pour le contrôle de syntaxe DNS,
les messages renvoyés par cet utilitaire de contrôle sont lus et
interprétés, puis remontés à l’utilisateur.

Ce n’est pas parfait et ça donne une espèce de franglais, mais ça
suffira pour la démo et tant qu’on ne laisse pas les élèves manipuler
directement les fichiers de zone. Dans le cas contraire, il faudra
améliorer cela.
2023-10-25 15:50:31 +02:00

75 lines
2.4 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="container">
[% IF deferred.status %]
[%
outcome_map = {
ok => {
color => 'success',
message => 'Les modifications ont été prises en compte.'
},
ok_with_warnings => {
color => 'warning',
message => 'Les modifications ont été prises en compte, mais avec les réserves suivantes:'
},
failure => {
color => 'danger',
message => 'La zone contient des erreurs ; les modifications nont pas été prises en compte.'
}
}
outcome_info = outcome_map.item(deferred.status.outcome)
%]
<div class="alert alert-[% outcome_info.color %] pb-1">
<p>[% outcome_info.message %]</p>
[% IF deferred.status.messages.size > 1 %]
<ul>
[% FOR m IN deferred.status.messages %]
<li>[% m | html %]</li>
[% END %]
</ul>
[% ELSIF deferred.status.messages.size == 1 %]
<p>[% deferred.status.messages.first | html %]</p>
[% END %]
</div>
[% END %]
<div class="row mt-3 mb-4">
<main class="col">
<form id="edit-form" method="POST">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<span>
Zone DNS: <span class="font-monospace">[% zone_to_edit | html %]</span>
</span>
<button type="submit" class="btn btn-primary" onClick="post_zone_file()">Enregistrer et appliquer</button>
</div>
<div class="card-body p-0">
<div id="editor" name="editor" style="height: 25em; font-size: 1rem;">
[%~ zone_contents ~%]
</div>
</div>
</div>
<input type="hidden" id="zone-contents" name="zone-contents" value="" />
</form>
</main>
</div>
</div>
<script type="text/javascript" src="[% request.uri_base %]/ace-build/src/ace.js"></script>
<script>
var editor = ace.edit(
"editor", {
theme: "ace/theme/chrome",
mode: "ace/mode/bind_zone_files",
minLines: 8,
maxLines: 30,
autoScrollEditorIntoView: true,
displayIndentGuides: false,
});
editor.resize();
function post_zone_file() {
$("#zone-contents").attr("value", editor.getValue());
$("#edit-form").submit();
}
</script>