FCKeditor2.0 rc3 für Contenido 4.4.4

Gesperrt
tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

FCKeditor2.0 rc3 für Contenido 4.4.4

Beitrag von tono » Di 26. Apr 2005, 01:34

Da Spaw keinen XHTML-Code generiert und HTMLArea eingestellt worden ist, habe ich an einem langen Wochenende FCKeditor2.0 RC3 für Contenido 4.4.4 angepasst.

FCKeditor2.0 erzeugt sehr sauberen Code, ist XHTML kompatibel (angeblich) und sehr gut anpassbar. Vor allem aber unterstützt er sehr viele Browser. Mehr über FCKeditor gibts hier:

http://www.fckeditor.net/

Wie schon seit längerm diskutiert wird, wäre es also wünschenswert diesen Editor in Contenido nutzen zu können. Mit dieser Anpassung wird das jetzt also möglich

Eine kleine Feature-Übersicht:
  • - interne Links
    - Filebrowser ist beschränkt auf (und startet im) Mandanten-Upload-Pfad
    - Konfiguration über Benutzerverwaltung/Benutzerdefinierte Eigenschaften
    - nicht 1 Zeile Contenido-Code geändert
Installation:

1. Runterladen

Anmerkung HerrB, 23.06.2006:
Die ursprüngliche Quelle ist nicht mehr verfügbar. Außerdem gab es Änderungen. Neue Quelle mit Anmerkungen, siehe:
http://www.contenido.org/forum/viewtopi ... 9327#49327

[Out of order]web12.vcp.de/fckeditor2.0rc3contenido4.4.4_ver1.zip[/Out of order]

2. Entpacken

am besten in /contenido/external/wysiwyg/fckeditor/

3. contenido/includes/config.php anpassen:

Code: Alles auswählen

$cfg['path']['wysiwyg'] = '<Systemfad zu contenido>/<beim entpacken verwendter Pfad>'
$cfg['path']['wysiwyg_html'] = '<URL zu contenido>/<beim entpacken verwendter Pfad>'
Konfiguration:

In /fckeditor/fckconfig.js könnt ihr alle Optionen anpassen, dort findet ihr auch Beispiele. Alle hier genannten Optionen könnt ihr aber auch in der Benutzeradministration unter Benutzerdefinierte Eigenschaften eintragen. Als Bereich/Typ gebt ihr fckeditor ein als Eigenschaft die Eigenschaften aus fckconfig ohne das führende FCKConfig. , also wenn ihr FormatSource ändern wollt nur "FormatSource" und nicht "FCKConfig.FormatSource", und als Wert den gewünschten Wert.

Achtung die Eigenschaftsnamen sind casesensitive, d.h. unbedingt Groß-/Kleinschreibung beachten.

Unter /fckeditor/_docs/index.html ist auch eine Dokumentation zu finden, in der mache der Eigenschaften erklärt werden.

Darüberhinaus sind auch die Eigenschaften Height, Width und ToolbarSet verfügbar, die ihr ebenfalls wie beschrieben über die Benutzeradministration einstellen könnt.

Height und Width sind die Höhe und Breite des Editor-Bereichs. ToolbarSet wählt eine Toolbar unter den in fckconfig.js definierten aus. Man sollte theoretisch auch eigene ToolbarSets in der Benutzeradministration anlegen können, getestet ist das aber nicht, macht eh wenig Sinn.

Die Benutzereinstellung überschreibt die Einstellungen in der fckconfig.js. Die Eigenschaften LinkBrowserURL und LinkImageURL werden ignoriert, und automatisch auf die für Contenido richtigen Werte gesetzt.


Ich habe diese Anpassung für Contenido 4.4.4 geschrieben, ob sie mit andren Versionen läuft, kann ich nicht sagen. Getestet ist es jedenfalls nicht. Entsprechende Erfahrungsberichte interessieren mich natürlich genauso wie evtl. auftretende Bugs. Beachtet jedoch, dass der angepassed Editor auch noch keine offizielle Release ist und auch noch Bugs enthalten könnte.

Und wenn vielleicht jemand der sich gut mit Contenido auskennt mal in die /fckeditor/editor/filemanager/browser/default/connectors/phpcontenido/connector.php schauen könnte, und mir sagen könnte welche dieser vielen Includes ich eigentlich brauche und welche nicht, würde das die Sache noch runder machen.
Zuletzt geändert von tono am Di 26. Apr 2005, 22:29, insgesamt 1-mal geändert.

ronaldo
Beiträge: 42
Registriert: Fr 18. Mär 2005, 10:23
Kontaktdaten:

