sm_employeelist im Extension Kickstarter

Im nächsten Teil meiner kleinen Beitragsreihe zur Entwicklung meiner TYPO3-Extension sm_employeelist behandle ich den ersten Entwurf der Extension im Extension Kickstarter.

Der Kickstarter

Zunächst habe ich die Extension anhand des ERM im Kickstarter modelliert. Dadurch werden die richtigen Bezeichnungen für die Datenbankfelder verwendet und man kann schon einige Funktionen nutzen, die TYPO3 zur Einschränkung der Benutzereingaben bietet (z.B. gültige Datumswerte oder nur Text etc.). Die Konfiguration ist nicht allzu aufwändig und selbterklärend. Als erstes sollte man jedoch die zusätzlichen Sprachen auswählen, damit man nicht alle Felder mehrmals durchgehen muss, nur um die Bezeichnungen in anderen Sprachen nachzutragen.

Die TYPO3-Extension sm_employeelist im Extension Kickstarter

Wie man sieht, gibt es nur ein einziges Plugin: Mitarbeiterliste (bzw. Employee List). Da mit der Extension sm_employeelist ausschließlich Listen erzeugt werden, die sich lediglich in der Darstellung unterscheiden, habe ich mich entschieden, die Konfiguration mittels FlexForms vorzunehmen und nicht mehrere Extensions zu erstellen. Dadurch entfallen auch Probleme beim Zusammenspiel der einzelnen Listen, die teilweise aufeinander verlinken (sollen).

Ich habe schon einmal statischen TypoScript-Code hinzugefügt, da die Extension natürlich über TYPO3-interne Funktionen gesteuert werden soll. Das TypoScript, das hierfür mindestens nötig ist, wird in zwei Textdateien eingetragen und bei der Installation der Extension TYPO3 hinzugefügt.

Anmerkungen

  • Datumsangaben vor 1970 sind mit dem TYPO3-Feld Date nicht möglich. Hier musste ich einen String input, advanced verwenden und diesen mittels ”Evaluate value to: Date” versehen. Das hat gegenüber einem simplen String input den Vorteil, dass ich mir keine Gedanken über durch Benutzer fehlerhaft eingetragene Werte machen oder den String manuell auseinanderpflücken muss, und einfach die date()-Funktion aus PHP nutzen kann.
  • Die Zuordnung zu Positionen geschieht mit Hilfe von Database relation. Dabei habe ich zunächst True M-M relations aktiviert, damit ich nachher besser die Mitarbeiter je Position auslesen kann, dies habe ich jedoch ”’wieder rückgängig gemacht”’, da die Zuordnung zu den Benutzergruppen auch nicht so abgebildet ist.
  • Die Einstellungen, in welchen Listen die Mitarbeiter/Abteilungen auftauchen sollen, habe ich über Checkboxes, x Boxes in a row abgebildet. Dieser Feldtyp bildet die Wahlmöglichkeiten direkt als Flag-Feld ab, genau so wie ich es haben wollte.

Feintuning

Icons

Nachdem die Bearbeitung im Kickstarter abgeschlossen war, konnte das manuelle “Feintuning” der Extension beginnen. Zunächst habe ich mir ein paar nette Icons ausgesucht, die die neuen Datensätze (Positionen und Telefonlisteneinträge) und die Extension selbst verschönern. Dabei habe ich auf die excellenten Sammlungen des Tango Desktop Projects und von Drunkey Love zurückgegriffen. Die entsprechenden Icons liegen im Root-Verzeichnis der Extension und können einfach überschrieben werden: ext_icon.gif für die Extension und icon_tx_smemployeelist_* für die Datensätze.

Angepasste Dateien

ext_emconf.php
Als ersten Schritt habe ich die Datei ext_emconf.php ein wenig angepasst, aber nichts Weltbewegendes verändert. Einfach mal die Parameter durchschauen und wenn gewünscht was eintragen: die sind selbsterklärend.
ext_localconf.php
In der Datei ext_localconf.php habe ich für die Zeit der Entwicklung das Caching abgeschaltet. Dies geschieht durch folgende Codezeile: $TYPO3_CONF_VARS['EXT']['extCache'] = 0;

Im nächsten Teil der Beitragsreihe wird es um die erste Programmierung in der vom Kickstarter erstellten Extension gehen…

Entwicklung der TYPO3-Extension sm_employeelist

