Das CMS soll natürlich nicht nur für Informatiker sein. Auch nicht Informatiker, die kein HTML können sollen damit arbeiten können. Also gibt es heute die WYSIWYG Komponente in unseren CMS.
Aber was ist eigentlich WYSIWYG? Ganz einfach: What You See Is What You Get – Was du siehst ist, was du bekommst.
Als WYSIWYG-Editor nehmen wir TinyMCE (der wird unter anderen auch bei WP verwendet). Dort brauchen wir das Main package. Der Inhalt aus dem Ordner tinymce/jscripts/tiny_mce aus dem Zip-Archiv kommt bei unserem CMS in den Ordner /system/WYSIWYG.
Nun kommt der Einbau in unser CMS. Der Editor ist so aufgebaut, dass man nur ein JavaScript-Script einbauen muss.
Ich hab mal das Beispiel ein bisschen angepasst, so dass nicht zu viele Einträge im Menü sind. So sieht dann der Code im /admin/includes/site-edit.php aus (heute einmal ohne Syntax-Highlighting):
<input name="alias" value="<?PHP echo $page->alias; ?>" /><br />
<label for="content" />Inhalt</label>
<script type="text/javascript" src="/system/WYSIWYG/tiny_mce.js"></script>
<script type="text/javascript">
<input name="alias" value="<?PHP echo $page->alias; ?>" /><br />
<label for="content" />Inhalt</label>
<script type="text/javascript" src="/system/WYSIWYG/tiny_mce.js"></script>
<script type="text/javascript">
tinyMCE.init({
// General options
mode : "textareas",
theme : "advanced",
plugins : "safari,spellchecker,pagebreak,style,layer,table,save,advhr,advimage,advlink,
emotions,iespell,inlinepopups,insertdatetime,preview,media,searchreplace,
print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,
nonbreaking,xhtmlxtras,template,imagemanager,filemanager",
// Theme options
theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,
justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,
indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,code,|,
forecolor,backcolor",
theme_advanced_buttons3 : "tablecontrols,|,visualaid,|charmap,|,fullscreen,spellchecker,|,visualchars,template,blockquote,|,
insertfile,insertimage",
theme_advanced_toolbar_location : "top",
theme_advanced_toolbar_align : "left",
theme_advanced_statusbar_location : "bottom",
theme_advanced_resizing : true,
// Example content CSS (should be your site CSS)
content_css : "css/example.css",
// Drop lists for link/image/media/template dialogs
template_external_list_url : "template_list.js",
external_link_list_url : "link_list.js",
external_image_list_url : "js/image_list.js",
media_external_list_url : "js/media_list.js",
// Replace values for the template plugin
template_replace_values : {
username : "Some User",
staffid : "991234"
}
});
</script>
<textarea name="content"><?PHP echo $page->readContent("../"); ?></textarea>
</div>
</script>
<textarea name="content"><?PHP echo $page->readContent("../"); ?></textarea>
</div>
Jetzt sollte beim ‘Seite Bearbeiten’ schon etwas zu sehen sein. Öffnen man aber nun einen Dialog, z.B. zum Tabelle einfügen, dann kommt man auf die Startseite des CMS.
Das liegt daran, dass wir alle .htm Dateien in der .htaccess im Hauptverzeichnis umleiten. Hier müssen wir nun leider auf .html zurückgreifen, so dass die neue .htaccess so aussieht:
RewriteEngine on RewriteCond %{REQUEST_URI} /(.*).html RewriteRule (.*) /index.php?include=%1
Jetzt gibt es natürlich ein paar kleine Fehler im CMS. Zum einen müsst Ihr jetzt in allen Menüs die ihr gemacht habt die .htm in .html umwandeln.
Und die BreadCrump-Methode der Klasse sys (system/sys.php) muss noch geändert werden:
... function displayBreadcrump($separator,$class,$idpraefix){ global $currentpage; $i = 1; $breadcrump = $currentpage->getBreadcrump(); while($i <= count($breadcrump)){ echo "<a href=\"".$breadcrump[$i-1][0].".html\" class=\"".$class."\" id=\"".$idpraefix.$i."\">".$breadcrump[$i-1][1]."</a>"; if($i < count($breadcrump)){ echo $separator; } $i++; } } ...
Solltet ihr noch weitere Stellen finden, wo es jetzt kracht lasst es mich wissen
Was ich schon gefunden hab ist, dass im WYSIWYG die Rechtschreibprüfung noch nicht funktioniert. Das kommt aber dann demnächst.
Dies ist ein Beitrag aus der Aktion Code & Blog, in der hier ein eigenes CMS erstellt wird.