Beitrag von ronaldo » Di 26. Apr 2005, 08:50

Danke... sag ich mal. Wird ausprobiert.


Report: (C 4.4.5)
  • Musste erstmal Mozile löschen (unter contenido/external/mozile), um einen js-Fehler zu beheben (Ursache ist mir unbekannt, scheint aber mit Firefox1.0.3 zusammen zu hängen, und erstmal egal)
  • Fehler in editor.php, da ich keine Benutzereinstellungen gemacht hatte und somit das Array $fckproperties nicht existierte.
    => Hab erstmal die beiden foreach($fckproperities...)-Zeilen von einem if (is_array($fckproperties)) umgeben.
  • Die Verwendung von Benutzereinstellung führte zu einem sehr schmalen Editor-Fenster...
Erster Eindruck: gut.

ronaldo

tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von tono » Di 26. Apr 2005, 16:32

ronaldo hat geschrieben:Fehler in editor.php, da ich keine Benutzereinstellungen gemacht hatte und somit das Array $fckproperties nicht existierte.
=> Hab erstmal die beiden foreach($fckproperities...)-Zeilen von einem if (is_array($fckproperties)) umgeben.
Das macht auf jeden Fall Sinn. Werd ich übernehmen!
ronaldo hat geschrieben:Die Verwendung von Benutzereinstellung führte zu einem sehr schmalen Editor-Fenster...
Was hast Du denn eingegeben? Theoretisch sollten gültige HTML Breitenangaben funktionieren.

ronaldo
Beiträge: 42
Registriert: Fr 18. Mär 2005, 10:23
Kontaktdaten:

Beitrag von ronaldo » Di 26. Apr 2005, 16:33

Ich hatte gar nichts bezüglich der Breite eingestellt, sondern einfach:
fckeditor| DefaultLanguage | de

Daraufhin geht er offenbar den "anderen" Weg und das Fenster wird schmal. Soll heißen die Beite wird innerhalb der foreach gesetzt und dabei scheint irgendwas anders zu laufen als ohne den Weg.

tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von tono » Di 26. Apr 2005, 16:45

Interresant.

Werd ich heut Abend mal schauen.

tono
Beiträge: 574
Registriert: Mo 25. Apr 2005, 20:51
Wohnort: Frankfurt am Main
Kontaktdaten:

Beitrag von tono » Di 26. Apr 2005, 22:29

Ja, ja ich hab die Funktion strcasecmp() falsch verstanden, so wurde die Breite auf NULL gesetzt, wenn sie nicht angegeben war.

Lösung:

in der ersten foreach($fckproperities...)

Code: Alles auswählen

if (strcasecmp($name, 'height'))
ersetzen durch:

Code: Alles auswählen

if (strcasecmp($name, 'height')==0)
dasselbe für width und ToolbarSet

Diese Änderungen sind in der Datei editor.php zu machen und sind noch nicht im Download eingebaut.

Ansonsten läufts mit 4.4.5? Hab nämlich keine Ahnung was sich zwischen den Versionen geändert hat.
Zuletzt geändert von tono am Di 26. Apr 2005, 23:52, insgesamt 1-mal geändert.

HerrB
Beiträge: 6935
Registriert: Do 22. Mai 2003, 12:44
Wohnort: Berlin
Kontaktdaten:

Beitrag von HerrB » Di 26. Apr 2005, 23:22

Bitte bei Änderungen immer angeben, ob sie auch im Download-File bzw. ersten Beitrag enthalten sind. Danke.

Gruß
HerrB
Bitte keine unaufgeforderten PMs oder E-Mails -> use da Forum!

Newsletter: V4.4.x | V4.6.0-15 (Module, Backend) | V4.6.22+
Standardartikelliste: V4.4.x | V4.6.x
http://www.contenido.org/forum/search.php | http://faq.contenido.org | http://www.communido.net

casi1969
Beiträge: 71
Registriert: Mi 4. Aug 2004, 16:30
Wohnort: Köln
Kontaktdaten:

FCKeditor - Fenster zu schmal

Beitrag von casi1969 » Mi 27. Apr 2005, 17:10

Erstmal großes Lob am tono dafür, dass er sich an die Integration des FCKeditor gemacht hat! Das bringt Contenido noch ein ganzes Stück nach vorne.

Ich habe die Änderungen in der editor.php vorgenommen. Das Fenster ist aber immer noch sehr schmal. Ich benutze Version 4.4.5.

Meine editor.php sieht so aus:

Code: Alles auswählen

