Seite 2 von 2

Verfasst: Donnerstag 12. Februar 2009, 11:06
von hendrikS
Leonidas hat geschrieben:Pygments highlightet auch Quelltext der fast immer in Monospace gesetzt ist, daher passt das ja auch so
Ich denke deine Argumentation ist nicht kausal. Die Formatierung ist ja nicht im Quelltext enthalten sondern ist lediglich eine Darstellungsfrage.

Verfasst: Donnerstag 12. Februar 2009, 12:56
von Leonidas
hendrikS hat geschrieben:Ich denke deine Argumentation ist nicht kausal. Die Formatierung ist ja nicht im Quelltext enthalten sondern ist lediglich eine Darstellungsfrage.
Die Ausgaben von Pygments werden fast immer Monospaced dargestellt. Du hingegen stellst es nicht monospaced dar, daher passt die Ausrichtung nicht.

Verfasst: Donnerstag 12. Februar 2009, 13:03
von hendrikS
... dann habe ich Dich offenbar eben anders verstanden als Du es meintest.

Ein Update kommt doch bald.

Verfasst: Freitag 13. Februar 2009, 10:16
von tordmor
hendrikS hat geschrieben: Und ich habe mir auch den HTMLCalendar angesehen, mit dem man in drei Zeilen und ein bisschen CSS das auch ordentlich hinbekommen kann.
Leider lassen sich die Feiertage in den Algorithmus von calender.py nicht so einfach integrieren. Also auf den ersten Blick schien das so.
Try this one:

Code: Alles auswählen

from calendar import HTMLCalendar
from datetime import date

class MyCal(HTMLCalendar):
    def formatday(self, day, weekday, thedate):
        """
        Return a day as a table cell.
        """
        if day == 0:
            return '<td class="noday"> </td>' # day outside month
        else:
            year, month = thedate
            d = date(year, month, day)
            if not self.specialday(d):
                return '<td class="%s">%d</td>' % (self.cssclasses[weekday], day)
            else:
                return '<td class="%s">%d</td>' % ('specialday', day)


    def formatweek(self, theweek, thedate):
        """
        Return a complete week as a table row.
        """
        s = ''.join(self.formatday(d, wd, thedate) for (d, wd) in theweek)
        return '<tr>%s</tr>' % s

    def formatmonth(self, theyear, themonth, withyear=True):
        """
        Return a formatted month as a table.
        """
        v = []
        a = v.append
        a('<table border="0" cellpadding="0" cellspacing="0" class="month">')
        a('\n')
        a(self.formatmonthname(theyear, themonth, withyear=withyear))
        a('\n')
        a(self.formatweekheader())
        a('\n')
        for week in self.monthdays2calendar(theyear, themonth):
            a(self.formatweek(week, (theyear, themonth)))
            a('\n')
        a('</table>')
        a('\n')
        return ''.join(v)


Verfasst: Freitag 13. Februar 2009, 12:55
von gerold
tordmor hat geschrieben:

Code: Alles auswählen

        v = []
        a = v.append
        a('<table border="0" cellpadding="0" cellspacing="0" class="month">')
        a('\n')
        a(self.formatmonthname(theyear, themonth, withyear=withyear))
        ...
Hallo!

Genau so -- würde ich es nicht programmieren!
Solcher Code wird sehr schnell sehr unübersichtlich. Einfacher wird es, wenn man für das Zusammensetzen von HTML-Seiten eine Vorlagensprache verwendet. Jinja, Genshi, oder Cheetah --- egal was du nimmst, aber versuche nicht HTML mit Python zusammenzusetzen. Die Fehlersuche wird bei solchem Code zur Hölle. Aber OK, jeder wie er mag.

mfg
Gerold
:-)

Verfasst: Freitag 13. Februar 2009, 16:34
von Leonidas
gerold hat geschrieben:Genau so -- würde ich es nicht programmieren!
Solcher Code wird sehr schnell sehr unübersichtlich. Einfacher wird es, wenn man für das Zusammensetzen von HTML-Seiten eine Vorlagensprache verwendet. Jinja, Genshi, oder Cheetah --- egal was du nimmst, aber versuche nicht HTML mit Python zusammenzusetzen. Die Fehlersuche wird bei solchem Code zur Hölle.
Nicht nur das, aber man sollte dann auch darauf achten Sachen selbst zu escapen sonst hat man prompt eine XSS-Lücke. Templatesprachen beherrschen teilweise sogar Autoescaping, so dass jeder Code erstmal als "gefährlich" angesehen wird und dann als "safe" markiert werden muss. Meiner Meinung nach ist das eigentlich eine gute Idee, denn ich escape lieber "sichere" Eingaben als alle unsicheren Eingaben zu escapen, was zu größeren Problemen führen kann.

