Skip to content

Commit aae633c

Browse files
authored
Merge pull request #1189 from itflow-org/ticket-redaction
Add ticket redaction feature
2 parents ec8d7a3 + 21dc26b commit aae633c

File tree

6 files changed

+548
-239
lines changed

6 files changed

+548
-239
lines changed

js/app.js

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,23 @@ tinymce.init({
277277
}
278278
});
279279

280+
// Initialize TinyMCE editor with only a redact button
281+
tinymce.init({
282+
selector: '.tinymceTicketRedact',
283+
browser_spellcheck: false,
284+
contextmenu: false,
285+
resize: true,
286+
min_height: 300,
287+
max_height: 500,
288+
promotion: false,
289+
branding: false,
290+
menubar: false,
291+
statusbar: false,
292+
license_key: 'gpl',
293+
readonly: true,
294+
toolbar: '',
295+
});
296+
280297
// DateTime
281298
$('.datetimepicker').datetimepicker({
282299
});

js/ticket_redact.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// Redact the selected text in TinyMCE
2+
function redactSelectedText() {
3+
const editor = tinymce.get('tinymceTicketRedact'); // Get TinyMCE editor instance
4+
const selectedText = editor.selection.getContent(); // Get selected content
5+
6+
if (selectedText) {
7+
// Wrap the selected text with a redacted span
8+
const redactedNode = `<strong><span style="color: #e03e2d;">[REDACTED]</span></strong>`;
9+
10+
// Replace the selected text with the redacted span
11+
editor.selection.setContent(redactedNode);
12+
} else {
13+
alert('Please select some text to redact.');
14+
}
15+
}

post/user/ticket.php

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1589,6 +1589,29 @@
15891589
header("Location: " . $_SERVER["HTTP_REFERER"]);
15901590
}
15911591

1592+
if (isset($_POST['redact_ticket_reply'])) {
1593+
1594+
// Perms - Admins only
1595+
if (!isset($session_is_admin) || !$session_is_admin) {
1596+
exit(WORDING_ROLECHECK_FAILED . "<br>Tell your admin: Your role does not have admin access.");
1597+
}
1598+
validateCSRFToken($_POST['csrf_token']);
1599+
1600+
$ticket_id = intval($_POST['ticket_id']);
1601+
$ticket_reply_id = intval($_POST['ticket_reply_id']);
1602+
$ticket_reply = mysqli_real_escape_string($mysqli, $_POST['ticket_reply']);
1603+
$client_id = intval($_POST['client_id']);
1604+
1605+
mysqli_query($mysqli, "UPDATE ticket_replies SET ticket_reply = '$ticket_reply' WHERE ticket_reply_id = $ticket_reply_id AND ticket_reply_ticket_id = $ticket_id");
1606+
1607+
// Logging
1608+
logAction("Ticket", "Reply", "$session_name redacted ticket_reply", $client_id, $ticket_reply_id);
1609+
1610+
$_SESSION['alert_message'] = "Ticket reply redacted";
1611+
1612+
header("Location: ticket_redact.php?ticket_id=" . $ticket_id);
1613+
}
1614+
15921615
if (isset($_POST['merge_ticket'])) {
15931616

15941617
enforceUserPermission('module_support', 2);

0 commit comments

Comments
 (0)