TinyMCE und AjaxFileManager

Aus Contao Community Documentation

betrifft
Contao Version 2.10.0

Eine Anleitung, wie man den kostenlosen und durchaus brauchbaren "AjaxFileManager" in Contao einbindet.

Download des AjaxFileManagers

Das Paket "Ajax File and Image Manager Version 1.0 Final" von php.letter.com downloaden.

Dateien kopieren

Aus dem heruntergeladenen Paket (s.o.) den Ordner ajaxfilemanager nach plugins/tinyMCE/plugins/ajaxfilemanager kopieren.
Alles andere aus der heruntergeladenen zip-Datei wird nicht gebraucht.

Konfigurationsdatei bearbeiten

Die Datei plugins/tinyMCE/plugins/ajaxfilemanager/inc/config.base.php öffnen, darin in den Zeilen 52/53 CONFIG_SYS_DEFAULT_PATH und CONFIG_SYS_ROOT_PATH folgendermaßen setzen:

define('CONFIG_SYS_DEFAULT_PATH', '../../../../tl_files/media'); //accept relative path only
define('CONFIG_SYS_ROOT_PATH', '../../../../tl_files/media');	//accept relative path only

Dabei /media nach eigenen Wünschen anpassen oder auch weglassen...

tinyMCE.php bearbeiten

Die Konfigurationsdatei system/config/tinyMCE.php folgendermaßen bearbeiten:

ajaxfilemanager hinzufügen

In der Zeile, die mit elements: beginnt, ajaxfilemanager hinzufügen. Dies sieht dann so aus:

elements : "<?php echo $this->rteFields; ?>,ajaxfilemanager",

file_browser_callback ergänzen

Hinter theme_advanced_resizing: true, folgende Zeile einfügen:

file_browser_callback : "ajaxfilemanager",

Ob es genau diese Position innerhalb der tinyMCE.php sein muss, weiß ich nicht, aber irgendwo stand diese Empfehlung und es funktioniert so bei mir.

Skript einfügen

Am Ende der Datei vor </script> folgendes einfügen:

// start ajaxfilemanager configuration
function ajaxfilemanager(field_name, url, type, win) {
            var ajaxfilemanagerurl = "plugins/tinyMCE/plugins/ajaxfilemanager/ajaxfilemanager.php";
            switch (type) {
                case "image":
                    break;
                case "media":
                    break;
                case "flash":
                    break;
                case "file":
                    break;
                default:
                    return false;
            }
	    var view='thumbnail'; //alternativ: 'detail'
	    var language='de';
            tinyMCE.activeEditor.windowManager.open({
                url: ajaxfilemanagerurl + '?view=' + view + '&language=' + language,
		title: "Ajax Dateimanager",
                width: 882,
                height: 540,
                inline : "yes",
                close_previous : "no"
            },{
                window : win,
                input : field_name,
		resizable: "yes"
            });
            return false;
        }
// end ajaxfilemanager configuration

Wenn man als Grundeinstellung nicht thumbnail, sondern detail wünscht, kann man die Zeile mit var view = 'thumbnail' entsprechend anpassen.
Im Forenthread befindet sich in diesem Post (siehe Anhang) meine tinyMCE.php mit allen Änderungen.

Nachtrag

Um die Änderungen updatesicher zu machen, kann AjaxFileManager auch so einbinden:
Die Datei system/config/tinyMCE.php kopieren und umbenennen in z.B. tinyCustom.php.
Dann alle angeführten Änderungen in tinyCustom.php eintragen.
Zum Einbinden der tinyCustom.php folgende Zeile in system/config/dcaconfig.php eintragen:

$GLOBALS['TL_DCA']['tl_content']['fields']['text']['eval']['rte'] = 'tinyCustom';

Deutsche Sprachdatei hinzufügen

Die deutsche Sprachdatei findet sich im Forenthread und kann als Anhang von diesem Posting herunter geladen werden.
Diese Datei muss in das Verzeichnis plugins/tinyMCE/plugins/ajaxfilemanager/langs kopiert werden.

Ordner- und Dateirechte setzen

Wie ein Forumsmitglied bestätigte, ist dieser Abschnitt nur wichtig, wenn Contao im Safe-Mode-Hack-Modus läuft.
Im SMH-Modus braucht der Ordner plugins/tinyMCE/plugins/ajaxfilemanager/session und die beiden darin enthaltenen Dateien die Dateirechte 0775, damit AjaxFileManager nicht die fehlenden Rechte moniert.

Dateirechte setzen für Dateien, die mit AjaxFileManager hochgeladen werden

(ebenfalls nur nötig für Installationen mit SafeMode-Hack)
AjaxFileManager bearbeitet Dateien nicht als ftp-user, sondern als Webserveruser. Das bedeutet u. U. Einschränkungen für AjaxFileManager bei Dateien, die dem ftp-user gehören, und umgekehrt.
Damit alle Vorgänge reibungslos funktionieren, brauchen die Dateien im tl_files/media-Ordner (siehe Abschnitt Konfigurationsdatei bearbeiten) und der Ordner selbst die Dateirechte 0775.
AjaxFileManager vergibt beim Upload aber nur die Dateirechte 0755. Um dies abzuändern, muss man in der Datei plugins/tinyMCE/plugins/ajaxfilemanager/inc/class.upload.php den Wert 0775 für var $uploadFileMode eintragen (Zeile 30):

var $uploadFileMode = 0775;

Forenthread

Diskussionsthread im Forum

Wenn jemand etwas mit dieser Anleitung anfangen kann, dann würde es mich freuen.
Ulrike

Ansichten
Meine Werkzeuge

Contao Community Documentation

Nur weil es bei Nachbarseite XYZ was gibt, wird automatisch oft davon ausgegangen, dass das fertige Bauteil einsatzbereit auf der Straße liegt.

Marie Dietz
Navigation
Verstehen
Verwenden
Entwickeln
Verschiedenes
Werkzeuge