20110524 ======== Wysiwyg-Editor -------------- 10 Uhr. Die `TinyMCE-Komponente für ExtJS `_ von Andrew Mayorov funktioniert. :attr:`lino.Lino.use_tinymce`. Ich weiß noch lange nicht alles über TinyMCE (die Seite `TinyMCE for Dummies `_ war genau was ich brauchte), aber die Integration in Lino war ein erfreuliches Erlebnis. Außer natürlich, dass auch TinyMCE in HTML und nicht in XHTML speichert. Da ist wahrscheinlich am effizientesten (für mich, nicht für die armen CPUs, auf denen Lino läuft), wenn ich mein :mod:`lino.utils.html2xhtml` fertig mache. Und mit "fertig" meine ich natürlich "brauchbar". Checkin 20110524 mit ersten Erfolgserlebnissen und folgenden noch offenen Problemen: - Zentrierte Absätze werden nicht zentriert gedruckt - Der Editor wird nicht schreibgeschützt, wenn die Notiz ausgedruckt wurde. `Ext.ux.TinyMCE` ignoriert offenbar die Option `disabled`. - Mindestens eines der Sonderzeichen "Ω", "Φ" oder "→" führt beim Ausdrucksversuch zur Fehlermeldung ``'charmap' codec can't encode character u'\u03a9' in position 278: character maps to ``. - Der folgende HTML-Inhalt in einer `Note.body` wird zwar korrekt angezeigt, aber wenn ich ihn bearbeite, werden die Änderungen nicht gespeichert::

Also ich probier mal.
Schreibe ein bisschen Text.

Aufzählungen:

  1. Eins
  2. Zwei
  3. Drei
  4. Vier
  5. Fünf


Aber für :field:`notes.Note.body` gilt das nicht. Dafür ist er ideal. Auch der Ausdruck funktioniert einfach, indem ich in appy.pod
die folgende Formel verwende::

  do text
  from xhtml(self.body)
  
Der HTML-Code stammt glaube ich von meinen Experimenten mit VinylFox. Ich tippe momentan darauf, dass die SPANs mit den style-Angaben den TinyMCE durcheinanderbringen, aber weil das Phänomen nur in diesem Fall auftritt, lass ich das momentan offen. Dokumentation ------------- Ha! Zwischenducrh ist mir eine plötzliche Eingebung gekommen, wie ich ein altes Problem beim Generieren der Dokumentation mit Autodoc lösen kann. Ich kann in der Dokumentation jetzt alle Model-Klassen wie :class:`lino.apps.dsbe.models.CourseRequest` referenzieren. Django erlaubt es, auch mehrere Lino-Anwendungen gleichzeitig zu importieren. Die sind dann nur nicht aktiv. Ich musste lediglich eine kleine Änderung machen: :func:`lino.core.kernel.setup_site` hält jetzt Ausschau, ob ein Modell eine Klassenmethode `site_setup` definiert hat. Falls ja, ruft er sie auf. Wenn man vorher schrieb:: class Foo(Model): ... FOO_SPECIAL_FIELDS = reports.fields_list(Foo,'name remarks') Dann muss es jetzt so gemacht werden:: class Foo(Model): ... @classmethod def site_setup(cls,lino): lino.FOO_SPECIAL_FIELDS = reports.fields_list(cls,'name remarks') Der Grund dafür ist, dass Autodoc das Modul ansonsten nicht importieren könnte, wenn es nicht in den INSTALLED_APPS des DJANGO_SETTINGS_MODULE steht. Könnte ich das nicht stattdessen mit dem `class_prepared-Signal `_ implementieren? Antwort: nein, denn diese Methoden sollen erst aufgerufen werden, wenn Django *alle* Models prepared hat.