jQuery rebuild data – data-Attribut erneut parsen / einlesen

Bei der Arbeit mit VueJS in Kombination mit jQuery kommt es häufig zu dem Problem, dass VueJS das DOM oder sogar das data-Attribut eines Elementes ändert, aber jQuery noch per jQuery.data() auf alte Daten zugreift.

Hintergrund: Beim Initialisieren der Elemente cached jQuery die data-*-Attribute und speichert sie in einer internen Variable, um später schneller darauf zugreifen zu können. Eine Änderung der data-*-Attribute über VueJS – oder bereits eine Änderung der Reihenfolge der Elemente im DOM – führt zu einer falschen Zuordnung zwischen Element und dem data-Cache von jQuery.

Dieses kleine Plugin löst das Problem: Nach einer Änderung des DOM über VueJS kann einfach $('.element').rebuildData(); aufgerufen werden, um alle data-Attribute des Elementes und rekursiv aller Unterknoten erneut zu parsen und in jQuery.data() zu speichern.

weiterlesen

Spamfreie E-Mails mit eigenem Server versenden

Wer eine eigene Domain besitzt, steht vor der Entscheidung die E-Mails auf ein Konto bei Anbietern wie Google Mail, GMX oder Web.de weiterzuleiten oder ein sich beim Hoster ein eigenes Konto für die E-Mail-Adresse einzurichten. Für letzteren Fall bieten Hosting-Provider wie Host Europe in der Regel einen eigenen Mailserver an, der bereits über eine entsprechende vorgefertigte Konfiguration verfügt. So werden auch passende DNS-Einträge der Domain beim Hoster automatisch gesetzt. Ganz bequem also. Doch sobald ein eigener Server im Einsatz ist, wird es möglicherweise schon etwas kniffeliger, um mit versendeten E-Mails nicht im Spam-Order des Empfängers zu landen. Wie ist dies also einzustellen?

weiterlesen

Site-to-Site-Transfer (FXP) auf Server aktivieren

Folgendes Szenario:
Wir besitzen zwei verschiedene Server und möchten Daten via FTP von Server A auf Server B transferieren. Die einfachste und herkömmliche Methode wäre hierbei die Daten von Server A herunterzuladen und sie anschließend bei Server B wieder hochzuladen. Dieser Umweg kann insbesondere bei einer Vielzahl an Daten sehr langwierig sein.

Abhilfe für dieses Problem schafft das sogenannte File eXchange Protocol (FXP), welches einen Site-to-Site-Transfer von zwischen zwei Servern herstellt und eine direkte Datenübertragung ermöglicht.

weiterlesen

Typo3 autoload-Cache leeren bei Klick auf Typo3-Blitz und „alle Caches leeren“

Während der Entwicklung von Typo3-Extensions ändert, erstellt und erweitert man häufig Klassen in seinem eigenen Namespace. Durch das (sinnvolle) Typo3-Caching werden diese Klassennamen und Pfade in einer PHP-Datei gecached (typo3conf/autoload/autoload_classmap.php).

Leider greift der Klick auf den „Typo3 Blitz“ mit der Option „Alle Caches leeren“ nicht, um auch diese Dateien neu aufzubauen. Typo3 zwingt den Entwickler ins Install-Tool und dort zu der Option „Create autoload information for extensions“. Dieser Wechsel ist relativ nervig – und eine klassische Frustrations-Quelle, wenn im Frontend mal wieder das „striped Zebra of death“ mit einem Fatal Error erscheint.

weiterlesen

Eigenes Custom Form Element für tx_form-Extension – Typo3 v8

How-To für das Erstellen eines Custom Form Elements für die tx_form-Extension unter Typo3 v8.

Falls man ein Custom Form Element erstellen möchte, haltet euch an das How-To. Für detaillierte Informationen und die Dokumentation zur ext:form besucht: https://docs.typo3.org/typo3cms/extensions/form/Index.html

Außerdem haben wir eine „Anleitung für Dummies und Normalsterbliche, die einfach einen Job zu erledigen haben“ erstellt – eine Kurzfassung mit farblicher Kennzeichnung und einem simplen Online-Generator.

