mirror of
https://github.com/itflow-org/itflow
synced 2026-02-28 02:44:53 +00:00
Updated changelog also added redact to open tickets
This commit is contained in:
258
js/app.js
258
js/app.js
@@ -150,131 +150,173 @@ tinymce.init({
|
||||
});
|
||||
|
||||
tinymce.init({
|
||||
selector: '.tinymceTicket',
|
||||
browser_spellcheck: true,
|
||||
contextmenu: false,
|
||||
resize: true,
|
||||
min_height: 300,
|
||||
max_height: 600,
|
||||
promotion: false,
|
||||
branding: false,
|
||||
selector: '.tinymceTicket', // Your selector
|
||||
browser_spellcheck: true,
|
||||
contextmenu: false,
|
||||
resize: true,
|
||||
min_height: 300,
|
||||
max_height: 600,
|
||||
promotion: false,
|
||||
branding: false,
|
||||
menubar: false,
|
||||
statusbar: false,
|
||||
toolbar: [
|
||||
{ name: 'styles', items: [ 'styles' ] },
|
||||
{ name: 'formatting', items: [ 'bold', 'italic', 'forecolor'] },
|
||||
{ name: 'link', items: [ 'link'] },
|
||||
{ name: 'lists', items: [ 'bullist', 'numlist' ] },
|
||||
{ name: 'indentation', items: [ 'outdent', 'indent' ] },
|
||||
{ name: 'custom', items: ['myRedactButton'] } // Add custom button to toolbar
|
||||
],
|
||||
mobile: {
|
||||
menubar: false,
|
||||
statusbar: false,
|
||||
toolbar: [
|
||||
{ name: 'styles', items: [ 'styles' ] },
|
||||
{ name: 'formatting', items: [ 'bold', 'italic', 'forecolor'] },
|
||||
{ name: 'link', items: [ 'link'] },
|
||||
{ name: 'lists', items: [ 'bullist', 'numlist' ] },
|
||||
{ name: 'indentation', items: [ 'outdent', 'indent' ] }
|
||||
],
|
||||
mobile: {
|
||||
menubar: false,
|
||||
plugins: 'autosave lists autolink',
|
||||
toolbar: 'bold italic styles'
|
||||
},
|
||||
convert_urls: false,
|
||||
plugins: 'link image lists table code fullscreen autoresize',
|
||||
license_key: 'gpl'
|
||||
plugins: 'autosave lists autolink',
|
||||
toolbar: 'bold italic styles'
|
||||
},
|
||||
convert_urls: false,
|
||||
plugins: 'link image lists table code fullscreen autoresize',
|
||||
license_key: 'gpl',
|
||||
setup: function(editor) {
|
||||
// Add custom toolbar button with Font Awesome icon
|
||||
editor.ui.registry.addButton('myRedactButton', {
|
||||
icon: 'permanent-pen',
|
||||
tooltip: 'Redact', // Tooltip text for the button
|
||||
onAction: function() {
|
||||
var selectedText = editor.selection.getContent({ format: 'text' });
|
||||
|
||||
if (selectedText) {
|
||||
// Replace the selected text with [REDACTED] in bold red
|
||||
var newContent = '<span style="font-weight: bold; color: red;">[REDACTED]</span>';
|
||||
|
||||
// Replace selected content with the new content
|
||||
editor.selection.setContent(newContent);
|
||||
} else {
|
||||
alert('Please select a word to redact');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Initialize TinyMCE AI
|
||||
tinymce.init({
|
||||
selector: '.tinymceTicketAI',
|
||||
browser_spellcheck: true,
|
||||
contextmenu: false,
|
||||
resize: true,
|
||||
min_height: 300,
|
||||
max_height: 600,
|
||||
promotion: false,
|
||||
branding: false,
|
||||
selector: '.tinymceTicketAI',
|
||||
browser_spellcheck: true,
|
||||
contextmenu: false,
|
||||
resize: true,
|
||||
min_height: 300,
|
||||
max_height: 600,
|
||||
promotion: false,
|
||||
branding: false,
|
||||
menubar: false,
|
||||
statusbar: false,
|
||||
toolbar: [
|
||||
{ name: 'styles', items: ['styles'] },
|
||||
{ name: 'formatting', items: ['bold', 'italic', 'forecolor'] },
|
||||
{ name: 'link', items: ['link'] },
|
||||
{ name: 'lists', items: ['bullist', 'numlist'] },
|
||||
{ name: 'indentation', items: ['outdent', 'indent'] },
|
||||
{ name: 'ai', items: ['reword', 'undo', 'redo'] },
|
||||
{ name: 'custom', items: ['myRedactButton'] } // Add custom redact button to toolbar
|
||||
],
|
||||
mobile: {
|
||||
menubar: false,
|
||||
statusbar: false,
|
||||
toolbar: [
|
||||
{ name: 'styles', items: [ 'styles' ] },
|
||||
{ name: 'formatting', items: [ 'bold', 'italic', 'forecolor'] },
|
||||
{ name: 'link', items: [ 'link'] },
|
||||
{ name: 'lists', items: [ 'bullist', 'numlist' ] },
|
||||
{ name: 'indentation', items: [ 'outdent', 'indent' ] },
|
||||
{ name: 'ai', items: [ 'reword', 'undo', 'redo' ] }
|
||||
],
|
||||
mobile: {
|
||||
menubar: false,
|
||||
toolbar: 'bold italic styles'
|
||||
},
|
||||
convert_urls: false,
|
||||
plugins: 'link image lists table code codesample fullscreen autoresize',
|
||||
license_key: 'gpl',
|
||||
setup: function(editor) {
|
||||
var rewordButtonApi;
|
||||
toolbar: 'bold italic styles'
|
||||
},
|
||||
convert_urls: false,
|
||||
plugins: 'link image lists table code codesample fullscreen autoresize',
|
||||
license_key: 'gpl',
|
||||
setup: function(editor) {
|
||||
var rewordButtonApi;
|
||||
|
||||
editor.ui.registry.addButton('reword', {
|
||||
icon: 'ai',
|
||||
tooltip: 'Reword Text',
|
||||
onAction: function() {
|
||||
var content = editor.getContent();
|
||||
// Define the Reword button (AI-related button)
|
||||
editor.ui.registry.addButton('reword', {
|
||||
icon: 'ai', // Example icon for AI rewording
|
||||
tooltip: 'Reword Text',
|
||||
onAction: function() {
|
||||
var content = editor.getContent();
|
||||
|
||||
// Disable the Reword button
|
||||
rewordButtonApi.setEnabled(false);
|
||||
// Disable the Reword button
|
||||
rewordButtonApi.setEnabled(false);
|
||||
|
||||
// Show the progress indicator
|
||||
editor.setProgressState(true);
|
||||
// Show the progress indicator
|
||||
editor.setProgressState(true);
|
||||
|
||||
fetch('post.php?ai_reword', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({ text: content }),
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error('Network response was not ok');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(data => {
|
||||
editor.undoManager.transact(function() {
|
||||
editor.setContent(data.rewordedText || 'Error: Could not reword the text.');
|
||||
});
|
||||
fetch('post.php?ai_reword', {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({ text: content }),
|
||||
})
|
||||
.then(response => {
|
||||
if (!response.ok) {
|
||||
throw new Error('Network response was not ok');
|
||||
}
|
||||
return response.json();
|
||||
})
|
||||
.then(data => {
|
||||
editor.undoManager.transact(function() {
|
||||
editor.setContent(data.rewordedText || 'Error: Could not reword the text.');
|
||||
});
|
||||
|
||||
// Hide the progress indicator
|
||||
editor.setProgressState(false);
|
||||
// Hide the progress indicator
|
||||
editor.setProgressState(false);
|
||||
|
||||
// Re-enable the Reword button
|
||||
rewordButtonApi.setEnabled(true);
|
||||
// Re-enable the Reword button
|
||||
rewordButtonApi.setEnabled(true);
|
||||
|
||||
// Optional: Show a success notification
|
||||
editor.notificationManager.open({
|
||||
text: 'Text reworded successfully!',
|
||||
type: 'success',
|
||||
timeout: 3000
|
||||
});
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
// Optional: Show a success notification
|
||||
editor.notificationManager.open({
|
||||
text: 'Text reworded successfully!',
|
||||
type: 'success',
|
||||
timeout: 3000
|
||||
});
|
||||
})
|
||||
.catch(error => {
|
||||
console.error('Error:', error);
|
||||
|
||||
// Hide the progress indicator
|
||||
editor.setProgressState(false);
|
||||
// Hide the progress indicator
|
||||
editor.setProgressState(false);
|
||||
|
||||
// Re-enable the Reword button
|
||||
rewordButtonApi.setEnabled(true);
|
||||
// Re-enable the Reword button
|
||||
rewordButtonApi.setEnabled(true);
|
||||
|
||||
// Show an error notification
|
||||
editor.notificationManager.open({
|
||||
text: 'An error occurred while rewording the text.',
|
||||
type: 'error',
|
||||
timeout: 5000
|
||||
});
|
||||
});
|
||||
},
|
||||
onSetup: function(buttonApi) {
|
||||
rewordButtonApi = buttonApi;
|
||||
return function() {
|
||||
// Cleanup when the editor is destroyed (if necessary)
|
||||
};
|
||||
}
|
||||
// Show an error notification
|
||||
editor.notificationManager.open({
|
||||
text: 'An error occurred while rewording the text.',
|
||||
type: 'error',
|
||||
timeout: 5000
|
||||
});
|
||||
});
|
||||
}
|
||||
},
|
||||
onSetup: function(buttonApi) {
|
||||
rewordButtonApi = buttonApi;
|
||||
return function() {
|
||||
// Cleanup when the editor is destroyed (if necessary)
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// Add the Redact button
|
||||
editor.ui.registry.addButton('myRedactButton', {
|
||||
icon: 'permanent-pen',
|
||||
tooltip: 'Redact Text', // Tooltip text for the button
|
||||
onAction: function() {
|
||||
var selectedText = editor.selection.getContent({ format: 'text' });
|
||||
|
||||
if (selectedText) {
|
||||
// Replace the selected text with [REDACTED] in bold red
|
||||
var newContent = '<span style="font-weight: bold; color: red;">[REDACTED]</span>';
|
||||
|
||||
// Replace selected content with the new content
|
||||
editor.selection.setContent(newContent);
|
||||
} else {
|
||||
alert('Please select a word to redact');
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// Initialize TinyMCE editor with only a redact button
|
||||
|
||||
Reference in New Issue
Block a user