bloggers bloggers

Marco Napolitano
Messaggi: 79
Stelle: 0
Data: 17/02/22
Jader Jed Francia
Messaggi: 63
Stelle: 0
Data: 18/02/21
Paolo Gambetti
Messaggi: 2
Stelle: 0
Data: 11/11/19
Katia Pazzi
Messaggi: 1
Stelle: 0
Data: 27/06/19
Ezio Lombardi
Messaggi: 11
Stelle: 0
Data: 10/04/18
Chiara Mambretti
Messaggi: 25
Stelle: 0
Data: 27/02/17
Serena Traversi
Messaggi: 3
Stelle: 0
Data: 21/07/16
Francesco Falanga
Messaggi: 8
Stelle: 0
Data: 14/06/16
Antonio Musarra
Messaggi: 2
Stelle: 0
Data: 18/11/13
Simone Celli Marchi
Messaggi: 6
Stelle: 0
Data: 09/07/13
Indietro

Allineamento del testo con Alloy Editor

Liferay 7 introduce tante novità tra cui Alloy Editor, il nuovo e potente editor HTML derivato da CKEditor.

Tutto molto bello ed interessante ma chi di voi ha avuto modo di utilizzarlo si sarà sicuramente chiesto come fare per allineare il testo.

Perchè mi consente di inserire tabelle, cambiare lo stile ma non allineare il testo? E' impossibile che Alloy Editor non consenta di farlo...

Infatti è vero, Alloy Editor può farlo ma bisogna scrivere qualche riga di codice per abilitare i pulsanti; innanzitutto aggiungete questa dipendenza nel vostro file build.gradle:

compileOnly group: "com.liferay", name: "com.liferay.journal.api", version: "2.9.2"

Dopodichè aggiungete la seguente classe Java al vostro bundle web:

@Component(property = {
    "editor.name=alloyeditor",
    "javax.portlet.name=" + JournalPortletKeys.JOURNAL,
    "service.ranking:Integer=100"
}, service = EditorConfigContributor.class)
public class TextAlignmentEditorConfigContributor
    extends BaseEditorConfigContributor {

    @Override
    public void populateConfigJSONObject(
        JSONObject jsonObject, Map<String, Object> inputEditorTaglibAttributes,
        ThemeDisplay themeDisplay,
        RequestBackedPortletURLFactory requestBackedPortletURLFactory) {

        JSONObject toolbars = jsonObject.getJSONObject("toolbars");

        if (toolbars != null) {
            JSONObject toolbarStyles = toolbars.getJSONObject("styles");

            if (toolbarStyles != null) {
                JSONArray selections = toolbarStyles.getJSONArray("selections");

                if (selections != null) {
                    for (int i = 0; i < selections.length(); i++) {
                        JSONObject selection = selections.getJSONObject(i);

                        if (selection.has("name") &&
                            selection.getString("name").equals("text")) {
                            JSONArray buttons = selection.getJSONArray("buttons");

                            if (buttons != null) {
                                buttons.put("paragraphLeft");
                                buttons.put("paragraphCenter");
                                buttons.put("paragraphRight");
                                buttons.put("paragraphJustify");
                            }

                            break;
                        }
                    }
                }
            }
        }
    }
}

La classe rappresenta un componente di tipo EditorConfigContributor che è l'elemento adibito a modificare la configurazione dell'editor HTML; il componente possiede alcune proprietà attraverso le quali è possibile fare modifiche molto granulari:

  • editor.config.key, è una proprietà ripetibile che rappresenta lo specifico campo del form in cui modificare la configurazione (contentEditor, summaryEditor, ...);
  • editor.name, è una proprietà ripetibile che rappresenta il tipo di editor di cui modificare la configurazione (alloyeditor, ckeditor, ...);
  • javax.portlet.name, è una proprietà ripetibile che rappresenta il nome della portlet in cui modificare la configurazione (può essere anche una portlet custom);
  • service.ranking:Integer, rappresenta la priorità del componente (potrebbero essercene più di uno da eseguire).

La nostra classe estende poi la superclasse BaseEditorConfigContributor che si occupa di tutto il lavoro e ci obbliga ad implementare unicamente il metodo populateConfigJSONObject; questo metodo possiede alcuni parametri tra cui jsonObject che rappresenta la configurazione corrente dell'editor HTML.

Tutto quello che abbiamo fatto nel codice è stato recuperare la sezione della configurazione che contiene i pulsanti ed aggiungere in fondo quelli adibiti all'allineamento del testo. Ecco quello che otteniamo:

Attenzione perchè non abbiamo implementato l'allineamento del testo, quello già esisteva in Alloy Editor con tanto di icone; abbiamo solo aggiunto i pulsanti con il loro nome specifico.

Per maggiori dettagli consultare:

Commenti
Nessun commento. Vuoi essere il primo.