Heute habe ich mich einmal hingesetzt und die Planung meiner TYPO3-Extension sm_employeelist überdacht. Ich hatte zwar schon mit der Implementierung angefangen, aber in letzter Zeit war einfach kaum Zeit um daran weiterzuarbeiten. Und da ich auch schon wieder einiges an Verbesserungspotential ausgemacht habe, bin ich einfach von vorne angefangen. Aber diesmal wird es tatsächlich durchgezogen 🙂

In einer Reihe von Beiträgen werde ich meine Vorgehensweise und den Fortschritt der Arbeit dokumentieren. Am Ende wird es in meinem Wiki dann noch einen zusammenfassenden Beitrag geben, der alles übersichtlich darstellt. Also fangen wir doch einfach mal an mit der ersten Planung…

Funktionen der Extension

  • Steckbriefkartei
    • Mitarbeiterliste
      • Listet alle Mitarbeiter auf
      • Auszugebende Felder frei konfigurierbar
      • Sortierung anhand der Spaltenüberschriften möglich
      • Sprungmarken zu Anfangsbuchstaben der Namen
    • Abteilungsliste
      • Listet Mitarbeiter einzelner Abteilungen (wahlweise) mit Bild auf
      • Unterschiedliche Darstellung abhängig von Position der Mitarbeiter
    • Fotos der Mitarbeiter
      • Zeigt alle Fotos der Mitarbeiter mit Namen an
      • Einschränkung auf Fotos “spezieller” Mitarbeiter (wie Azubis) anhand von Gruppenzugehörigkeit möglich
    • Steckbriefe
      • Einzelne Seite für jeden Mitarbeiter, auf der dessen Informationen angezeigt werden
      • Navigation zum vorherigen/nächsten Mitarbeiter des Unternehmens/der Abteilung
      • Anzeige von Icons bei Zugehörigkeit zu bestimmten Gruppen
  • Anwesenheitsliste
    • Spezielle Liste, die IP-Adresse, Rechnernamen und Anmeldungszeit ausgibt
  • Geburtstags-/Jubiläenliste
    • Druckbare Geburtstagsliste
    • Aktuelle Geburtstage (Zeitraum 1 Woche)
    • Aktuelle Jubiläen
  • Telefonliste
    • Druckbare Telefonliste
  • Statistik
    • Statistik der Mitarbeiter
    • Anzahl, männlich/weiblich, Alter etc.

Entwurf der Datenbank

ERM der TYPO3-Extension sm_employeelist
  • Sämtliche Informationen zu den Mitarbeitern werden in Tabelle typo3.fe_users abgelegt. Viele Felder sind schon vorhanden, sodass nur einige ergänzt werden müssen: Geschlecht, Geburtstag, Ersteintritt, Namenskürzel, Beschreibung für die Telefonliste, Hobbys, Positionen, IP-Adresse und der Zeitpunkt der letzten Windows-Anmeldung.
  • Die Auswahl, ob Mitarbeiter/Abteilungen in Listen angezeigt werden sollen, wird über Flags abgebildet, die in einem einzigen Datenbankfeld, settings, abgelegt werden. (Bsp: 1 = Anzeigen in Anwesenheitsliste, 2 = Anzeigen in Massageplan, 4 = Anzeigen in Steckbiefkartei usw.)
  • Die Zuweisung zu Abteilungen erfolgt anhand der Frontend-Benutzergruppen.
  • Die Tabelle tx_smemployeelist_positions enthält analog zur Tabelle fe_groups die Positionen des Unternehmens. Die Priorität wirkt sich auf die Darstellung und Sortierung in einigen Listen aus.
  • Die Tabelle für die “Abteilungen” wird um Felder ergänzt, die die Anzeigeoptionen und die Position auf der Telefonliste enthalten.
  • Zusätzliche Nummern und Gruppen für die Telefonliste werden in die Tabelle tx_smemployeelist_telephonelist eingetragen, damit sie nicht als Frontend-Benutzer angelegt werden müssen. Die Felder entsprechen den Feldern in fe_users. isgroup bestimmt, ob der Eintrag eine Gruppe oder eine normale Telefonnummer ist, und parentid zeigt auf die ID der Gruppe, falls die Telefonnummer einer solchen untergeordnet werden soll.

Als nächstes werde ich dann über den ersten Entwurf der Extension im Extension Kickstarter berichten.

Installation eines Subversion Servers unter SuSE 10.1 64-Bit

