blog.bartlweb - a technologist's external brain

TinyMCE in Alfresco Share 3.1 integrieren

Diese Anleitung beschreibt alle notwendigen Schritte um den YUI-Editor zum bearbeiten Wiki-Seiten und zum Erstellen bzw Editieren von Blogeinträgen gegen TinyMCE zu tauschen. Alle weiteren Editoren zum Anlegen von Kommentaren werden dadurch nicht getauscht.

Vorteile

  • Überschriften definierbar
  • mehr Möglichkeiten
  • bessere Benutzbarkeit

Einschränkungen

  • Alfresco entfernt beim Abspeichern leider diverse Tags (pre, code) -> um dies zu umgehen können aber benutzerdefinierte Styles definiert werden die dann auf p oder span-Tags angewendet werden können.

Umsetzung

1) TinyMCE Sources kopieren

Laden Sie die aktuelle Version von TinyMCE herunter und kopieren sie den Ordner “/jscripts/tiny_mce” nach “/opt/Alfresco/tomcat/webapps/share/js”

2) init.js erstellen

TinyMCE benötigt einen init-Aufruf mit übergabe der benutzerdefinierten Konfiguration. Für die Verwendung in Alfresco definieren wir diesen Konfiguration Global und kapseln den Aufruf in eine eigene Funktion.

Erstellen Sie dazu unter “/opt/Alfresco/tomcat/webapps/share/js/tiny_mce” die Datei init.js mit folgendem Inhalt:

function loadTinyMCE() {
  tinyMCE.init({
    // General options
    mode : "textareas",
    theme : "advanced",
    plugins : "safari,style,table,advimage,advlink,iespell,inlinepopups,insertdatetime,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking",
    content_css : "/share/themes/default/presentation.css",
    // Theme options
    theme_advanced_buttons1 : "formatselect,styleselect,|, bold,italic,underline,strikethrough,sup,sub,|,justifyleft,justifycenter,justifyright,|,bullist,numlist,outdent,indent,|,forecolor,backcolor",
    theme_advanced_buttons2 : "undo,redo,|,link,unlink,|,image,|,charmap,insertdate,inserttime,|,removeformat,cleanup,code,pasteword,|,fullscreen",
    theme_advanced_buttons3 : "",
    theme_advanced_blockformats : "p,h1,h2,h3,h4",
    theme_advanced_styles : "Code=code;Zitat=cite",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : true, preformatted : true,
    width : 800,
    height : 400;
  });
}

3) JavaScript Dateien in den Header der entsprechenden Seiten einfügen

Fügen Sie dazu folgende 2 Zeilen in den HTML-Header der unten gelisteten Templates ein.

<script type="text/javascript" src="${url.context}/js/tiny_mce/tiny_mce.js"></script>
<script type="text/javascript" src="${url.context}/js/tiny_mce/init.js"></script>
  • /opt/Alfresco/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/wiki-page.ftl
  • /opt/Alfresco/tomcat/webapps/share/WEB-INF/classes/alfresco/templates/org/alfresco/blog-postedit.ftl

4) JavaScript der betreffenden Seiten umschreiben

Wiki-Page

editieren Sie "/opt/Alfresco/tomcat/webapps/share/components/wiki/wiki.js":

Zeile 337: "this.pageEditor.render();" durch folgenden Code ersetzen:

loadTinyMCE();

Zeile 440: "this.pageEditor.saveHTML();" durch folgenden Code ersetzen:

var iframe = document.getElementById(this.id + "-pagecontent_ifr");
var html = iframe.contentWindow.document.body.innerHTML;
document.getElementById(this.id + "-pagecontent").value = html;
Blog-Postedit

editieren Sie “/opt/Alfresco/tomcat/webapps/share/components/blog/postedit.js”:

Zeile 354: "this.pageEditor.render();" durch folgenden Code ersetzen:

loadTinyMCE();

Zeile 371: auskommentieren von  "this.widgets.postForm.addValidation(this.id + "-content", Alfresco.forms.validation.mandatory, null);"

Zeile 406: "this.widgets.editor..saveHTML();" durch folgenden Code ersetzen:

var iframe = document.getElementById(this.id + "-content_ifr");
var html = iframe.contentWindow.document.body.innerHTML;
document.getElementById(this.id + "-content").value = html;

5) benutzerdefiniertes CSS

definieren Sie unter "/opt/Alfresco/tomcat/webapps/share/themes/default/presentation.css" folgende Styles:

  • H1 – H6
  • p.code, span.code
  • p.cite, span.cite
  • eventuell auch p, ul, ol

Beachten Sie die Definitionen nur für den Editor und die Ausgabe in Blog und Wiki gültig zu machen:

  • für Editor: #tinymce
  • für Wiki-Seite: .wiki-page .rich-content
  • für Blog-Ausgabe: .post .content

Dieser Artikel hat Dir deinen Tag gerettet?

... und mühevolles Probieren, Recherchieren und damit Stunden an Zeit gespart? Oder einfach nur Dein Problem gelöst?

Dann würde ich mich freuen, wenn Du meine Zeit für die Erstellung dieses Blogartikels mit einer kleinen Anerkennung honorierst:

Zahlung mit PayPal oder Kreditkarte.

Hinweis zur Verwendung

Die Übermittlung einer Zahlung ist eine persönliche Anerkennung Ihrerseits an den Entwickler (Christian Bartl, Privatperson). Eine Zahlung ist nicht zweckgebunden und es ist keine Gegenleistung zu erwarten. Bitte beachten Sie, dass für eine übermittelte Zahlung keine Quittung ausgestellt werden kann.

Über den Autor

Christian Bartl

Christian Bartl Requirements Engineer
& Solution Architect für Online und Mobile

Als Technologie-Enthusiast und begeisterter Programmierer entwickle ich in meiner Freizeit Websites, Software und IT-Lösungen, die mir selbst und anderen den Alltag vereinfachen.

mehr auf christian.bartl.me

Kommentare

Noch kein Kommentar vorhanden.
Sei der Erste! - Ich freue mich über deine Anmerkung, Kritik oder Frage.

Kommentar schreiben

Der hier angegebene Name wird gemeinsam mit deinem Kommentar auf der Website veröffentlicht.

Deine E-Mail-Adresse wird zur einmaligen Benachrichtigung bei Veröffentlichung des Kommentars genutzt.

Benachrichtigung per E-Mail über Antworten auf meinen Kommentar erhalten.

Bitte tippe die Zahlenkombination "8871" ein, nur dann kann ich deinen Kommentar entgegennehmen.

Bitte fülle dieses Feld nicht aus, nur dann kann ich deinen Kommentar entgegennehmen.