/
news.js
111 lines (104 loc) · 4.13 KB
/
news.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
/**
* News administration stuff
*
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at https://mozilla.org/MPL/2.0/.
*
* @package phpMyFAQ
* @author Thorsten Rinne <thorsten@phpmyfaq.de>
* @author Jan Harms <modelrailroader@gmx-topmail.de>
* @copyright 2024 phpMyFAQ Team
* @license https://www.mozilla.org/MPL/2.0/ Mozilla Public License Version 2.0
* @link https://www.phpmyfaq.de
* @since 2024-04-20
*/
import { activateNews, addNews, deleteNews, updateNews } from '../api';
import { Modal } from 'bootstrap';
import { TinyMCE } from 'tinymce';
import tinymce from 'tinymce/tinymce';
export const handleAddNews = () => {
const submit = document.getElementById('submitAddNews');
if (submit) {
submit.addEventListener('click', async (event) => {
event.preventDefault();
let target = '';
document.querySelectorAll('#target').forEach((item) => {
if (item.checked) {
target = item.value;
}
});
const data = {
dateStart: document.getElementById('dateStart').value,
dateEnd: document.getElementById('dateEnd').value,
news: tinymce.get('editor').getContent(),
newsHeader: document.getElementById('newsheader').value,
authorName: document.getElementById('authorName').value,
authorEmail: document.getElementById('authorEmail').value,
active: document.getElementById('active').checked,
comment: document.getElementById('comment').checked,
link: document.getElementById('link').value,
linkTitle: document.getElementById('linkTitle').value,
langTo: document.getElementById('langTo').value,
target: target,
csrfToken: document.getElementById('pmf-csrf-token').value,
};
await addNews(data);
});
}
};
export const handleNews = () => {
const deleteNewsButton = document.getElementById('deleteNews');
if (deleteNewsButton) {
document.querySelectorAll('#deleteNews').forEach((item) => {
item.addEventListener('click', (event) => {
event.preventDefault();
const modal = new Modal(document.getElementById('confirmDeleteNewsModal'));
document.getElementById('newsId').value = item.getAttribute('data-pmf-newsid');
modal.show();
});
});
document.getElementById('pmf-delete-news-action').addEventListener('click', async (event) => {
event.preventDefault();
const csrfToken = document.getElementById('pmf-csrf-token-delete').value;
const id = document.getElementById('newsId').value;
await deleteNews(csrfToken, id);
});
document.querySelectorAll('#activate').forEach((item) => {
item.addEventListener('click', async () => {
await activateNews(item.getAttribute('data-pmf-id'), item.checked, item.getAttribute('data-pmf-csrf-token'));
});
});
}
};
export const handleEditNews = () => {
const submit = document.getElementById('submitEditNews');
if (submit) {
submit.addEventListener('click', async (event) => {
event.preventDefault();
let target = '';
document.querySelectorAll('#target').forEach((item) => {
if (item.checked) {
target = item.value;
}
});
const data = {
id: document.getElementById('id').value,
csrfToken: document.getElementById('pmf-csrf-token').value,
dateStart: document.getElementById('dateStart').value,
dateEnd: document.getElementById('dateEnd').value,
news: tinymce.get('editor').getContent(),
newsHeader: document.getElementById('newsheader').value,
authorName: document.getElementById('authorName').value,
authorEmail: document.getElementById('authorEmail').value,
active: document.getElementById('active').checked,
comment: document.getElementById('comment').checked,
link: document.getElementById('link').value,
linkTitle: document.getElementById('linkTitle').value,
langTo: document.getElementById('langTo').value,
target: target,
};
await updateNews(data);
});
}
};