Heute habe ich auf unserem OpenSuSE Server 10.1 64-Bit einen Subversion-Server aufgesetzt. Meine Vorgehensweise beschreibe ich hier.

  1. Die grundsätzliche Installation erfolgt mittels YAST (Pakete subversion-server und subversion)
  2. Danach habe ich mich an die Anleitung bei der ERSYSGroup gehalten, wobei teilweise Änderungen auftraten:
    • Die benötigten Apache-Module werden in /etc/sysconfig/apache2 eingetragen. Sie werden der Konstanten APACHE_MODULES hinzugefügt: dav dav_svn authz_svn.

Auswahl einer Forensoftware

Heute habe ich mich nach kurzer Suche (Danke an ForumMatrix für die äußerst hilfreiche Vergleichsmöglichkeit mehrerer Foren-Programme) für eine neue Foren-Software entschieden, die endlich unser angestaubtes chc_forum ersetzen wird. Meine Wahl ist auf MyBB gefallen, nachdem ich schmerzlich feststellen musste, dass phpBB keine UTF-8-Unterstützung bietet.

MyBB bietet so ziemlich alles, was das Herz begehrt und ist umfassend konfigurierbar. Mit einem kleinen PHP-Script konnte ich schon die Benutzer aus TYPO3 auslesen und in MyBB anlegen, sodass jetzt nur noch die Beiträge übertragen werden müssen (was allerdings etwas länger dauern dürfte).

Dann muss ich nur noch ein kleines Plugin schreiben, das ein Auto-Login anhand der IP-Adresse ermöglicht, und fertig ist das neue Forum.

StudiVZ als Werbeplattform

Na endlich ist es offiziell: Das StudiVZ kann bald als größte Werbeplattform Deutschlands (oder so) starten 😀 Die Holtzbrink-Gruppe hat das Studentenverzeichnis für die kleine Summe von “irgendwo zwischen 50 und 100 Millionen Euro” erstanden. Wie heise.de uund SPON berichten, soll schon bald mit der Werbe-Offensive im StudiVZ begonnen werden.

Ist klar: Eine bessere Plattform für individuelle Werbung in der Zielgruppe der 16-30-jährigen (kaum zu glauben, aber auch zahlreiche “Nicht-Studenten” tummeln sich im StudiVZ ;)) gibt es wohl nicht. Wenn man sich mal anschaut, was die Leute so über sich preisgeben, wird mir ganz schummerig. Da stehen Handynummer und Anschrift quasi direkt neben den persönlichen Vorlieben hinsichtlich Musik, Ernährung etc. Eine kleine SQL-Abfrage dürfte reichen, um alle 20-jährigen in Stuttgart mit Vorlieben für italienisches Essen zu ermitteln…

Gut, dass ich mich niemals (offiziell ;)) im StudiVZ angemeldet habe. In den ersten Monaten hatte ich tatsächlich mit dem Gedanken gespielt…

Scrollen in alten Programmen mit neuester Logitech Mouseware

Bei uns trat mit der Einführung des Internet Explorer 7 das Problem auf, dass beim Scrollen mit dem Mausrad das Fenster weiter gescrollt wurde, auch nachdem man das Rad schon wieder losgelassen hatte. Ziemlich schnell habe ich auch die Ursache dafür herausgefunden: Eine alte Version der Logitech Mouseware (genauer gesagt Version 9.42.1). Dazu gibt es sogar einen Knowledge Base-Eintrag von Microsoft, der das Beenden von em_exec.exe empfiehlt.

Den Treiber zu deaktivieren, eine Installation der neuesten Treiber und auch eine Deinstallation der alten ohne Installation irgendwelcher Treiber (was genauso gut funktioniert bei einer simplen 2-Tasten-Maus) behob zwar das Scroll-Problem im IE7, aber leider funktionierte das Mausrad dadurch nicht mehr in einigen älteren Programmen.

Nach mehreren nicht sehr ergiebigen Suchen im Internet habe ich mich einfach mal ein wenig im Installationsordner der neuen Mouseware (Version 9.8) umgeschaut und unter %CommonProgramFiles%\Logitech\Scrolling die Datei ScrSplCs.ini entdeckt. Diese enthält anscheinend eine Liste mit Programmen, die eine spezielle Konfiguration des Mausrads benötigen. Ab Mouseware Version 9.75 sendet der Treiber wohl ein anderes Signal beim Betätigen des Scrollrads (das ist bei DigitalMars ganz gut erklärt.)

