npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

@massimo-cassandro/ckeditor-utilities

v3.0.5

Published

CKEditor 5 custom builds & utilities

Downloads

15

Readme

CKEditor utilities

Utilità per l'implementazione di CKEditor 5.

breaking changes

  • rispetto alla versione 2.x, nella versione 3 non esistono più i parametri selector e cke_url, sostituiti da std_selectors, custom_editor_selector e custom_editor_url
  • la class di default editor è stata rinominata in editor-custom

Loader

CKEditor loader semplifica e automatizza l'attivazione di CKEditor su un textarea.

Sono previste diverse tipologie di editor:

  • custom: editor personalizzabile (con loader immagini personalizzato) compilata ad hoc (ed al momento è ferma alla versione 29 di CKEditor 5)
  • uno più editor costruiti tramite il builder presente sul sito CKeditor (https://ckeditor.com/ckeditor-5/online-builder/), mentre la versione custom è .

Per implementare il loader, includere lo script e impostare le opzioni:

import {ckeditor_loader} from '@massimo-cassandro/ckeditor-utilities';

 ckeditor_loader({
   std_selectors: {
    'selettore1': '/path/to/ckeditor1',
    'selettore2': '/path/to/ckeditor2',
    ...
  },

  // opzioni per custom editor:
  custom_editor_selector: 'editor-custom',
  custom_editor_url: '/ckeditor-dist/ckeditor-custom-min.js',

  upl_url   : '/path/to/server_script',
  img_viewer: '/viewer-url/',
  link_auto_ext_target_blank: true,
  link_download: true,
  link_target_blank: true
});

In cui:

  • std_selectors è un oggetto che associa ad ogni selettore il rispettivo script. I nomi delle classi possono essere definiti a piacere (default: {})
  • solo per custom editor:
    • custom_editor_selector: selettore classe custom editor (default: editor-custom),
    • custom_editor_url: oath ckeditor custom (default: null),
    • upl_url è l'url dello script lato server per l'upload delle immagini (se richiesto)
    • img_viewer è l'url dell'applicazione per la visualizzazione delle immagini caricate (se richiesto)
    • link_auto_ext_target_blank: (default false) se true a tutti gli url esterni vengono automaticamente aggiunti gli attributi target="_blank" e rel="noopener noreferrer"
    • link_download: (default false) se true viene visualizzata l'opzione per forzare il download del link
    • link_target_blank: (default false) se true viene visualizzata l'opzione "Apri in nuova finestra" che imposta gli attributi target="_blank" e rel="noopener noreferrer"

Il loader attiva automaticamente CKEditor per tutti i textarea la cui classe corrisponda a custom_editor_selector o corrispopanda ad una delle chiavi di std_selectors.

Non è possibile utilizzare più script (ovvero editor con configurazioni diverse) nella stessa pagina. Il loader dà la precedenza al custom editor (se la classe corrispondente è presente nella pagina) e in alternativa imposta come editor quella corrispondente alla prima classe di std_selectors presente nella pagina.

Per disabilitare completamente il custom editor, impostare custom_editor_selector su null.

Se fosse necessario attivare editor con diverse configurazioni nella stessa pagina, usare il custom editor.

Custom editor

Negli editor custom la toolbar viene modellata in base alla configurazione definita dalle classi assegnate al textarea:

  • la classe definita in custom_editor_selector da sola attiva l'editor in forma standard (completa)

In aggiunta a questa: * la classe editor-lite attivano l'editor senza possibilità di inserimento delle immagini * la classe editor-xlite attivano l'editor eliminando, oltre alle immagini, le tabelle * la classe editor-xxlite attivano l'editor eliminando tutto tranne bold, italic, link e l'allineamento del testo * la classe editor-xxxlite attivano l'editor eliminando tutto tranne bold, italic, link * la classe editor-no-headings, se aggiunta ad una qualsiasi delle impostazioni precedenti, elimina la gestione degli headings (se presenti).

Abilitazione elementi al caricamento di ckeditor

Ad evitare che un textarea sia modificabile prima dell'attivazione di CKeditor (che su reti lente potrebbe avere un delay avvertibile), è sufficiente disabilitarlo e aggiungere l'attributo data-enable="editor".

<textarea class="editor-1" id="textarea1" data-enable="editor" disabled></textarea>

All'attivazione di CKEditor, il campo verrà automaticamente abilitato.

Oltre che sui textarea, questo metodo può essere applicato ad ogni elemento che necessiti di essere abilitato in questo modo.

In aggiunta, se l'elemento in esame è all'interno di un div.form-group, l'eventuale classe disabled presente, viene eliminata.

Per altre info, vedi gli esempi nella dir test.

Altre funzionalità del loader

Oltre a caricare lo script ckeditor, il loader esegue anche alcune altre operazioni:

Lista degli editor

All'attivazione, tutte le istanze di ckeditor attivate vengono aggiunte all'oggetto window.ckeditor_instances, identificabili dall'id del textarea associato.

In questo modo è possibile eseguire operazioni su ogni editor facendo riferimento a window.ckeditor_instances.id, dove id è l'id del textarea su cui è stato attivato ckeditor.

NB: se l'id non è presente viene assegnato automaticamente

Controllo massima dimensione (KB) immagini (solo custom editor)

Il caricamento delle immagini all'interno di un elemento CKEditor è limitato di default a 4MB.

Per variare questo valore, è sufficiente aggiungere al textarea l'attributo data-cke-upl-max-size che deve riportare il valore in byte della massima dimensione dell'immagine.

Esempio, per limitare le immagini a 1 MB:

<textarea class="editor-custom" id="textarea1" data-cke-upl-max-size="1048576"></textarea>

Utilità

Oltre al loader, possono essere aggiunti al progetto:

  • ckeditor_form_check che aggiunge dei controlli non presenti nativamente in CKEditor: campi required, pulizia del testo copiato (viene azzerata la maggior parte della formattazione ecentualmente presente) e trimming delle righe vuote
  • _ckeditor-bs5.scss supporto per le classi aggiunte da CKEditor (per la gestione di tabelle e immagini) con l'estensione di alcune classi di Bootstrap 5.

Il file scss va incluso con @import:

@import '@massimo-cassandro/ckeditor-utilities/scss/ckeditor-bs5';

ckeditor_form_check

ckeditor_form_check è un'utility che, quando richiamata, associa ai form presenti nella pagina un controllo sugli elementi textarea che contengano le classi utilizzate dal loade per l'attivazione del loader.

I controlli eseguiti sono:

  • pulizia di righe vuote (comprese le stringhe <p>&nsbp;</p> poste all'inizio e alla fine del codice HTML prodotto da CKEditor) e altri potenziali errori di formattazione
  • verifica di textarea required non compilati
// i valori mostrati sono quelli di default
ckeditor_form_check({
  selectors: ['editor-std', 'editor-full', 'editor-custom'],
  requiredErrorMes: requiredElement => {
    return `L'elemento ${requiredElement} è obbligatorio`;
  },
  alertUI: mes => {
    alert(mes);
  }
});

In cui:

  • selectors: array contenente i selettori da controllare
  • requiredErrorMes è la funzione che restituisce la stringa del messaggio d'errore per i campi required. L'argomento è una stringa che permetta all'autente l'identificazione del campo
  • alertUI è la funzione che richiama l'interfaccia di visualizzazione dell'errore (default window.alert)

Esempio di implementazione di ckeditor e delle utilità

In quest'esempio la configurazione del loader è anche utilizzata per condividere la lista dei selettori con ckeditor_form_check:

import {ckeditor_loader, ckeditor_form_check} from '@massimo-cassandro/ckeditor-utilities';

const ckeditor_loader_config = {
  std_selectors: {
    'selettore1': '/path/to/ckeditor1',
    'selettore2': '/path/to/ckeditor2',
    // ...
  },

  custom_editor_selector: 'editor-custom',
  custom_editor_url: '/ckeditor-dist/ckeditor-custom-min.js',

  upl_url: 'path/to/uploader',
  img_viewer: 'path/to/viewer/',
  link_auto_ext_target_blank: true,
  link_download: true,
  link_target_blank: true
};

ckeditor_loader(ckeditor_loader_config);

const selectors_list = [
  ...Object.keys(ckeditor_loader_config.std_selectors), 
  ...(ckeditor_loader_config.custom_editor_selector? [ckeditor_loader_config.custom_editor_selector] : [])
];


ckeditor_form_check({
  selectors: selectors_list,
  requiredErrorMes: requiredElement => {
    return `L'elemento ${requiredElement} è obbligatorio`;
  },

  alertUI: mes => {
    alert(mes);
  }
});