ZwiiCampus/core/vendor/tinymce/init.js

393 lines
14 KiB
JavaScript
Raw Normal View History

/**
* Initialisation de TinyMCE
*/
/**
* Quand tinyMCE est invoqué hors connexion, initialiser privateKey
*/
2023-11-11 17:55:21 +01:00
if (typeof (privateKey) == 'undefined') {
var privateKey = null;
};
tinymce.init({
2023-11-11 17:55:21 +01:00
// Classe où appliquer l'éditeur
selector: ".editorWysiwyg",
// Aperçu dans le pied de page
setup: function (editor) {
// Événement 'change'
editor.on('change', function (e) {
if (editor.id === 'themeFooterText') {
2023-11-11 17:55:21 +01:00
$("#footerText").html(tinyMCE.get('themeFooterText').getContent());
}
if (editor.id === 'themeHeaderText') {
2023-11-11 17:55:21 +01:00
$("#featureContent").html(tinyMCE.get('themeHeaderText').getContent());
}
});
// Événement 'init'
// Cette partie permet de récupérer l'attribut de zwii_site_content qui contient le code de l'espace ouvert stocké dans la session php
editor.on('init', function () {
var siteContent = document.getElementById('zwii_site_content').getAttribute('data-variable');
siteContent = siteContent === null ? 'home' : siteContent;
// Charger le contenu CSS avec siteContent
var newStylesheetUrls = [
baseUrl + "core/layout/common.css",
baseUrl + "core/vendor/tinymce/content.css",
baseUrl + "site/data/" + siteContent + "/theme.css",
baseUrl + "site/data/custom.css"
];
// Supprime les anciennes feuilles de style si nécessaire
newStylesheetUrls.forEach(function(url) {
editor.dom.loadCSS(url); // Charger les nouvelles feuilles de style
});
});
},
// Langue
language:"fr_FR",
// Plugins
2024-01-18 15:31:35 +01:00
plugins: "advlist anchor autolink autoresize autosave codemirror contextmenu colorpicker fullscreen hr image imagetools link lists media paste searchreplace tabfocus table template textcolor visualblocks nonbreaking emoticons charmap textpattern",
// Contenu du menu
menu: {
2023-11-11 17:55:21 +01:00
file: { title: 'File', items: 'newdocument restoredraft' },
edit: { title: 'Edit', items: 'undo redo | cut copy paste pastetext | selectall | searchreplace' },
view: { title: 'View', items: 'code | visualaid visualblocks | fullscreen' },
insert: { title: 'Insert', items: 'image link media pageembed template inserttable | charmap emoticons hr | nonbreaking anchor' },
tools: { title: 'Tools', items: '' },
table: { title: 'Table', items: 'inserttable | cell row column | tableprops deletetable' },
help: { title: 'Help', items: 'help' }
},
// Contenu de la barre d'outils
2023-11-06 21:31:01 +01:00
toolbar: [
2023-11-11 17:55:21 +01:00
"bold italic underline forecolor backcolor | h1 h2 h3 | | bullist numlist | alignleft aligncenter alignright alignjustify | outdent indent removeformat | link image media |fullscreen",
2023-11-08 18:45:11 +01:00
],
toolbar_sticky: true,
2023-11-11 17:55:21 +01:00
fontsize_formats:
"8pt 9pt 10pt 11pt 12pt 14pt 18pt 24pt 30pt 36pt 48pt 60pt 72pt 96pt",
theme: "silver",
max_height: 600,
// CodeMirror
codemirror: {
indentOnInit: true, // Whether or not to indent code on init.
2023-11-11 17:55:21 +01:00
path: 'codemirror', // Path to CodeMirror distribution
saveCursorPosition: false, // Insert caret marker
config: { // CodeMirror config object
fullscreen: true,
lineNumbers: true,
indentUnit: 4,
mode: "htmlmixed"
},
jsFiles: [
2023-11-11 17:55:21 +01:00
'mode/php/php.js',
'mode/css/css.js',
'mode/htmlmixed/htmlmixed.js',
'mode/htmlembedded/htmlembedded.js',
'mode/javascript/javascript.js',
'mode/xml/xml.js',
'addon/search/searchcursor.js',
'addon/search/search.js',
],
width: 800,
height: 500
},
// Cibles de la target
2023-11-11 17:55:21 +01:00
target_list: [
{ title: 'None', value: '' },
{ title: 'Nouvel onglet', value: '_blank' }
],
// Target pour lightbox
2023-11-11 17:55:21 +01:00
rel_list: [
{ title: 'None', value: '' },
{ title: 'Une popup (Lity)', value: 'data-lity' },
{ title: 'Une galerie d\'images (SimpleLightbox)', value: 'gallery' }
],
// Titre des images
image_title: true,
// Pages internes
link_list: baseUrl + "core/vendor/tinymce/links.php",
// Contenu du menu contextuel
2023-11-11 17:55:21 +01:00
contextmenu: "selectall searchreplace | hr | media image link anchor nonbreaking | insertable cell row column deletetable",
// Fichiers CSS à intégrer à l'éditeur
content_css: [
baseUrl + "core/layout/common.css",
baseUrl + "core/vendor/tinymce/content.css",
baseUrl + "site/data/home/theme.css", // Ceci sera mis à jour dans l'événement 'init'
2023-10-04 07:18:17 +02:00
baseUrl + "site/data/custom.css"
],
// Classe à ajouter à la balise body dans l'iframe
body_class: "editorWysiwyg",
// Cache les menus
menubar: true,
// URL menu contextuel
link_context_toolbar: true,
// Cache la barre de statut
statusbar: true,
// Coller images blob
paste_data_images: true,
/* Eviter BLOB à tester
images_dataimg_filter: function(img) {
return img.hasAttribute('internal-blob');
},*/
// Autoriser tous les éléments
valid_elements: '*[*]',
// Autorise l'ajout de script
extended_valid_elements: "script[language|type|src]",
// Conserver les styles
keep_styles: false,
// Bloque le dimensionnement des médias (car automatiquement en fullsize avec fitvids pour le responsive)
media_dimensions: true,
// Désactiver la dimension des images
image_dimensions: true,
// Active l'onglet avancé lors de l'ajout d'une image
image_advtab: true,
// Urls relatives
relative_urls: true, // Utiliser des URLs relatives
remove_script_host: false, // Conserver le script host (domaine)
convert_urls: true, // Convertir automatiquement les URLs
// Url de base
document_base_url: baseUrl,
// Gestionnaire de fichiers
filemanager_access_key: privateKey,
external_filemanager_path: baseUrl + "core/vendor/filemanager/",
external_plugins: {
"filemanager": baseUrl + "core/vendor/filemanager/plugin.min.js"
},
// Contenu du bouton insérer
insert_button_items: "anchor hr table",
// Contenu du bouton formats
2023-11-11 17:55:21 +01:00
/**
style_formats: [
{
title: "Headers", items: [
{ title: "Header 1", format: "h1" },
{ title: "Header 2", format: "h2" },
{ title: "Header 3", format: "h3" },
{ title: "Header 4", format: "h4" }
]
},
{
2023-11-11 17:55:21 +01:00
title: "Blocks", items: [
{ title: "Paragraph", format: "p" },
{ title: "Blockquote", format: "blockquote" },
{ title: "Div", format: "div" },
{ title: "Pre", format: "pre" }
]
}
2023-11-11 17:55:21 +01:00
],*/
// Templates
2023-11-11 17:55:21 +01:00
templates: [
2024-03-10 18:07:35 +01:00
{
title: "Bloc de texte",
url: baseUrl + "core/vendor/tinymce/templates/block.html",
description: "Bloc de texte avec un titre."
},
{
title: "Lien de retour",
url: baseUrl + "core/vendor/tinymce/templates/back_home.html",
description: "Insère un lien vers l'accueil de la plate-forme."
},
{
title: "Lien de désinscription",
url: baseUrl + "core/vendor/tinymce/templates/unsuscribe.html",
description: "Insère un lien de désinscription."
},
{
title: "Effet accordéon",
url: baseUrl + "core/vendor/tinymce/templates/accordion.html",
description: "Bloc de texte avec effet accordéon."
},
2024-03-10 18:07:35 +01:00
{
title: "Effet accordéon DHTML",
url: baseUrl + "core/vendor/tinymce/templates/details.html",
description: "Bloc de texte avec effet accordéon DHTML (details)."
},
{
title: "Grille symétrique : 6 - 6",
url: baseUrl + "core/vendor/tinymce/templates/col6.html",
2023-11-11 17:55:21 +01:00
description: "Grille adaptative sur 12 colonnes, sur mobile elles passent les unes en dessous des autres."
},
{
title: "Grille symétrique : 4 - 4 - 4",
url: baseUrl + "core/vendor/tinymce/templates/col4.html",
2023-11-11 17:55:21 +01:00
description: "Grille adaptative sur 12 colonnes, sur mobile elles passent les unes en dessous des autres."
},
{
title: "Grille symétrique : 3 - 3 - 3 - 3",
url: baseUrl + "core/vendor/tinymce/templates/col3.html",
2023-11-11 17:55:21 +01:00
description: "Grille adaptative sur 12 colonnes, sur mobile elles passent les unes en dessous des autres."
},
{
title: "Grille asymétrique : 4 - 8",
url: baseUrl + "core/vendor/tinymce/templates/col4-8.html",
2023-11-11 17:55:21 +01:00
description: "Grille adaptative sur 12 colonnes, sur mobile elles passent les unes en dessous des autres."
},
{
title: "Grille asymétrique : 8 - 4",
url: baseUrl + "core/vendor/tinymce/templates/col8-4.html",
2023-11-11 17:55:21 +01:00
description: "Grille adaptative sur 12 colonnes, sur mobile elles passent les unes en dessous des autres."
},
{
title: "Grille asymétrique : 2 - 10",
url: baseUrl + "core/vendor/tinymce/templates/col2-10.html",
2023-11-11 17:55:21 +01:00
description: "Grille adaptative sur 12 colonnes, sur mobile elles passent les unes en dessous des autres."
},
{
title: "Grille asymétrique : 10 - 2",
url: baseUrl + "core/vendor/tinymce/templates/col10-2.html",
2023-11-11 17:55:21 +01:00
description: "Grille adaptative sur 12 colonnes, sur mobile elles passent les unes en dessous des autres."
}
2024-01-18 15:31:35 +01:00
],
textpattern_patterns: [
{ start: '*', end: '*', format: 'italic' },
{ start: '**', end: '**', format: 'bold' },
{ start: '#', format: 'h1' },
{ start: '##', format: 'h2' },
{ start: '###', format: 'h3' },
{ start: '####', format: 'h4' },
{ start: '#####', format: 'h5' },
{ start: '######', format: 'h6' },
{ start: '1. ', cmd: 'InsertOrderedList' },
{ start: '* ', cmd: 'InsertUnorderedList' },
{ start: '- ', cmd: 'InsertUnorderedList' },
{ start: '* ', cmd: 'InsertUnorderedList' },
{ start: '- ', cmd: 'InsertUnorderedList' },
{ start: '1. ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'decimal' } },
{ start: '1) ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'decimal' } },
{ start: 'a. ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'lower-alpha' } },
{ start: 'a) ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'lower-alpha' } },
{ start: 'i. ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'lower-roman' } },
{ start: 'i) ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'lower-roman' } }
]
});
tinymce.init({
// Classe où appliquer l'éditeur
selector: ".editorWysiwygComment",
setup: function (ed) {
// Aperçu dans le pied de page
ed.on('change', function (e) {
if (ed.id === 'themeFooterText') {
$("#footerText").html(tinyMCE.get('themeFooterText').getContent());
}
});
// Limitation du nombre de caractères des commentaires à maxlength
var alarmCaraMin = 200; // alarme sur le nombre de caractères restants à partir de...
var maxlength = parseInt($("#" + (ed.id)).attr("maxlength"));
var id_alarm = "#blogArticleContentAlarm"
var contentLength = 0;
ed.on("keydown", function (e) {
2023-11-11 17:55:21 +01:00
contentLength = ed.getContent({ format: 'text' }).length;
if (contentLength > maxlength) {
$(id_alarm).html("Vous avez atteint le maximum de " + maxlength + " caractères ! ");
if (e.keyCode != 8 && e.keyCode != 46) {
e.preventDefault();
e.stopPropagation();
return false;
}
2023-11-11 17:55:21 +01:00
}
else {
if (maxlength - contentLength < alarmCaraMin) {
$(id_alarm).html((maxlength - contentLength) + " caractères restants");
2023-11-11 17:55:21 +01:00
}
else {
$(id_alarm).html(" ");
}
}
});
// Limitation y compris lors d'un copier/coller
ed.on("paste", function (e) {
2023-11-11 17:55:21 +01:00
contentLeng = ed.getContent({ format: 'text' }).length - 16;
var data = e.clipboardData.getData('Text');
if (data.length > (maxlength - contentLeng)) {
$(id_alarm).html("Vous alliez dépasser le maximum de " + maxlength + " caractères ! ");
return false;
} else {
if (maxlength - contentLeng < alarmCaraMin) {
$(id_alarm).html((maxlength - contentLeng - data.length) + " caractères restants");
2023-11-11 17:55:21 +01:00
}
else {
$(id_alarm).html(" ");
}
return true;
}
});
},
// Langue
language: "fr_FR",
// Plugins
2024-01-18 15:31:35 +01:00
plugins: "advlist anchor autolink autoresize autosave colorpicker contextmenu hr lists paste searchreplace tabfocus template textcolor textpattern",
// Contenu de la barre d'outils
toolbar: "bold italic forecolor backcolor | alignleft aligncenter alignright alignjustify | bullist numlist",
// Titre des images
image_title: true,
// Pages internes
link_list: baseUrl + "core/vendor/tinymce/links.php",
// Contenu du menu contextuel
contextmenu: "cut copy paste pastetext | selectall searchreplace ",
// Fichiers CSS à intégrer à l'éditeur
content_css: [
baseUrl + "core/layout/common.css",
baseUrl + "core/vendor/tinymce/content.css",
2023-11-11 17:55:21 +01:00
baseUrl + "site/data/theme.css",
baseUrl + "site/data/custom.css"
],
// Classe à ajouter à la balise body dans l'iframe
body_class: "editorWysiwyg",
// Cache les menus
menubar: false,
// URL menu contextuel
link_context_toolbar: true,
// Cache la barre de statut
statusbar: false,
// Autorise le copié collé à partir du web
paste_data_images: true,
// Bloque le dimensionnement des médias (car automatiquement en fullsize avec fitvids pour le responsive)
media_dimensions: true,
// Désactiver la dimension des images
image_dimensions: true,
// Active l'onglet avancé lors de l'ajout d'une image
image_advtab: true,
// Urls relatives
relative_urls: true, // Utiliser des URLs relatives
remove_script_host: false, // Conserver le script host (domaine)
convert_urls: true, // Convertir automatiquement les URLs
// Url de base
document_base_url: baseUrl,
max_height: 200,
2024-01-18 15:31:35 +01:00
textpattern_patterns: [
{ start: '*', end: '*', format: 'italic' },
{ start: '**', end: '**', format: 'bold' },
{ start: '#', format: 'h1' },
{ start: '##', format: 'h2' },
{ start: '###', format: 'h3' },
{ start: '####', format: 'h4' },
{ start: '#####', format: 'h5' },
{ start: '######', format: 'h6' },
{ start: '1. ', cmd: 'InsertOrderedList' },
{ start: '* ', cmd: 'InsertUnorderedList' },
{ start: '- ', cmd: 'InsertUnorderedList' },
{ start: '* ', cmd: 'InsertUnorderedList' },
{ start: '- ', cmd: 'InsertUnorderedList' },
{ start: '1. ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'decimal' } },
{ start: '1) ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'decimal' } },
{ start: 'a. ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'lower-alpha' } },
{ start: 'a) ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'lower-alpha' } },
{ start: 'i. ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'lower-roman' } },
{ start: 'i) ', cmd: 'InsertOrderedList', value: { 'list-style-type': 'lower-roman' } }
]
});
function getCookie(name) {
var nameEQ = name + "=";
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
}