Leider gibt es zur Datei ScrSplCs.ini keinerlei Informationen oder Dokumentation im Internet, sodass ich einfach mal selbst rumprobiert habe. Eine Zeile aus der Datei sieht z.B. so aus: nlnotes,NotesRichText,5,,2,7 Offensichtlich eine kommaseparierte Liste, deren erstes Element den Namen der ausführbaren Datei (in diesem Fall Lotus Notes: nlnotes.exe) enthält. Die restlichen Parameter konnte ich mir nicht erklären (höchstens den Namen einer Klasse oder Windows-Form an zweiter Stelle), sodass ich einfach mal folgende Zeile eingefügt habe: dateiname,,,,2,7 Und siehe da: Nach einem Neustart des betreffenden Programms funktioniert das Mausrad wieder. Die beiden letzten Parameter habe ich einfach übernommen, da sie in den vorhandenen Einträgen so am häufigsten vorkamen. Wenn man sie leer lässt funktioniert das Scrollen leider nicht.

Social Bookmarking mit Scuttle

Bislang habe ich meine Bookmarks mit der Öffentlichkeit geteilt, indem ich das von mir modifizierte wp-xbel-Plugin eingesetzt habe. Mittlerweile bin ich aber auf Foxmarks umgestiegen, sodass meine Bookmarks nicht mehr allzu häufig aktualisiert werden. Außerdem fehlt mir die Möglichkeit Bookmarks zu taggen, da die Einordnung in Kategorien (Ordner im Lesezeichenmanager) zu starr ist.

Daher habe ich mich heute einmal mit einer anderen Möglichkeit beschäftigt, meine Bookmarks zu veröffentlichen: Social Bookmarks.

Aber da ich gerne alles unter meiner eigenen Kontrolle habe und nicht auf öffentliche Anbieter wie del.icio.us zurückgreifen möchte, habe ich mich für Scuttle entschieden und auch gleich mal eine Seite aufgesetzt.

Mit der zugehörigen Firefox Extension kann ich nun über zwei kleine Buttons komfortabel meine Bookmarks öffnen und vor allem neue Bookmarks hinzufügen:

Icons der Firefox-Extension Scuttle

Desktop-Blogsoftware

Ich habe mich gerade einmal kurz mit verschiedenen Desktop-Werkzeugen zum Bloggen auseinandergesetzt und entschieden, doch beim WordPress-Backend zu bleiben 😉

  • Performancing for Firefox ist ein AddOn für Firefox (wie der Name auch schon sagt). Ein Klick auf das kleine Icon in der Statusleiste öffnet das Bearbeitungsfenster, das die Standardfunktionen bietet. Prinzipiell nicht schlecht, da ich Firefox eh auf allen PCs nutze.
  • BlogDesk ist eine eigenständige Software und wohl eine Art “Urgestein” in der Szene. Bietet eine schlichte Oberfläche und die gewohnten Standardfunktionen.
  • w.bloggar ist ebenfalls eigenständig und glänzt mit der Unterstützung so ziemlich jeder Blog-Software, die man sich vorstellen kann.

Prinzipiell ist das Arbeiten mit den genannten Werkzeugen recht komfortabel (WYSIWYG, Datei-Uploads etc.), was mich aber doch zurück ins Backend treibt, sind zwar kleine aber meiner Meinung nach doch gewichtige Nachteile der einzelnen Werkzeuge.

  • Performancing verwendet b und i statt strong und em und bietet keine Möglichkeit, title-Attribute bei Links einzutragen (nur direkt im Quelltext). Mehr als nervig, wenn man diese doch sehr häufig benötigten Tags ständig abändern und jeden Link manuell nachbearbeiten muss.
  • BlogDesk bietet mir im Vergleich zu w.bloggar zuwenig Funktionen und verwendet auch noch FONT-Tags anstatt CSS für Textauszeichnung.
  • w.bloggar konvertiert Sonderzeichen in HTML-Entities, was dank UTF-8 auf dieser Seite unnötig, ja sogar nervig ist, wenn man den Beitrag später in WordPress noch einmal bearbeiten will. Stellt man die Konvertierung ab, kann w.bloggar keine Beiträge mehr veröffentlichen (parse error. not well formed). wenn das Problem nicht wäre, würde ich w.bloggar sofort einsetzen, da es die umfangreichsten Funktionen und einen hohen Komfort bietet (zwar kein WYSIWYG aber das ist mir eher nicht so wichtig). Man kann auch eigene Tags definieren (wichtig, da ich häufig CODE und TT verwende) und vieles mehr.

Kurz zusammengefasst würde ich w.bloggar verwenden, wenn das Sonderzeichen-Problem nicht wäre. Performancing ist zwar nett, bietet aber nur die veralteten Tags, und BlogDesk könnte mehr Funktionen bieten.