weiterlesen

Spam-Rekord

Wenn es ein Guiness World Record für Spam-Mails gäbe – hier wäre ein potentieller Kandidat. Die meisten Spam-Werte lagen bei den Mails an uns zwischen 3 und 10 Punkten – diese Mail hatte es zu 37.1 Punkten geschafft. Respekt!

X-ACL-Warn: Message does not conform to RFC2822 standard
X-HE-Spam-Level: +++++++++++++++++++++++++++++++++++++
X-HE-Spam-Score: 37.1
X-HE-Spam-Report: Content analysis details:   (37.1 points)
 pts rule name              description
---- ---------------------- --------------------------------------------------
 0.5 RCVD_IN_PBL            RBL: Received via a relay in Spamhaus PBL
                            [49.202.68.127 listed in zen.spamhaus.org]
 0.9 URIBL_RHS_DOB          Contains an URI of a new domain (Day Old Bread)
                            [URIs: upforrolex.com]
 5.0 URIBL_AB_SURBL         Contains an URL listed in the AB SURBL blocklist
                            [URIs: upforrolex.com]
 5.0 URIBL_WS_SURBL         Contains an URL listed in the WS SURBL blocklist
                            [URIs: upforrolex.com]
 2.9 URIBL_JP_SURBL         Contains an URL listed in the JP SURBL blocklist
                            [URIs: upforrolex.com]
 2.5 URIBL_SC_SURBL         Contains an URL listed in the SC SURBL blocklist
                            [URIs: upforrolex.com]
 0.0 MISSING_DATE           Missing Date: header
 1.5 HTML_IMAGE_ONLY_28     BODY: HTML: images with 2400-2800 bytes of words
 2.5 HE_LOGINHASH           BODY: Hosteurope says its spam (Found in Spamtrap)
 0.1 HTML_MESSAGE           BODY: HTML included in message
 1.5 GENERIC_IXHASH         BODY: iXhash found in ix.dnsbl.manitu.net
 0.7 MIME_HTML_ONLY         BODY: Message only has text/html MIME parts
 1.8 MIME_QP_LONG_LINE      RAW: Quoted-printable line longer than 76 chars
 0.5 HE_CPSD                HE Phishing & Scam detected
 2.5 URIBL_SBL              Contains an URL listed in the SBL blocklist
                            [URIs: upforrolex.com]
 0.0 RDNS_NONE              Delivered to trusted network by a host with no rDNS
 1.7 SARE_SPEC_ROLEX        Rolex watch spam
 7.5 HE_CPSD_SANE           SPAM found by SaneSecurity signatures
X-SPAM-FLAG: Yes

Rich-Text-Editor (RTE) in Typo3 reduzieren

Der RTE-Editor in Typo3 ist eine tolle Sache und die Entwickler-Gemeinde hat sich verausgabt, so ziemlich alles und jede Editiermöglichkeit im Text anzubieten. Problem ist aber, dass die Werkzeugleisten dadurch ziemlich überfrachtet sind und dem Kunden fast schon zu viele Möglichkeiten bieten, die Texte zu formatieren.
In der Praxis haben wir uns angewöhnt, die Werkzeugleiste auf ein absolutes Minimum zu reduzieren. Und das geht so: Ins TypoScript-Setup der Seite (Unter „Seiteneigenschaften -> Optionen -> TSconfig“) kommt dieses kurze TypoScript:

RTE.default {
   contentCSS = /fileadmin/layout/css/rte.css
   showButtons = bold, italic, subscript, superscript, orderedlist, unorderedlist, line, link, image, bar, table, toggleborders, tableproperties, rowproperties, rowinsertabove, rowinsertunder, rowdelete, rowsplit, columninsertbefore, columninsertafter, columndelete, columnsplit, cellproperties, cellinsertbefore, cellinsertafter, celldelete, cellsplit, cellmerge   
   hideButtons = textstyle, fontstyle, formatblock, fontsize, strikethrough,lefttoright, righttoleft, textcolor, bgcolor, textindicator, emoticon, user, spellcheck, chMode, inserttag, outdent, indent, justifyfull,  acronym, copy, cut, paste, textstylelabel, blockstyle, blockstylelabel, underline, left, center, right, insertcharacter, removeformat, findreplace, insertcharacter, undo, redo, showhelp, about
}

