Step II-III
Hab ich heute gemacht, trotz guter Vorbereitung habe ich den Aufbau ein bisschen verpatzt. Theoretisch konnte ich es aufbauen, praktisch hat es vor lauter Aufregung nicht funktioniert. Am Ende waren die Teilnehmer doch zufrieden.
Block A:
6 ZZ – Basic, March (Anlauf nehmen)
12 ZZ – Chacha re am Step entlang, Mambo li am Boden dabei wieder zum Step drehen, A-Step weg vom Step
14 ZZ – 2 March Straddle li, Repeater Knee li, Kick re
Block B:
8 ZZ – halber Basic re rauf Vierteldrehung nach links, Switch oben, re ab, aus dem Straddle Double Stomp li
8 ZZ – Box Step li zurück nach Süd, Turn Reverse li
8 ZZ – Double Stomp re (auf Step, hinter Step), Single Stomp li
8 ZZ – Pivot Turn (gross, Fuß ist hinter Step), Basic over
Block C:
5 ZZ – Double Stomp re ums Step spidern
11 ZZ – halber Basic rauf, Lunge li, Lunge re, 180 Grad Drehung nach re, Mambo li dabei zurückdrehen, Mambo schließen
10 ZZ – halber Basic rauf dabei nach links drehen, vorne ab, Straddle, Kick
6 ZZ – Sixpoint over zurück nach Süd
Aufbauvorschlag:
Block A: 2 Basic, Chacha, Mambo, Basic, Repeater, Kick – 2.Basic zu Marches – umstellen
Block B: rauf ab mit Marches und 2 Basic üben – Marches werden zu Double Stomp – 1.Basic zu Box, 2.Basic zu Turn Reverse – Seitdrehung – vier Basic dranhängen – die ersten zwei zu Double Stomp, Single Stomp
Block C: 3 Basic + 1 Kick – erste zwei Basic werden zu Sixpoint – dann rauf etc. – Sixpoint ans Ende stellen – davor 4 Basic – die ersten zwei zu Double Stomp und Single Stomp – dann Double Stomp, halben Basic etc.
Letzen Login anzeigen
Das hier ist ein Konzept, das ich umgesetzt habe, den Quellcode darf/möchte ich (noch) nicht veröffentlichen.
Aufgabenstellung: im Extranet dem Benutzer das Datum seines letzen Logins anzeigen. Problem: Sobald sich ein Benutzer in Typo einloggt, wird automatisch das Datum neu gesetzt, so dass der Benutzer immer den Zeitpunkt vor ein paar Minuten zu sehen bekommt.
Egal wie der Benutzer sich einloggt – newloginbox oder felogin (neu als Systemextension in 4.2), das Einloggen und das Setzen des Wertes findet immer auf Core-Ebene statt. Die felogin bietet zwar eine Möglichkeit für einen Hook an, da ist das Setzen des Wertes aber schon passiert und auf den alten Wert kann man nicht mehr zugreifen.
Um das Problem zu lösen, braucht man in der fe_users Tabelle zwei weitere Felder – ein Backup-Feld für lastlogin und ein Feld mit dem tatsächlichen letzen Login, nennen wir sie mal ll_bkp und real_ll.
Bei Login-Vorgang passiert folgendes: Ganz am Anfang auf Core-Ebene wird der Benutzer eingeloggt, der Wert lastlogin wird gesetzt. Wenn die Extension aufgerufen wird, wird aus dem Backup (der ist noch der alte) der Wert ins Real-Last-Login übertragen, und das Backup mit dem neuen lastlogin-Wert (der aktuelle Zeitpunkt) überschrieben. Warum braucht man das Backup-Feld? Weil man keine Möglichkeit hat, das lastlogin vor dem Überschreiben irgendwie zu sichern. Und das macht man „manuell“ in der Extension.
Natürlich muss sich der Benutzer mindestens zweimal einloggen, damit im real_ll ein vernünftiger Wert steht (ist aber auch so logisch).
Wann kann man das einbauen? Man kann den Hook in der newloginbox oder felogin nutzen, um den eben beschriebenen Kopiervorgang auszuführen. Das wird dann beim Einloggen einmal ausgeführt. Das mit dem Hook klappt leider nicht, wenn die Login-Seite die Eigenschaft gesetzt hat, beim Einloggen ausgeblendet zu werden und stattdessen die Logout-Seite angezeigt wird. Da kommt es nach dem Einloggen gar nicht erst zur Ausführung des felogin/newloginbox Codes und des dazugehörigen Hooks.
Da besteht die Möglichkeit, die Extension auf jeder Seite einzubinden und die Werte nur dann zu kopieren, wenn ein Benutzer eingeloggt ist und das Backup sich vom lastlogin-Wert unterscheidet. Sobald man es einmal kopiert hat, ist es nicht mehr der Fall. Die Werte, die man zum Vergleichen benötigt stehen praktischerweise direkt im GLOBALS Objekt, das beim Einloggen mit allen in der Datenbank verfügbaren Daten des Benutzerdatensatzes geladen wird.
Kerstin Gier – Die Mütter-Mafia
Bewertung 7/10
Insgesamt sehr nett – eine alleinerziehende Mutter zieht in einen Vorort von Köln und trifft dort auf Glucken (Mütter, die ihre Kinder übererziehen und dabei nicht merken, was um sie herum passiert). Mal wieder mit viel Ironie und Humor geschrieben und leichter Lesestoff. Die Beschreibung der Über-Mütter ist nicht übertrieben, irgendwie realistisch und doch erschreckend, da es bestimmt solche Mütter gibt. Die Story ist irgendwie vorhersehbar, was an dem Umschlagtext liegt, der schon das Ende des Buches verrät. Und es gibt eine Vorsetzung – „Die Patin“, werde ich wohl auch lesen.
Widrigkeiten des IE6
Hab heute ein kleines Drop-Down-Menü umgesetzt, so ähnlich wie das hier:
http://www.cssplay.co.uk/menus/final_drop2.html
Erkenntnisse des Tages:
- ohne der Angabe der background-color (oder background allgemein) in den Untermenüpunkte reagiert der IE6 gar nicht auf Drop Downs
- der IE8(Beta) funktioniert selbst im IE7-Modus anders als der IE7 nativ, da wurde der aktive Status vom Menü nicht korrekt dargestellt und gelegentlich verschwinden die Texte
- Windows und Mac haben komplett unterschiedliches Schriften-Rendering, auf dem einen System ist die Schrift ganz passabel, auf dem anderen passt sie nicht in die Ausgabefläche
- bei verschachtelten Menüs verschwinden die Menüpunkte komplett, wenn man mit Transparenzen arbeitet – man kann ein transparentes Menü machen, es verschwindet aber, wenn man versucht es nicht transparent zu machen bei Rollover
Lösung gibt es für die vielen Probleme leider keine, immer nur Workarounds. Da macht man das Menü im IE6 bei Rollover eben nicht opaque, gibt einen schwachsinningen Hintergrund, damit es angezeigt wird. *kotz*
IE8 Compliance Tag
Falls man (wie ich) den IE8 Beta zum Testen installiert hat, dieser den IE7 platt gemacht hat und die Seiten darin echt sch… (schlecht) aussehen, hier gibt es Hilfe – der Meta Tag, der dem IE8 sagt, wie er die Seite zu rendern hat.
Funktioniert sogar. Ich bekomme langsam Kopfschmerzen und schlage vor, einfach nur Screenshots mit Imagemaps auszuliefern.
Flexforms (Part 1)
Bei der Entwicklung von eigenen Extensions arbeite ich im BE fast nur noch mit Flexforms – es ist wirklich toll, dass man damit fast alles an Eingaben realisieren kann. Ich wollte mal ein paar sinnvolle Schnipsel zusammenstellen, wie man bestimmte Sachen definiert, ansonsten muss man in tt_news nachschauen (wunderbares Beispiel) und in anderen Extensions, wenn man was bestimmtest benötigt.
Wenn man den Kickstarter nutzt, dann wird gleich das richtige Grundgerüst definiert, aber hier ist es nochmal:
Die Sheets werden in Typo3 in Form von Reitern dargestellt. Ein Sheet kann einen beliebigen Namen haben (würd ich behaupten), der Kickstarter erzeugt eines, das sDEF heißt. Darin befindet sich ein Element namens ROOT und darin wird in TCEforms der Inhalt des Sheets definiert.
Innerhalb des el-Elements (ist vom Typ Array) können nun unterschiedliche Felder definiert werden. Der Name dieser Felder ist beliebig (darf keine Leer- und Sonderzeichen enthalten), darüber kann der Wert der Felder im Plugin in der PHP-Klasse ausgelesen werden.
Hier ist z.B. eine Checkbox:
Der Wert heißt „random“ und kann im BE (MVC-Style) wie folgt ausgelesen werden:
$random = intval($this->configurations->get(‚random‘));
Ich habe mit das irgendwie so angewöhnt, die Locallang-Wert mit ff. zu versehen, damit man erkennt, dass es in den Flexforms verwendet wird.
Reicht für heute 🙂
Templa Voila: Redakteure können keine Inhalte löschen
Problem war, dass Redakteure keine Inhalte löschen konnten, aber auch nur manchmal. Es war möglich in der Listenansicht, aber nicht über das Mülleimer-Symbol in der „normalen“ Content bearbeiten Ansicht.
Die Rechte waren auf den ersten Blick richtig gesetzt, die Zugriffsrechte auch. Beim Anlegen der Elemente war es auch komisch – innerhalb eines 2-spaltigen FCEs war es nicht möglicht, dahinter oder davor schon. Wenn man doch ein Element innerhalb des 2-spaltigen FCE anzulegen versuchte, wurde es nicht korrekt verknüft und als „nicht verwendet“ dargestellt.
Die Lösung: Templa Voila bringt ein weiteres Feld mit, das sich in der Liste der „allowed excludfields“ gut tarnt – Seite:Inhalt. Dieses Feld muss bei der Gruppe mit ACLs ausgewählt werden und schon funktioniert es.
Aktuelles Datum ausgeben (Jahr in Footer)
Vergesse ich andauernd – so kann man das aktuelle Jahr in TypoScript ausgeben:
10 = TEXT
10.data = date: Y
Für weiteres in der Funktion date von php nachschauen:
d.m.Y. für aktuelles Datum
Update:
Bei vielen Seiten steht das aktuelle Jahr und das Copyright-Zeichen im Footer der Seite. Am besten kann man das mir diesem Schnipsel lösen, dann ist das Jahr immer aktuell. Wie man den Wrap gestaltet, ist jedem selbst überlassen.
10 = TEXT
10 {
data = date:U
strftime = %Y
wrap = ©| npostnik.de
}
Mini-Elefant
Boah, wäre das cool – ein kleiner Elefant, so groß wie eine Katze, den man als Haustier halten kann. Den Mini-Elefanten kann man auch alleine halten, denn der Mini-Elefant kann sich auch prima alleine beschäftigen. Als Nahrung braucht er ein wenig – einen Apfel vielleicht am Tag. In einer Ecke richtet man ihm ein kleines Elefantenklo ein – so wie ein Katzenklo nur mit Heu. Und man könnte ihm lauter tolle Sachen beibringen – Zeitung holen, irgendwas suchen, denn mit seinem Rüssel könnte er das sehr gut bewerkstelligen.
Problem: meine Biologie-Kenntnisse reichen nicht, um so einen coolen Mini-Elefanten zu kreieren. Wirklich schade.
UPDATE: Mein Kollege Basti schlug vor, man könnte auch einer Katze Ohren an den Hintern kleben.
Neueste Kommentare