HTML::CalendarMonthSimple fuer semantisches Web richtig nutzen und patchen

Da hab ich gestern etwas zu früh über das Modul HTML::CalendarMonthSimple geschimpft.
Zwar ist die Default-Ausgabe in der Tat altes HTML4, jedoch gibt es Möglichkeiten, die Ausgabe teilweise auch richtig zu machen.

Die Manual war da leider nicht so deutlich; Ein Blick in den Sourcecode zeigte jedoch die Möglichkeit der Methode $self->sharpborders(), bzw. dessen Ablehnung.

Stattdessen kann dann auch zum Beispiel mit der Methode $self->tableclass eine CSS-Klasse definiert werden, die für die Tabelle gilt.

Notwendig ist also, daß einige Defaults geändert werden, damit gewisse Attribute aus HTML4 nicht gesetzt werden:

   $self->sharpborders     = 0;
   $self->border              = 0;
   $self->width               = '';
   $self->cellalignment     = '';
   $self->vcellalignment    = '';
   $self->nowrap             = 0;
   $self->header              = sprintf("%s %d",
                               Date::Calc::Month_to_Text($self->{'month'}),$self->{'year'});


Mit diesen Voreinstellungen sollten die gröbsten Probleme behoben sein.

Einige weitere semantische Unsauberkeiten bleiben. So zum Beispiel die Ausgabe der Tagesnummern.
Im Modul wie folgt:

if ($self->showdatenumbers()) {
              if ( $self->getdatehref( $thisday )) {
                $thiscontent = "<p><b><a href=\"".$self->getdatehref($thisday);
                $thiscontent .= "\">$thisday</a></b></p>\n";
              } else {
                $thiscontent = "<p><b>$thisday</b></p>\n";
              }
            }
}

Überschriften in Tabellenzellen sollten jedoch entweder als <th> deklariert werden, ohne innerhalb der Zelle mit den
jeweiligen Überschrift-Tags. Das Nutzen von Fettdruck ist eigentlich dafür nicht so sinnvoll.

Ebenso ungeschickt ist die Darstellung des Headers. Im Modul wird dieser wie folgt generiert:

   if ($header) {
      $html .= "<tr><td colspan=\"7\"";
      $html .= " bgcolor=\"$headercolor\"" if defined $headercolor;
      $html .= " class=\"$headerclass\"" if defined $headerclass;
      $html .= ">";
      $html .= "<font color=\"$headercontentcolor\">" if defined $headercontentcolor;
      $html .= $header;
      $html .= "</font>"  if defined $headercontentcolor;
      $html .= "</td></tr>\n";
   }

Der Header, also in diesem Fall die Überschrift der Tabelle wäre aber sinnvoller innerhalb eines <caption>-Bereiches oder mittels der Attribute title oder summary definiert.

2 Kommentare zu “HTML::CalendarMonthSimple fuer semantisches Web richtig nutzen und patchen

Kommentarfunktion ist geschlossen.

  1. Ich hab jetzt doch begonnen das Modul zu ändern.

    Den Autor hab ich dabei mal angeschrieben, ob er Interesse hat, allerdings fürchte ich die Mail kommt nie an, da die Domain die in seiner CPAN-ID angegeben ist, zum Verkauf steht…