<?php 
/*
 * FCKeditor - The text editor for internet
 * Copyright (C) 2003-2004 Frederico Caldeira Knabben
 * 
 * Licensed under the terms of the GNU Lesser General Public License:
 * 		http://www.opensource.org/licenses/lgpl-license.php
 * 
 * For further information visit:
 * 		http://www.fckeditor.net/
 * 
 * File Name: sample01.php
 * 	Sample page.
 * 
 * Version:  2.0 RC3
 * Modified: 2005-02-27 19:35:29
 * 
 * File Authors:
 * 		Frederico Caldeira Knabben (fredck@fckeditor.net)
 */


$params='contenidoincludepath:'.$cfg['path']['contenido'].$cfg['path']['includes'];
$params.=':client:'.$client;
$params.=':lang:'.$lang;

$params=urlencode($params);

include("fckeditor.php") ;

$user = new User;
$user->loadUserByUserID($auth->auth["uid"]);

$sBasePath = $cfg['path']['wysiwyg_html'] ;

$oFCKeditor = new FCKeditor('CMS_HTML') ;
$oFCKeditor->BasePath	= $sBasePath ;
$oFCKeditor->Value		= $a_content[$type][$typenr] ;
$oFCKeditor->Config['LinkBrowserURL'] = $sBasePath . 'editor/filemanager/browser/default/browser.html?Connector=connectors/phpcontenido/connector.php&ExtraParams='.$params;
$oFCKeditor->Config['ImageBrowserURL'] = $sBasePath . 'editor/filemanager/browser/default/browser.html?Connector=connectors/phpcontenido/connector.php&ExtraParams='.$params;
$oFCKeditor->Config['CustomConfigurationsPath'] = '';

// Benutzerkonfiguration einlesen

$user = new User;
$user->loadUserByUserID($auth->auth["uid"]);
$properties = $user->GetUserProperties();

foreach($properties as $property)
	if ($property['type']=="fckeditor")
		$fckproperties[] = $property['name'];

// Height, Width und Toolbarset brauchen eine Spezialbehandlung und werden dann aus dem Array $fckproperties gelöscht.

foreach($fckproperties as $name)
	{
	if (strcasecmp($name, 'height')==0)
		{
		$oFCKeditor->Height = $user->getUserProperty("fckeditor", 'height');
		unset($fckproperties[key($fckproperties)]);
		}
	if (strcasecmp($name, 'width')==0)
		{
		$oFCKeditor->Width = $user->getUserProperty("fckeditor", 'width');
		unset($fckproperties[key($fckproperties)]);
		}
	if (strcasecmp($name, 'Toolbarset')==0)
		{
		$oFCKeditor->ToolbarSet = $user->getUserProperty("fckeditor", 'toolbarset');
		unset($fckproperties[key($fckproperties)]);
		}
	}

// Die anderen Konfigurationsoptionen werden an den Editor weitergegeben

foreach($fckproperties as $name)
	$oFCKeditor->Config[$name] = $user->getUserProperty("fckeditor", $name);

$oFCKeditor->Create() ;

?>
Außerdem erscheinen folgende Fehlermeldungen:
[27-Apr-2005 16:44:30] PHP Warning: Invalid argument supplied for foreach() in /var/www/vhosts/web37/html/contenido/external/wysiwyg/fckeditor/editor.php on line 76
[27-Apr-2005 16:45:37] PHP Fatal error: Call to undefined function: str_ireplace() in /var/www/vhosts/web37/html/contenido/includes/functions.con.php on line 1313
[27-Apr-2005 16:47:25] PHP Warning: Invalid argument supplied for foreach() in /var/www/vhosts/web37/html/contenido/external/wysiwyg/fckeditor/editor.php on line 55
Könnt Ihr helfen?
Grüße
Carsten

ronaldo
Beiträge: 42
Registriert: Fr 18. Mär 2005, 10:23
Kontaktdaten:

Beitrag von ronaldo » Mi 27. Apr 2005, 18:52

Carsten, die beiden Invalid-Argument-Fehler behebst Du wie oben (2.) schon geschrieben einfach durch ein IF. Fertig sieht das dann so aus:

Code: Alles auswählen

 [..]