Ich wusste gar nicht, dass es noch so etwas wie WYSIWYG gibt; als ich vor 10 Jahren html angefangen habe, da ist mir das mal untergekommen – aber jetzt?
Kommentar von gentle.rocker — 10. August 2009 @ 17:18
Ich benutz die eigentlich auch nicht (außer für WP). Nur das CMS soll auch für Leute sein, die nicht entwickeln können.
Kommentar von Stefan Wienströer — 10. August 2009 @ 17:59
@ gentle.rocker
Äh und wie denkst Du funktioniert Dreamweaver und Konsorten.
MfG
Daniel
Kommentar von Daniel Busch — 26. August 2009 @ 07:20
Wenn ich den Code der site-edit.php kopiere bekomme ich im Textfeld einen Fatalerror angezeigt…
Fatal error: Call to a member function readContent() on a non-object in C:\xampp\htdocs\cms\admin\includes\site-edit.php on line 47
Kommentar von erxxlu — 6. April 2010 @ 01:35
Hast Du evtl. den Anfang der site-edit.php abgeschnitten / diesen Artikel überlesen?
http://blog.stevieswebsite.de/2009/07/datenbank-daten-bei-seite-bearbeiten-verwenden/
Kommentar von Stefan Wienströer — 6. April 2010 @ 11:53
Hi,
ich habe ein Problem:
im FireFox läuft alles problemfrei, im Opera kommt aber diese Fehlermeldung:
JavaScript – http://localhost/cms/admin/index.php?page=site-edit&site=index
Inline script compilation
Syntax error at line 1 while loading:
<!DOCTYPE html PUBLI
^
expected expression, got '<'
Kannst du mir da helfen? Der Browser scheint zu denken, die ganze Datei wäre Javascript…
MfG, Hannes
Kommentar von Hannes — 15. Juni 2010 @ 16:31
Hi nochmal,
ich habe gerade noch einen Fehler entdeckt.
Wenn ich im Firefox die Seite mit tiny_MCE bearbeite und dann abspeichere, fügt er vor jeden Paragraphen ein \r\n ein.
MfG, Hannes
Kommentar von Hannes — 15. Juni 2010 @ 16:45
muss ich mir mal näher ansehen.
Kommentar von Stefan Wienströer — 15. Juni 2010 @ 17:41
Der Fehler ist inzwischen behoben, woran es lag weiß ich leider nicht, aber da ich mir den ganzen code versaut habe, hab ich mir einfach den nächsten einstiegspunkt runtergeladen und da funzt alles.
Kommentar von Hannes — 23. Juni 2010 @ 18:04
Hallo Stefan,
darf ich hier nochmal kurz einsteigen, da ich gerade ein ähnliches Problem habe wie Hannes. Nach dem Bearbeiten und neu Speichern einer Seite wird der gesamte Inhalt im neuen File in eine Zeile geschrieben. Anstatt der Zeilenumbrüche erscheint im Text lesbar die Zeilen und Absatzendmarke /r/n. Eingefügte bilder werden nicht mehr eingelesen da im html text for jedes quote ” ein slash eingefügt wird und der Browser es so folglich nicht mehr als html erkennt.
Das Ganze läuft bei mir noch probeweise auf dem Rechner mit wampserver auf Windows XP 2. WYSIWYG habe ich weggelassen, da das Ändern von Haupttextelemente durch Websiteuser nicht geplant ist.
Ich würde mich da über eine Idee sehr freuen.
Gruß
Dieter
Kommentar von Dieter — 1. Juli 2010 @ 20:43
Welchen Browser benutzt Du denn?
Kommentar von Stefan Wienströer — 2. Juli 2010 @ 18:29
Ich benutze hauptsächlich Firefox 3.6 und Internet explorer 6. Das Problem taucht in beiden Browsern auf.
Kommentar von Dieter — 2. Juli 2010 @ 20:12
Hallo Stefan,
habe gerade noch ein bischen herumgespielt und herausgefunden, daß OPERA das gleich produziert.
Nach dem Bearbeiten einer Seite kommt dann folgendes zustande.
\r\nÜberschrift\r\nHier kommt\\\’s dann mit ein bischen text und alles ohne Zeilenumbruch\r\n
Als Editor benutze ich Webocton Scriptly.
Kommentar von Dieter — 2. Juli 2010 @ 20:52
Habs in den Issue-Tracker gepostet.
Kommentar von Stefan Wienströer — 3. Juli 2010 @ 15:06
Danke, wäre cool Du mich wissen läßt wenn ihr etwas heraus findet.
Kommentar von Dieter — 4. Juli 2010 @ 19:55