Dokumentation der Sessions vom TYPO3camp Munich 2017 ##Samstag, 9. September 2017 ###[Opening session] * #t3[camp]rookies Andreas Wolf KE Search Definition of types through class function KE Search is capable of multiplatform handling * s. Doku / Bsp. Extension "Search\_hooks" bei Kennziffer \url{https://extensions.typo3.org/extension/ke\_search\_hooks/} * Indexer registrierne (Typ, Icon, Anzeige) * Parameter-Array übergeben => Erstellt im BE neuen Typ zur Auswahl * customIndexer: wird aufgerufen -> main() * Man kann weitere Linkparameter für Aufruf der Zielseite angeben * Es gibt einen Log (undokumentiert), hat auch Hook, um Log zu erweiternj * Eignet sich auch für alle möglichen externen Quellen * Z.B. Sitemap holen von externer Site (xml oder json),, einzeln aufrufen und indexieren lassen. * Beispiel: allplan.com (initialer Aufwand ca. 2 Tage, zzgl. Indexer (n x 2h)) * ke\_search: Gute Konfig für Priorisierung * Gibt viele Hooks => suchen und nutzen! * Trick: Vor dem indexieren können Begriffe manipuliert werden * Potentielles Problem: RealURL-URL-Varianten -> Checken, ob Index sich aufbläht * Bei externen Quellen per Hook möglich, den Text vorher zu parsen, um z.B. bestimmte Strings zu priorisieren (<h1> wrappen o.ä.) oder aus html-Seiten den relevanten Inhalt rauszufiltern. * KE\_Search nutzt intern MySQL Fulltext-Index (s. Doku dort) #Eigene Plugins für den CKEditor am Beispiel einer Multilinks-Extension #Solr and Fluid from Timo Hund You can support the continued development of the Solr extensions by becoming a partner, see \url{https://www.typo3-solr.com/en/sponsors/becoming-a-sponsor/} Default before < Ext. solr 7.0.0 Using Markers to insert something in the FE QUESTION * **For Old Version of Solr 5.x you have to use a Viewhelper to use it** * **If some tell that they need a future if the prio and the money are there it could be insert in the extension** Now > Ext solr 7.x You can use a MVC \& DDD Pattern You can use Frameworks that can help you to create FE output in fast way => Fluid The searchAction passes the SearchResultSet to the view the SearchResultSet can be used to access results, facets, ... ##**Standard solr - **Faceting types Facets help users to narrow down or filtering the results to find better was they search for **Content Types** example -> pages **Ages** example -> all what older as 3 days ###options Query Group => page, News ect. Flat list of selectable otpins Flat list based on solr querys => days, last week ###hierachy Nested tree of options ###numericRange Numerica range between a min and max value => Price, wodth ###dateRange Date range between a start and end date => created after this date ##Resources ###Custon Templates Fluid supprts fallbacksñ ###Custom Translations ###Custom Viewhelpers Links: Slides: \url{https://www.slideshare.net/timohund/use-fluid-templating-for-your-typo3-search}] solrlfuidexample: \url{https://github.com/TYPO3-Solr/ext-solrfluidexample} (Shows how to use custom templates, partials and layouts) Documetnartion: \url{https://www.typo3-solr.com/en/solr-for-typo3/documentation/} All documentations as PDF #RESTful APIs mit TYPO3 Plugin mit JSONView und Controller, der Endpunkte abruft Endpunkt => Welches Model will ich bearbeiten, welche Methode kommt rein? Ausgabe als JSON statt als Fluid-Template Mapping der Plugin-Endpunkte per Realurl Ein-/Ausgabe als JSON Die Restler Extension für TYPO3 erlaubt das Mapping von URLs auf Controller-Methoden durch PHP Annotations. * @url GET data/{sessionId}/{userId} * @param string $sessionId * @param integer $userId * @return array\url{https://github.com/Luracast/Restler} Crawler * V8: integrate dev branch: version constraint = dev-TYPO3\_8 * Activate extension * Processing instruction parameters * \&L=[|1|2|..] #Bildoptimierung von: Felix Websites werden immer bildlastiger - Messungen 2011-heute 2011 ca. 400kb Bildmaterial heute ca. 1,6 MB Bildmaterial Falsche Auflösung / Falsches Bildformat / Falsche/keine Komprimierung Buchtipp "High Performance Images" \url{http://shop.oreilly.com/product/0636920039730.do} #Budgetierung von Projekten Dreieck Zeit - Leistung - Kosten Risk Share: Bei Festpreisprojekten Zeitüberschreitung möglich. Für die Zeiten, die über dem geplanten Zeitraum liegen zahlt der Kunde, aber nur einen wesentlich geringeren Preis, der unter unseren eigenen Kosten liegt. Kunde und Agentur sind fürs Budget verantwortlich Wenn Budget gekürzt wird, muß der Kunde auch Kürzung der Leistungen akzeptieren Agiler Festpreis mit Risk-Share Bullet-Points für Kunden Angebote nicht als Liste von Features sondern Benefit für den User. Abrechnung nach Aufwand Monitoring von Zeitaufwand Projektfortschritt Bei Abweichungen frühzeitig gegensteuern, Kommunikation mit Kunde Mangelnde Kommunikation größtes Prolbem Kunden müssen Entwicklungsprozess verstehen #Vagrant Mögliche Projekte mit verschiedenen Konfigurationen gleichzeitig fahren PuPHPet => Vagrant boxen generieren. Boxen von PuPHPet abhängig, wenn Versionen dort verschwinden läuft Box nicht mehr. Mit Ansible kann gewünschter Sollzustand des Servers beschrieben werden. #Deployment von GIT -> TER ##Projekt-Deployment * Pipeline definieren, Bsp.: Build, Layout, Deploy * Jeder Stage eigener Docker Container * \url{https://git-t3o.typo3.org/t3o/ter/blob/develop/.gitlab-ci.yml} * Artifacts werden definierte Zeit gespeichert, um kurzzeitig auch statisch drauf zugreifen zu können. * Man Templates verwenden, um das für andere Schritte zu referenzieren * Gitlab runner, die bestimmte Prozesse auf unterschiedlichen Servern sind und von Gitlab aufgerufen werden * Gitlab runner werden getagged und über Tags aufgerufen * Yaml-Config ist public im GIT * TER-Projekt: Dev -> Master -> Staging -> live (Manuell)##Extension-Deployment ins TER * \url{https://github.com/spoonerWeb/be\_secure\_pw/blob/master/.Build/ci/.gitlab-ci.yml} * Testing Framework-Empfehlung: Nimut * Automatisch in nächsten Stage wenn alle unittests ok * #Docker Why do we need docker? Docker is a layered software stack docker-compose helps orchestrate multiple docker containers docker-compose.yml defines services Context of service specifies directory of service's Dockerfile depends\_on => Specifies ordering of containers, dependend containers run after base containers volumes\_from docker-compose.override.yml, docker-compose.dev.yml and docker-compose.prod.yml allow to differentiate between development and production If you use docker or vagrant depends on the project If you deploy to a customer who manages everything himself, use vagrant. It's easier to set up and you just give the finished projects and the prerequisites to the customer to deploy himself. If you deploy to your own server, use docker, as the deployment for dev, test, production can be automated Code from a presentation: \url{https://github.com/InvisibleKind/docker-typo3} #sf\_register \url{https://docs.google.com/presentation/d/1QCMr8Gj2QzQdFiFZbSSBebWy-njSlOq4WbhE\_ph51Lg/edit?usp=drivesdk} #Schnittstelle Design/Entwicklung ##Typische Reibungspunkte Übergabe Asserts => Gesammelte Übergabe als ZIP-Datei. Manuelles Assert-Management Komponenten und UI-Elemente => Manuelle Styleguides Schriften => Mail mit TTF-Datei Abstände und Raster => Ausdrucken aller Entwürfe, vollständige Bemaßung Farbwerte => Hexwerte E-Mail, Pantonefarben Darstellung auf Mobilgeräten => Gestaltung für die 3-5 wichtigsten Gerätegrößen Unstruktrurierte Kommunikationskanäle ##Projektablauf Keine strikte Trennung - Überschneidung und Interdisziplinartität gewünscht ##Prototyping Ausprägungen Scribbles Living Prototpye Flow Charts Feasability Study Wireframe (UXPin, axure, invision) ##Zusammenfassung Unteschiedliche Projekte erfordern unterschiedliche Ausprägungen von Prototyping Prototyping spart Zeit, Nerven und Ärger und ist ESSENTIELL! Diskussionsgrundalgen für Konzeptfragen und Funktionalitäten ##Auf zu neuen Welten Technische Entwicklung hat in den letzten 3-5 Jahren massiv an Fahrt aufgenommen. Bisherige Werkzeuge für digtale Gestaltung Photoshop - Bildbearbeitung Indesign - Printlayout Illustrator - Komplexe Vektorgrafiken ##Neue Werkzeuge Sketch - Screendesign Figma - Kollboratives Screendesign Experience Design - Screendesign Sketch Zugeschnitten auf UI-Design Vereint Vektoren und Bitmaps Symbole und modulare Gestaltung Starker Plugin-Supprt for+ Schnittstellen Sketch + Craft Sektch Plugins * Library * Duplicate * Gestaltung mit Dummy-Inhalten Modulare Gestaltung Atomic Design - Ansatz von Brad Frost Atome sind die kleinsten Gestaltungselemente. Daraus werden Moleküle, Organismen und schließlich Seiten aufgebaut Design-System als Notwendigkeit (komplexität von UI-Elemente hat massiv zugenommen) Modulare Gestaltung Atomic Design - Methodik Pattern Library - Werkzeuge -> Design System Neue Werkzeuge für Design-Kommunikation InVision - Clik-Dummy Marvel - CLik Dummy Framer - Hi-Fi Prototyp, Javascript Bibilothek für Prototyping Atomic - Hi-Fi Design Aufgepasst Prototyping muss schneller gehen als reguläre Implementierung Optimierte Design-Kommunikation Sketch => Invision Entwicklung * Design-Übergabe * Zeplin - Living Styleguide * SC5 Start building your own UI Process! #Baukastensystem Jo Hasenau z.B WrapBootstrap als Basis Extension "Themes": Noch verwendets fast niemand Beispiel: Ipresentyou.de: * Einfach Website im FE zusammenbauen * Unterschied zu FE-editing: Ziel ist, sehr einfache Sites durch Laien per Drag \& drop bauen zu lassen * Evtl. Beispiel: Extension von den GRÜNEN * Themes läuft theoretisch ohne Gridelements, aber für Container braucht man GE * bootstrap theme liefert kpl. TS für Aufbau mit * Klassen bei Config der durch Themes hinzugefügten Felder in tt\_content sind generisch und unabhängig vom Framework. Daher könnte Framework gewechselt werden. * => Mapping zwischen den Klassen in der Extension * #TYPO3 und Composer ##Basics * wir installieren TYPO3 und alle Extensions per Composer -> das komplette Projekt braucht eine composer.json * man kann die composer.json von Hand anlegen, aber besser ist eine fertige Distribution; s. \url{https://github.com/TYPO3/TYPO3.CMS.BaseDistribution} * Vorteil: Web-Root wird in einen Unterordner gelegt, damit ist composer.json etc. nicht online verfügbar (Sicherheitsrisiko!) ##Hands on Wie man eigene Extensions einbindet mkdir t3cm composer create-project typo3/cms-base-distribution t3cm/ 8.7.0 cd t3cm composer require georgringer/news composer require typo3-ter/static-info-tables Wenn TYPO3 mit Composer installiert wird, läuft es im Composer-Mode. Dann können keine Extensions per Extension Manager installiert werden. ###Für lokale Extensions Extension anlegen mkdir demoext cd demoext touch composer.json * { "type": "typo3-cms-extension", "name": "andreaswolf/demoext", "description":"Awesome demo extension" } Extension in einem Ordner außerhalb des Web-Root ablegen und path-Repository verwenden -> in der composer.json im Root folgenden Eintrag hinzufügen: * { **"type"**: **"path"**, **"url"**: **"./demoext/" **} *composer require andreaswolf/demoext:@dev @dev ist nötig. weil die Extension keine Versionsnummer hat und damit für "nicht stabil" gehalten wird -> das interessiert uns hier aber nicht, weil die Extension ja mit dem restlichen Projekt versioniert wird Alternative: Man setzt den branch-alias in der Extension. \url{https://wiki.typo3.org/Composer} ###Änderungen an offiziellen Extensions/dem Core/anderen Paketen über Patches * Composer-Patches-Plugin installieren * \url{https://github.com/netresearch/composer-patches-plugin} * Meta-Paket in der composer.json: * "repositories": [ * { * "type": "package", * "package": { * "type": "metapackage", * "name": "andreaswolf/projectpatches", * "version": "1.0.3", * "require": { * "netresearch/composer-patches-plugin": "dev-master@dev" * }, * "minimum-stability": "dev", * "extra": { * "patches": { * "helhum/realurl": [ * { * "url": "./patches/realurl-domain-language.patch" * } * ] * } * } * } * } * ] * composer require andreaswolf/projectpatches * * #TYPO3 Forms * != Form Framework --> verstehe ich nicht, es geht hier doch um EXT:form aus dem Core, insofern ist es das Form Framework * Warum neu?: Alte Ext. nicht mehr gut genug zum refactoren * Yaml statt TS * Bsp.: Feedback-Formular: * Im BE Wizard mit advanced Settings * Konfig komplett in yaml, nicht in DB * Viel Potential: S. Doku und config Optionen! * Ähnlich wie in TS einfach einzelne Elemente überschreiben * Konkrete Einstellungen: * Allowedextensionpath * Lieber nicht im BE löschen, da ja nicht in DB, sondern wirklich futsch * Es gibt auch FE-Backend Config * Workspaces: Änderung bestehendes Formular nicht als preview möglich (da ja nicht in DB) * Lokalisierung noch nicht ausgereift. * ist eines der großen Themen für TYPO3 v9 * Konzept sollte klar sein: Bei jeder Änderung durch Redakteure wird die yaml-Datei überschrieben. Wenn Datei also als Code definiert und in GIT, dürfen es Redakteure nicht ändern. Wenn Red. ändern können sollen, dann halt nicht versionieren und wie content behandeln. * Finisher * Save to database, etc. * Prinzipiell beliebige Klasse, die alles Mögliche machen kann. * Formulardaten: in yaml/options sind Felder definiert. Die Namen entsprechen Der Items im übergebenen Objekt * Je Finisher ein Identifier * Name für Editor => Auswählbar im Modul im BE * Beispiel: Success-Fin. -> Fluid template rendern * In FormDefinitionOverrides kann in TS überschrieben werden * Serverseitige Feldübergreifende Validierung würde man im Finisher machen * Clientseitige Validierung nichts vorbereitet, muss man immer selbst machen. * Der Core will sich aktuell nicht auf ein Frontend Validierungs-Framework festlegen. * Es wird mittels HTML 5 Features clientseitig validiert (required, type specific checks). * Persönlicher Eindruck: * Extrem leistungsfähiges Dev-Tool für komplexe Anwendungen * Ansonsten: Zum Glück gibt es Powermail * Diesen persönlichen Eindruck kann ich nicht ganz teilen. Sicherlich kann noch viel optimiert werden (Language Handling, Conditions etc.). Aber der neue Form Editor ist ein Meilenstein. Die Extension ist super jung und nicht vergleichbar mit powermail, was bereits seit Jahren am Markt ist und weiterentwickelt wird. Es ist aktuell eher als eine Verschmelzung aus formhandler und powermail zu sehen und hat nicht das Ziel, powermail in seiner Gesamtheit zu ersetzen. So wird das Form Framework bspw. nie Core-seitig Marketingauswertungen integrieren. #Zuverlässigkeit und Nachhaltigkeit für TYPO3-Extensions ##Frei wie in "Freie Rede", nicht wie in "Freibier" \url{https://coders.care/de/blog/artikel/} Freie Software =! Freeware GPL bestärkt Freiheit, nicht Kostenlosigkeit GPL Widerspruch zu kommerziellen Lizenzen "Freemium" funktioniert nur bei neuem Code Verkauf von GPL-Software ist nicht nachhaltig ##Treffen sich drei Deutsche .. ... gründen sie einen Verein * Gemeinnützige Bank für TYPO3-Projekte * Hauptbudget für Core Development * Inkubator für TYPO3-Extensionprojekte * Zu viel Bürokratie und Zeit * Zu wenig Zeit, um Arbeit zu finanzieren GPL § 4 "You may charge any price or no price for each copy that you convey, and you may offer support or warranty protection for a fee." ##Kleinvieh macht auch Mist. * DIe Crowd braucht eine kritische Masse * Kampagnen verschlingen Budgets * Erreiche das Ziel, sonst gibt's kein Geld * Benötigt andere Quellen nach Erstfinanzierung * Kickstarter für TYPO3-Extensionprojekte ##Zuverlässigkeit * Eine Extension, die mit bestimmter Funktion problemlos mit dem TYPO3-Core funktioniert * Im Zusammenspiel mit anderen Extensions * Bugfixes und Wartungs-Releases * Sicherheit und Qualitätskontrollen * Kompatible mit bis zu 3 TYPO3-Versionen * Dasselbe gilit für PHP, xxSQL und andere * Neue Features auf dem Stand der Technik * Zusammenarbeit mit anderen Extensions * Offenes Ohr für Bedürfnsse des Markts ##Responsiveness * Ticketstystem für Bugs und Features * Schnelle Rückmeldung bei Notfällen * Kompetenten Erfassung der Notfalldaten * Vernünftige und aktive Kommunikation * Hohe Verfügbarkeit, wenn nötig 24/7 Müssen von Projekten leben können Fokus auf Projektmanagement und Integration Oft wenig bis gar kein Entwicklungswissen Schwer, verwendete Extensons zu kontrollieren Zwickmühle zwischen Entwicklern und kunden ##Kunden * Brauchen eine zuverlässige, beständige Lösung * Anwendung und Inhalts-Bearbeitung im FOkus * Wenig WIssen über Entwicklung/Projektmgmt. * Schwer, verwendete Extensions zu kontrollieren * Schwer mit Entwicklern zu kommunizieren Es ist Vertrauenssache .. und keine Frage des Preises ##Service Level Agreements für TYPO3-Extensions Berücksichtigt Entwickler und Agenturen genauso wie Kudnen und Anwender Stellt 5 verschiedene Service-Level bereit Von kleiner Firma bis großen Unternehmen Stundensätze sind durch das Level festgelegt ##Vertragsverhandlungen Aktuell machen wir Verträge mit Entwickern In enger Zusammenarbeit mit TYPO3 GmbH Wir teilen uns Werkzeuge und Prozesse SLAs inder der Begutachtungsphase durch Anwalt Immer noch offen für Vorschläge ##Unser Ziel Bug-Fixing und Erstellung neuer Features Zuverlässige Dienste für Unterzeichner Unterstützt Partner mit qualifiziertem Team Managt Verträge und Kommunikation Schafft solide Vertrauensbasis für TYPO3 ##Was wir nicht machen werden Konzeptionelles Design und Integratorarbeiten Komplettservice für Agenturprojekte Core-Arbeit - aber Unterstützung mit Budget Andere Entwicklung, außer TYPO3-Exensions Kickstarten neuer Extensions \url{https://coders.care/blog/overview/} ###Sonntag, 10. September 2017 #Scrum * Arbeit in Intervallen (Sprints), an deren Ende jeweils immer ein potenziell auslieferbares Produkt steht. * Daily Meeting * Sprint Planning * Review (Wer es gemacht hat präsentiert das Ergebnis) * Retrospective (Was ist gut/schlecht gelaufen?) * Backlog (Konzept) wird während der Entwicklung spezifiziert/erweitert. * 3 Rollen: Entwickler, Product Owner (Kunde), Scrum Master (Leading Servant) ##Higher success rate of IT projects because of * Focus on business value * Agiler Festpreis => Preis und Zeit fest, Leistung variabel * Die wichtigsten Dinge werden zuerst erledigt, die unwichtigsten könnten wegfallen * Cooperation with customer * Reduction of communication losses * * Clear and short rules * Performance increase in team * Durch kurze Zyklen, Reviews und Retrospective laufende Verbesserung möglich * ##Some experience * Team starts to improve significantly * ... after 4-5 sprints * Customer starts to understand complexity of stories * ... after 4-5 sprints * Recurring short developmen tcycle with deliverable roduct keeps development focus * Arbeiten werden nicht auf die lange Bank geschoben * Agile background allows to adopt and integrate changes ##Where to scrum * Agile project supported by customer * Dev-Team with at least 3 persons * Project runs "months" * Complete project specification / classic waterfall project * Dev-Team with at least 3 prersons * Project runs "months" * => "Scrum but" classic project to the outside, but internal Scrum with only internal PO * Dev-"Team" only 1 or 2 persons * Short overall project time of some weeks * => Scrum makes no sense ##BUT... * Focus on business value * Define possible target groups * Define tasks not in a technicial way * Business value focused tasked allow easier priorization * (+) Customer describes what he really needs * (+) Dev-Team can use ther expertise * (+) Result better fits the project target ##Estimation poker * Human can estimate relative but not absolut * compare tasks with each other * don't think in hours/days but in relative "values" * Estimate all together (Dev-Team with customer) * (+) Common understanding of task * (+) Common understanding of complexity * (+) different viewpoints reduce risk of misestimation ##Short "sprints" with Go-Live ready product * Milestones that result in deliverable product * Aprroval in regular periods * (+) Keeps focus on result * (+) Reduces stress in project end * (+) target still in mind of everybody ##Retrospective Project review after the project Milestone retrospective -> what went fine, what went wrong -> how to get rid ot the "wrongs" -> strenghten the good things ##What about remote teams??? ###Remote team means... * you just can go in the room next door * More complex communication * Intensiving individual "drawbacks" * danger of hiding * Complexity of team building ###Ideas.. * Invest in remote communication (Hardware,Bandwith) * Rotation of people (offsite / onsite) * Focus on strong methodology * In case of even dstributed teams double the roles into "assistant" subroles #TYPO3 für Newbies von Christina Hauk @chauk und Conny Eder @connyeder Was können wir tun, um #t3rookies den Einstieg in TYPO3 zu erleichtern? - Guide für Newbies als Doku von offizieller Seite - (interne) Guidelines definieren * - aktive Kommunikation- Mentor bereitstellen - regelmäßiger Wissensaustausch / Vorträge - Newbies an die Community heranführen Weitere Diskussion: TYPO3 Slack #t3onboarding #Testing Unit, functional, acceptance testing Unit tests liegen im Tests/Unit ordner Controller und Domain model tests nur das, was vom Extension builder generiert wurde. Bei Domain Models nur Unit-Tests für komplexe Getter/Setter Unit-Tests für Services Acceptance tests mit Codeception Nimut testing framework TYPO3 Console Installation mit Composer Selenium mit Google Chrome driver Composer dependencies cachen, damit sie nicht bei jedem stage neu gezogen werden Stages: * PHPCS * phplint * unit tests Gitlab mit Docker verwenden Functional tests => mysql oder andere Abhängkeiten als Services (Docker container) einbinden Acceptance tests => selenium/standalone-chrome Trusted Host test ausschalten: typo3cms configuration:set SYS/trustedHostpattern ".*" Öffentliches Repository der Extension inkl. GitLab CI Konfiguration: \url{https://gitlab.com/derhansen/comments} ##TYPO3 Performance Markus Sommer @delaramas Probleme in TYPO3 mit Performance entstehen meist mit den Extensions. Der Core ist schnell und bietet Möglichkeiten um die Performance auch mit Extensions schnell zu bekommen. Stellen, an denen man Stellschrauben drehen kann: TYPO3/Ext Server: * Hardware (bedingt Einfluss) * Apache HTACCESS vom Core verwenden, dort sind die wichtigsten Einstellungen gesetzt. * Caching von Dateien aktivieren * HTTP/2PHP/Database Dateien * Metadaten entfernen, wird nicht von imagemagick etc entfernt * CSS und JS komprimieren, compressCSS und compressJS nur verwenden, wenn es nicht anders möglich ist, da die TYPO3 Funktion stark Performance benötigtClient (Browser/Frontend) * Lazy Loading * Responsive Images (auch über TYPO3 srcsets verwenden) * ServiceWorker * * #Lightening Talks Kurze Vorträge zu verschiedenen Themen ##themes Extension präsentiert von @bunnyfield Beispiel: CodersCare Blog \url{https://extensions.typo3.org/extension/themes/} * ##Diskussion: TypoGento Middleware zur Vernetzung von TYPO3 und Magento - wird allerdings seit einigen Jahren nicht mehr unterstützt Diskussion rund um die Möglichkeiten der Fortsetzung ##Diskussion: Ersatz für Fluid TYPO3 Flux zu langsam, mit was kann es abgelöst werden? Vorschlag: - Gridelements ##Grunt/Gulp/Webpack @andreaswo Taskrunner um z.B. SASS zu kompilieren, Bilder fürs Web zu optimieren oder JS-Apps builden Grunt wird wohl nicht mehr weiterentwickelt Gulp und/oder Webpack als Alternative Webpack: Builden von JS-Apps -> aus vielen kleinen Modulen eine einzelne JS-Datei machen Babel: Übersetzen moderner JS-Dialekte z.B. ECMA2015 in besser kompatible Dialekte; kann direkt in den Workflow mit Webpack eingebaut werden zusätzlich auch Sourcemaps etc. nutzbar D * #Automatisiertes Upgrade von TYPO3 6 -> 8 Upgrade von Wizards von 6 auf 7 sind auch in der 8er noch im Core enthalten. \url{https://github.com/ElementareTeilchen/upgrader} #TYPO3 Backend für Redakteure \url{https://www.slideshare.net/pk77/get-happy-editors-with-a-suitable-typo3-backend-configuration} Rechte nur über Gruppen vergeben. Für jeden Bereich eigene Gruppe, die die entsprechenden Rechte setzt. Mountpoints über eigene Gruppen regeln Editor-Gruppen erben Rechte von den Bereichs-Gruppen User enthält nur persönliche Daten, Rechte werden ausschließlich von seiner Gruppe gesetzt. Über Page-TSConfig festlegen, welchem Benutzer/Gruppe eine Seite standardmäßig gehört Was der Redakteur nicht braucht, kann über TSConfig ausgeblendet werden. #Ansible Ansible als Werkzeug, um reproduzierbare Server-Konfiguration zu bekommen. Alternativen: Puppet, Chef Ansible verwendet Playbooks, die festlegen, welche Module mit welcher Konfiguration verwendet werden. Playbooks bestehen aus Rollen, die in YAML verschiedene Aufgaben definieren. Inventar Playbook <-> Rollen <-> Tasks Es wird der gewünschte Soll-Zustand definiert. #T3CM17, Sonntags-Ganztages-Track #================================ #, 10.9.2017 Neues und Aktuelles in TYPO3 8 ------------------------------ .) What's new - Slides / Patrick Lobacher \url{https://typo3.org/download/release-notes/whats-new/} .) Customization (Logos) Backend Configuration im Extension Manager der Backend-Extension .) Clear all cache im Backend löscht tatsächlich alle Caches Bis auf bei Extension-Entwicklung (ViewHelper) typo3\_console - Extension -> ./typo3cms extension:dumpautoload Cache in typo3temp ist nach typo3temp/var/Cache gewandert Clear Cache in this page im Baum (Kontextmenü) dazugekommen .) Datenprozessoren Wurden vor fluid\_style\_content hinzugefügt (davon benötigt!) Früher per PHP-Userfunc z.B. kleinrechnen von Bildern, ... Jetzt in Fluid-Template per Datenprozessoren Siehe What's-New TYPO3 7.4 .) PhpStorm - Settings Resource-Root setzen! Schema-Dateien generieren (mit typo3\_console) und in PhpStorm einbinden -> Autovervollständigung Keymap Promoter in PhpStorm :-) -> Lernen von Tastenkombinationen .) ViewHelper Evolution des ViewHelpers (anhand nl2br) von 6.2 bis 8.7 durch Code-Vergleich checken! -> 6.2: render() -> langsam! -> 7 LTS: renderStatic() -> gecacht + inline-Syntax möglich und implements CompilableInterface -> 8 LTS: wieder schneller ;-) typo3/sysext/fluid/Classes/ViewHelper Als Vorlage für neue Viewhelper ist format- nl2br Viewhelper ganz gut geeignet. .) TypoScript -> www.tsref.de Philosophie-Änderung! Eigentlich nur mehr Controller, Darstellung wird nicht mehr in TS, sondern in ViewHelper gemacht! Jetzt Rohdaten in TypoScript auslesen und an ViewHelper zur Bearbeitung übergeben z.B. stdWrap: -> Getting-Data Funktionen -> Override and conditions Funktionen -> Parsing data Funktionen => viel besser in Viewhelpern! Ausnahme: hierarchisches Menü wenn nicht über Menü-Prozessor sondern in TS gebaut .) EXT Form Formulare auch als yaml Dateien in andere Projekte exportierbar! .) Upgrade auf TYPO3 8 ext\_tables.php wird nicht mehr in Frontend ausgewertet Infos über Breaking Changes / (speziell TCA) über Upgrade Analysis im Install Tool -> inkl. Doku und Referenzen zu nötigen Code-Änderungen So Dinge wie Mail-Adresse und Name setzen! (Es könnten Extensions auf die Werte zugreifen und nicht funktionieren, wenn nichts drin steht) .) Conditions nach Möglichkeit vermeiden! Blähen Cache brutal auf! Kostet Performance! Dinge wie UserAgents auch schon ausgemistet. Bootstrap - Basis-Extension und Projektstruktur ----------------------------------------------- 3 Extensions: -> Basiseinstellungen / Funktionen für alle Projekte gleich (ot\_bootstrap3) -> Theme - Extension -> Projektanpassungen -> t3jquery Dummy (nur ext\_emconf.php) -> dafür, dass Extensions die Abhängigkeit auf t3query haben befriedigt sind. .) Seit TYPO3 8 ist Einbindung von Templates über Hook möglich, somit im Extremfall gar kein Template in Datenbank mehr nötig => ot\_bootstrap3 .) In URL \&debug=1\&no\_cache=1 anhängen -> Eigene Debug-Toolbox wird angezeigt (Boxen, PID, Layout) .) ext\_tables.sql -> Zusätzliche Einträge für für Bootstrap (Spalten für versch. Devices und Animationen, CSS-Klassen für inneren und äußeren Container, ...) -> Well immer in inneren Container! -> Jetzt über Felder im Backend eintragen, in Zukunft für Redakteure eventuell als Auswahlliste -> eventuell auch in Zukunft Abstände für alle versch. Auflösungen/Devices (space before/after ... XS, SM, MD, LG) Eher minimal halten und Dinge verwenden, die schon da sind! SOnst bläht sich Datenbank zu sehr auf! -> type\_of\_submenu für Auswahl welches Untermenü (z.B. an manchen Stellen Mega-Menu) -> canonical\_url zur SEO -> ... .) ext\_emconf.php -> Abhängigkeiten für Ladereihenfolge und Settings bezüglich TER (Updates), ... -> dividers2tab nicht mehr nötig .) ext\_localconf.php -> TS einbinden über Hook .) Eigene Viewhelper -> z.B. Header im Footer nocht erlaubt (nicht valides HTML), somit ersetzen von Überschriften durch strong und Klassen .) MenuProcessor interessant für aufwendige Sonderfälle, alte Variante über hierarchisches Menü in TypoScript ist nach wie vor gut verwendbar und getestet! .) TCA - Änderungen / Ergänzungen -> Configuration/TCA/Overrides/tabelle.php -> tsconfig.de -> Doku für tsconfig -> docs.typo3.org/typo3cms/TCAReference/ -> Doku für TCA -> z.B. zusätzlich Einschränkungen für Redakteure an manchen Stellen wie Einschränkung von Bildanzahl und -typ etc. -> Ansehen im Backend über Configuration->... .) SEO - Ergänzungen -> Einfach als zusätzliche Felder definieren -> z.B. Opengraph für Facebook => ot\_theme123 .) TS-Hook registrieren in ext\_localconf.php .) Classes/Hooks/TypoScriptHook.php aus ot\_bootstrap3 kopieren und anpassen .) Configuration/TypoScript/setup.txt und constants.txt -> in TypoScript Object Browser richtiges Einbinden überprüfen! => Alternativ über AddStaticFile und Einbinden über Datenbankeintrag Eigene Contentelements vs. Mask Extension \& mask\_export ------------------------------------------------------- -> Mask-Extension definitiv gut und einfach verwendbar, insbesondere in Zusammenhang mit mask\_export -> Code - Export bei Mask-Extension als Basis für eigene Extensions verwendbar, allerdings eventuell noch nicht am letzten Stand (z.B. IconFactory) -> Selbststudium -> Mask eventuell bei TYPO3 Core Update Bremsklotz -> Manuell -> \url{https://docs.typo3.org/typo3cms/extensions/fluid\_styled\_content/7.6/AddingYourOwnContentElements/} -> siehe z.B. ot\_bt3carousel
{}