SteviesWebsite

‘Seite Bearbeiten’ goes WYSIWYG

Code & Blog Logo

Code & Blog Logo

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.

RSS Feed für Kommentare zu diesem Artikel. TrackBack URL

15 Kommentare »

  1. 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

  2. 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

  3. @ gentle.rocker

    Äh und wie denkst Du funktioniert Dreamweaver und Konsorten.

    MfG
    Daniel

    Kommentar von Daniel Busch — 26. August 2009 @ 07:20

  4. 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

  5. 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

  6. 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

  7. 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

  8. muss ich mir mal näher ansehen.

    Kommentar von Stefan Wienströer — 15. Juni 2010 @ 17:41

  9. 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

  10. 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

  11. Welchen Browser benutzt Du denn?

    Kommentar von Stefan Wienströer — 2. Juli 2010 @ 18:29

  12. 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

  13. 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

  14. Habs in den Issue-Tracker gepostet.

    Kommentar von Stefan Wienströer — 3. Juli 2010 @ 15:06

  15. Danke, wäre cool Du mich wissen läßt wenn ihr etwas heraus findet.

    Kommentar von Dieter — 4. Juli 2010 @ 19:55

Hinterlasse einen Kommentar

Trackbacks/Pingbacks

Blog Tutorials... helfen dir deinen Blog zu verbessern. Nebenbei gibt es noch nützliche Blog-Tools. [mehr...]

Webservice erstellenWebservices sind oft die Schnittstelle zwischen Server und Client. Wie man mit PHP einen WebService erstellt, lernt ihr in diesem Tutoial. [mehr...]

WebanalyseFür die Verbesserung Deiner Seite solltest Du wissen, wie sich die Besucher verhalten. Diese Artikel zeigen Dir wie man das am geschicktesten macht. [mehr...]

Facebook LogoOptimiere deine MySQL-Datenbank ohne Änderungen am Server. Du bekommst schnellere Abfragen und sparst Speicher.[mehr...]

Diskussion starten
  • RSS
  • Blogverzeichnis - Blog Verzeichnis bloggerei.de
‘Seite Bearbeiten’ goes WYSIWYG © SteviesWebsite.de - Kontakt | Impressum