if (is_array($fckproperties))
{
	foreach($fckproperties as $name) 
	   { 
	   if (strcasecmp($name, 'height')==0) 
		  { 
		  $oFCKeditor->Height = $user->getUserProperty("fckeditor", 'height'); 
		  unset($fckproperties[key($fckproperties)]); 
		  } 
	   if (strcasecmp($name, 'width')==0) 
		  { 
		  $oFCKeditor->Width = $user->getUserProperty("fckeditor", 'width'); 
		  unset($fckproperties[key($fckproperties)]); 
		  } 
	   if (strcasecmp($name, 'Toolbarset')==0) 
		  { 
		  $oFCKeditor->ToolbarSet = $user->getUserProperty("fckeditor", 'toolbarset'); 
		  unset($fckproperties[key($fckproperties)]); 
		  } 
	   } 

	// Die anderen Konfigurationsoptionen werden an den Editor weitergegeben 

	foreach($fckproperties as $name) 
	   $oFCKeditor->Config[$name] = $user->getUserProperty("fckeditor", $name); 
}

$oFCKeditor->Create() ; 

?>
Zu den anderen Sachen weiß ich nix beizutragen :(

casi1969
Beiträge: 71
Registriert: Mi 4. Aug 2004, 16:30
Wohnort: Köln
Kontaktdaten:

Beitrag von casi1969 » Mi 27. Apr 2005, 19:54

Vielen Dank ronaldo!

Probleme macht mir noch der File Browser. Wie und wo wird der konfiguriert?
Mein Mandanten-Pfad: http://www.carsten-peters.net/ww/
Frontend Pfad: /var/www/vhosts/web37/html/ww/

Und immer noch die Meldung:
[27-Apr-2005 16:45:37] PHP Fatal error: Call to undefined function: str_ireplace() in /var/www/vhosts/web37/html/contenido/includes/functions.con.php on line 1313
Grüße
Carsten

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mi 27. Apr 2005, 20:00

casi1969 hat geschrieben:Und immer noch die Meldung:
[27-Apr-2005 16:45:37] PHP Fatal error: Call to undefined function: str_ireplace() in /var/www/vhosts/web37/html/contenido/includes/functions.con.php on line 1313
Welche PHP-Version ist auf dem Server? Laut php.net gibt's die Funktion erst ab PHP5. Ich vermute, bei dir ist noch eine 4er Version installiert ...

timo
Beiträge: 6284
Registriert: Do 15. Mai 2003, 18:32
Wohnort: Da findet ihr mich nie!
Kontaktdaten:

Beitrag von timo » Mi 27. Apr 2005, 20:11

In der Datei functions.general.php in Contenido wird die str_ireplace-Funktion definiert, wenn sie nicht schon existiert (zumindest in neueren Versionen):

Code: Alles auswählen

if (!function_exists("str_ireplace"))
{
	
    function str_ireplace($find,$replace,$string)
    {
           if(!is_array($find)) $find = array($find);
           if(!is_array($replace)) $replace = array($replace);
           foreach($find as $fKey => $fItem)
           {
                   $between = explode(strtolower($fItem),strtolower($string));
                   $pos = 0;
                   foreach($between as $bKey => $bItem)
                   {
                           $between[$bKey] = substr($string,$pos,strlen($bItem));
                           $pos += strlen($bItem) + strlen($fItem);
                   }
                   $string = implode($replace[$fKey],$between);
           }
           return($string);
    }	

}

casi1969
Beiträge: 71
Registriert: Mi 4. Aug 2004, 16:30
Wohnort: Köln
Kontaktdaten:

Beitrag von casi1969 » Mi 27. Apr 2005, 20:40

@Halchteranerin

benutze Contenido Version 4.4.5.
PHP Version 4.3.8

@all

wie und wo kann ich denn den Editor anpassen, um mit dem Filebrowser interne Links zu setzen und Bilder einzubauen?

Halchteranerin
Beiträge: 5478
Registriert: Di 2. Mär 2004, 21:11
Wohnort: Halchter, wo sonst? ;-)
Kontaktdaten:

Beitrag von Halchteranerin » Mi 27. Apr 2005, 21:25

timo, was genau meinst du mit "neueren Versionen"? Denn die Funktion wird bei Carsten offensichtlich nicht gefunden ...

ronaldo
Beiträge: 42
Registriert: Fr 18. Mär 2005, 10:23
Kontaktdaten:

Beitrag von ronaldo » Do 28. Apr 2005, 08:55

Halchteranerin, offenbar definiert Contenido 4.4.5 die Funktion str_ireplace(), wenn PHP sie nicht mitbringt, einfach selbst. Warum das bei casi1969 nicht so ist, kann ich mir nicht erklären.

Bei mir (Contenido 4.4.5) funktionierte nach oben stehender Anleitung alles - also auch der Filebrowser - ganz wunderbar, casi1969.

Gesperrt