Mehrzeilige GMENU-Menüs in Typo3 (Zeilenumbrüche bei GMENU)

Problem: Man möchte ein GMENU (Grafisches Menü) mit mehrzeiligem Text erzeugen. Das geht relativ einfach mit diesem TypoScript:

lib.hauptmenue {

   entryLevel = 0
   special = directory

  // Hier kommt die Page-ID der Haupt-Seite hin...
   special.value = 7
   
   1 = GMENU
   1.expAll = 0
   1.wrap = 
   
   1.NO = 1
   1.NO {
      wrap = 
|
|*|
|
|*|
|
//wrap =
|
XY = 150, 20+[20.h] transparentBackground = 1 backColor = #220E05 transparentColor = #220E05 10 = TEXT 10 { text.field = nav_title // title text.listNum.splitChar = 13 text.listNum = 0 text.case = upper text.align = right offset = 140-[10.w],15 fontColor = #ffffff fontFile = fileadmin/fonts/seriasans_regular.ttf fontSize = 19 niceText = 1 antiAlias = 0 } 20 < .10 20 { text.listNum = 1 offset = 140-[20.w],10 } } 1.CUR < .1.NO 1.CUR { wrap =
|
|*|
|
|*|
|
10.fontFile = fileadmin/fonts/seriasans_bold.ttf 20.fontFile = fileadmin/fonts/seriasans_bold.ttf 10.fontColor = #FFCC54 20.fontColor = #FFCC54 } 1.ACT < .1.CUR 1.RO < .1.NO 1.RO { 10.fontColor = #FFCC54 20.fontColor = #FFCC54 } }

Um die Felder "Navigations-Titel" (nav_title) und "Seiten-Titel" (title) im Backend mehrzeilig zu machen kann man die Datei extTables.php um folgende Zeilen ergänzen:

$TCA['pages']['columns']['title']['config']['type'] = 'text';
$TCA['pages']['columns']['title']['config']['rows'] = '2';

$TCA['pages']['columns']['nav_title']['config']['type'] = 'text';
$TCA['pages']['columns']['nav_title']['config']['rows'] = '2';

Mehrzeilige TMENU-Menüs in Typo3 (Zeilenumbrüche bei TMENU)

Problem: Man möchte ein TMENU mit mehrzeiligem Text in den Menüpunkten erzeugen. Dazu kann man eine Kombination aus einem COA und dem splitChar verwenden. Hier wird das Trennzeichen chr(13) verwendet.

Als TypoScript für den Menüaufbau verwendet man:

1 = TMENU
1.wrap = |
1.expAll = 0
   
1.NO = 1
1.NO {
   wrapItemAndSub = 
  • |
   1 = COA    1.10 = TEXT    1.10 {       field = nav_title // title       listNum = 0       listNum.splitChar = 13    }           1.20 < .1.10    1.20.listNum = 1    1.20.wrap =
|    1.20.required = 1           stdWrap.field >    stdWrap.cObject = TEXT    stdWrap.cObject < .1 }

Um die Felder "Navigations-Titel" (nav_title) und "Seiten-Titel" (title) im Backend mehrzeilig zu machen kann man die Datei extTables.php um folgende Zeilen ergänzen:

$TCA['pages']['columns']['title']['config']['type'] = 'text';
$TCA['pages']['columns']['title']['config']['rows'] = '2';

$TCA['pages']['columns']['nav_title']['config']['type'] = 'text';
$TCA['pages']['columns']['nav_title']['config']['rows'] = '2';

Update 2014:

Alternativ zum Beispiel oben funktioniert es auch so:

1 = TMENU
1.wrap = |
1.expAll = 0
   
1.NO = 1
1.NO {
   wrapItemAndSub = 
  • |
   stdWrap.cObject = COA stdWrap.cObject { 10 = TEXT 10 { field = nav_title // title listNum = 0 listNum.splitChar = 13 } 20 < .10 20 { listNum = 1 wrap =
| trim = 1 } } }