Puh, was für eine Tortur! Ging doch wirklich der ganze Tag dafür drauf, ein Code-Snippet Plugin für den Fckeditor zu finden. Auf den ersten Blick sah das sehr einfach aus, mit dem Geshi-Filter bekommt man auch sehr schnell schöne Ergebnisse. Nur steckt der Teufel leider wieder im Detail. So muss man mit nassen Augen mit ansehen, wie plötzlich das Code-Snippet bis auf die erste Zeile verschwindet, sobald man den entsprechenden Artikel editiert.
Der Grund ist, dass die WYSIWYG-Editoren wohl mit den Zeilenumbrüchen nichts anfangen können. Da hat es auch nichts genutzt, den "\n nach <br />"-Filter auszuschalten. Eine Möglichkeit wäre, das Code-Snippet einzufügen und vom Editor alle Sonderzeichen umwandeln zu lassen. Wenn man diese Stelle markiert, dann könnte der Code clientseitig per Javascript geparsed werden (weil klar ist, wie das Format aussieht). Und genau das machen wir jetzt!
Um es nicht zu spannend zu machen, das brauchen wir alles:
Zuerst installieren wir das Fckeditor-Plugin wie auf der Plugin-Website beschrieben.
[Update] Anstatt der fckconfig.js wie in der Installationsanleitung angegeben, verwenden wir die fckeditor.config.js im Modulordner. Nicht vergessen den Browser- und Drupalcache zu leeren! Der richtige Ordner ist "modules/fckeditor/plugins".
Das Drupalmodul können wir wie üblich nach "sites/all/modules/" entpacken.
Als letzter Schritt will die SyntaxHighlighter lib nach "sites/all/modules/syntaxhighlighter/" entpackt werden. In "modules/syntax.../syntaxhighlighter/" befinden sich dann die Ordner "scripts, src und styles".
Damit können wir das Drupalmodul aktivieren und konfigurieren. Es ist zu empfehlen nur die nötigsten Brushes zu laden (also nur die Programmier-/Skriptsprachen deren Code wir posten möchten). Damit lässt sich der Traffic einschränken.
Im Editor finden wir nun den
Button. Darüber können wir jetzt unseren Code einfügen. TATA! Geschafft!
Oder nicht? Darauf achten, dass als Eingabeformat "Full HTML" ausgewählt ist, sonst werden die Tags gleich wieder beschnitten. Auf der Projektseite des Moduls steht zwar, dass es auch mit "Filtered HTML" funktioniert, das tut es aber nur, wenn man den Code mit {\syntaxhighlighter OPTIONS } (ohne Backslash) kennzeichnet, was der FCKEditor-Button aber leider nicht kann. Es wäre sicher möglich etwas JS des Buttons anzupassen um das hinzubekommen. Da ich hier aber der einzige User bin und ich mir vertraue, spare ich mir das ;)
Und jetzt raus mit euren Quellcodes!
Beispiel:
/**
* Receive postcard from someones holiday.
*/
function dosser_highscore_report_holiday_js($version, $name, $script_version) {
if ($script_version == variable_get('dosser_highscore_holiday_script_version', '1.0.3')) {
$versions = unserialize(variable_get('dosser_highscore_versions', 'a:0:{}'));
if (array_key_exists($version, $versions)) {
watchdog('dosser_highscore_holiday', '@dosser (@version) is in holiday', array('@dosser' => $name, '@version' => $version), WATCHDOG_NOTICE);
db_query('UPDATE {dosser_highscore_'. $version .'} SET holiday = holiday+1 WHERE name = \'%s\'', $name);
drupal_json(array('status' => TRUE, 'msg' => t('A postcard from @names holiday was successfully send to @url. Thank you!', array('@name' => $name, '@url' => url('<front>', array('absolute' => TRUE))))));
}
else {
watchdog('dosser_highscore_holiday', 'Wrong version received: @version', array('@version' => $version), WATCHDOG_NOTICE);
drupal_json(array('status' => FALSE, 'errmsg' => t('Dossergame version not recognized. Please use the holiday report script provided at @url.', array('@url' => url('<front>', array('absolute' => TRUE))))));
}
}
else {
drupal_json(array('status' => FALSE, 'errmsg' => t('Your holiday report script version is outdated. Please take a look at @url for a new one.', array('@url' => url('<front>', array('absolute' => TRUE))))));
}
exit;
}
Re: Drupal: Code-Snippets mit Syntax-Highlighting für Fckeditor
schon weiter mit problem?
ich kriege es nämlich auch nicht zum Laufen ... ;(
Der button will nicht so wie ich ;)
Re: [UPDATE] Drupal: Code-Snippets mit Syntax-Highlighting ...
Probiers nochmal, bei mir haut es nun hin.
Re: Drupal: Code-Snippets mit Syntax-Highlighting für Fckeditor
Ne, sorry. Habs nicht mehr gebraucht und Prüfungen gehabt. Sobald ich neue Erkenntnisse habe, werde ich sie hier aber natürlich teilen :)
Re: Drupal: Code-Snippets mit Syntax-Highlighting für Fckeditor
Hab alles soweit gemacht aber irgendwie zeigt der den Button nicht an :(
Cheers
Skull
Re: Drupal: Code-Snippets mit Syntax-Highlighting für Fckeditor
Der Fehler scheint in der Config des FCKEditors zu liegen. Die Testseite zeigt nämlich, dass der Syntaxhighlighter prinzipiell funktioniert. Schreibe ich aber in die sites/all/modules/fckeditor/fckeditor/fckconfig.js die Zeilen
alert(FCKConfig.PluginsPath);
FCKConfig.Plugins.Add( 'syntaxhighlight2', 'en') ;
und ergänze das Toolbarset Default mit 'SyntaxHighlight2', dann sieht man, dass der Pfad richtig ist, der Button SyntaxHighlight2 aber nicht gefunden wird. Ist mir jetzt aber zu spät um da weiter zu kucken...
Re: Drupal: Code-Snippets mit Syntax-Highlighting für Fckeditor
Das habe ich auch schon gemerkt. Nach irgendeinem Update lief das nicht mehr. Ich vermute mal, dass man entweder was an der Konfigurationsdatei des FCKEditors ändern muss und/oder an den Pfaden etwas nicht mehr stimmt. Sobald ich etwas Zeit habe, werde ich dem mal auf den Grund gehen.
Re: Drupal: Code-Snippets mit Syntax-Highlighting für Fckeditor
Wie man sieht funktioniert es nun wieder. Hoffentlich kann ich das nochmal rekonstruieren um den Artikel zu korrigieren ;)
Kommentar hinzufügen