Verfasst: Freitag 13. Februar 2009, 23:27
von hendrikS
Ich habe die Formatierung des Kalenders jetzt mal korigiert. Getestet habe ich das ganze mit http://www.browsershots.org. War sehr hilfreich. Lediglich der Konqueror weigert sich noch das ganze monospaced darzustellen. Hier scheint es aber ein Browserproblem zu sein. Auch Pygments generierte Seiten kommen schlecht rüber im Konquerer. Es werden im Web auch jede Menge Bugs von Konqueror im Zusammenhang mit <PRE> reported.

Kurzes Feedback noch mal wäre vielleicht nicht schlecht.

Nichts desto trotz werde ich jetzt noch eine weitere Version erstellen, die eine Tabellendarstellung verwendet. Die Idee einfach von HTMLCalender abzuleiten ist eigentlich nicht schlecht. Sonst ist es natürlich auch eine gute Gelegenheit mal Jinja oder Cheetah kennenzulernen.

Ich werde den Kalender demnächst permanent in meine kommende Webseite integrieren und auch noch ein bisschen erweitern wie schon im Root Posting beschrieben. Werde sicher hier mal informieren, wenn noch das ein oder andere Feature dazugekommen ist.

Sonst danke allen für das Feedback. Ich hätte es sonst vielleicht gar nicht gemerkt, daß es mit einigen Browsern ziemlich güllig aussieht.

Verfasst: Freitag 13. Februar 2009, 23:44
von Leonidas
hendrikS hat geschrieben:Kurzes Feedback noch mal wäre vielleicht nicht schlecht.
Also für das <FONT>-Element würden dich Web-Designer wohl lynchen ;)

<PRE> ist übrigens im Standard-Style schon monospaced, da muss man nicht zusätzlich monospace anwenden. Für sowas ist Firebug ziemlich toll weil man da mit einem Klick CSS-Eigenschaften ein und ausschalten kann sowie diese auch verändern kann.

Verfasst: Freitag 13. Februar 2009, 23:55
von hendrikS
Leonidas hat geschrieben: Also für das <FONT>-Element würden dich Web-Designer wohl lynchen ;)
Damit könnte ich im Zweifel leben. :) Aber was ist daran eigentlich falsch oder nicht Web-Designer konform? Ich bin im Web noch Anfänger.

Verfasst: Samstag 14. Februar 2009, 00:03
von BlackVivi
hendrikS hat geschrieben:
Leonidas hat geschrieben: Also für das <FONT>-Element würden dich Web-Designer wohl lynchen ;)
Damit könnte ich im Zweifel leben. :) Aber was ist daran eigentlich falsch oder nicht Web-Designer konform? Ich bin im Web noch Anfänger.
Ist wie ein komplettes Layout basierend auf Tabellen machen - einfach veraltet. Die ganze Conten von Präsentation trennen ist auch HTML nicht spurlos vorbeigezogen... Man verwendet heute meistens Container im Zusammenhang mit CSS für das komplette Design.

http://www.csszengarden.com/

Die Seite zeigt was's möglich macht. Eigentlich wird nur die CSS geändert und es sind unendlich viele Designgs möglich...

Verfasst: Samstag 14. Februar 2009, 00:18
von hendrikS
BlackVivi hat geschrieben: http://www.csszengarden.com/
Beeindruckend. Danke für den Tip.

Verfasst: Samstag 14. Februar 2009, 08:07
von tordmor
gerold hat geschrieben: Genau so -- würde ich es nicht programmieren!
Solcher Code wird sehr schnell sehr unübersichtlich. Einfacher wird es, wenn man für das Zusammensetzen von HTML-Seiten eine Vorlagensprache verwendet. Jinja, Genshi, oder Cheetah --- egal was du nimmst, aber versuche nicht HTML mit Python zusammenzusetzen. Die Fehlersuche wird bei solchem Code zur Hölle. Aber OK, jeder wie er mag.

mfg
Gerold
:-)
Öhm, der Code ist aus der standardlib kopiert (calendar.py). Ich hab nur die Übergabe des Datums an format_day hinzugefügt. Ansonsten stimme ich dir zu :)

Verfasst: Samstag 14. Februar 2009, 09:24
von gerold
tordmor hat geschrieben:Öhm, der Code ist aus der standardlib kopiert (calendar.py).
Hallo tordmor!

Dass die für die Standardlib keine externe Vorlagensprache einbinden, sehe ich ein. :-)

mfg
Gerold
:-)