Skip to content

Commit 48b9c6a

Browse files
committed
Rewrite JavaScript on news page without jQuery
As archweb gradually wants to remove jQuery, port this code to use the fetch API and vanilla JavaScript.
1 parent 6513d91 commit 48b9c6a

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

templates/news/add.html

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -43,22 +43,28 @@ <h2>News: Add Article</h2>
4343
<h2>News Preview: <span id="news-preview-title"></span></h2>
4444
<div id="news-preview-data" class="article-content"></div>
4545
</div>
46-
{% load cdn %}{% jquery %}
47-
<script type="text/javascript" nonce={{ CSP_NONCE }}>
48-
$(document).ready(function() {
49-
$('#news-preview-button').click(function(event) {
50-
event.preventDefault();
51-
$.post('/news/preview/', {
52-
data: $('#id_content').val(),
53-
csrfmiddlewaretoken: $('#newsform input[name=csrfmiddlewaretoken]').val()
54-
},
55-
function(data) {
56-
$('#news-preview-data').html(data);
57-
$('#news-preview').show();
58-
}
59-
);
60-
$('#news-preview-title').html($('#id_title').val());
61-
});
62-
});
46+
<script type="text/javascript" nonce={{ CSP_NONCE }} defer>
47+
function onPreviewButtonClick(event) {
48+
event.preventDefault();
49+
50+
const formData = new FormData();
51+
formData.append('data', document.querySelector('#id_content').value);
52+
formData.append('csrfmiddlewaretoken', document.querySelector('#newsform input[name=csrfmiddlewaretoken]').value);
53+
54+
fetch('/news/preview/', {
55+
method: 'POST',
56+
body: formData,
57+
}).then(response => response.text())
58+
.then(data => {
59+
document.querySelector('#news-preview-data').innerHTML = data;
60+
document.querySelector('#news-preview').style.display = 'block';
61+
document.querySelector('#news-preview-title').innerHTML = document.querySelector('#id_title').value;
62+
}).catch(error => {
63+
console.error(error);
64+
});
65+
}
66+
67+
const previewButton = document.getElementById('news-preview-button');
68+
previewButton.addEventListener('click', onPreviewButtonClick);
6369
</script>
6470
{% endblock %}

0 commit comments

Comments
 (0)