Abteilung für Gestaltung GmbH

Rüdigerstrasse 12
8045 Zürich

Telefon +41 44 500 10 20
kontakt@abteilung.ch

 

Codes & Snippets

Womit wir uns jeden Tag herumschlagen. Zeilen, die uns schneller ans Ziel bringen.

 

Einstieg in ExtJS – Versionen Überprüfung

Vor der Programmierung eines Moduls oder Plugins mit ExtJS sollte man seine Typo3 Version überprüfen, um zu wissen, welche ExtJS Version benötigt wird. Dies erspart einem später viel Ärger, falls zusätzliche Klassen (im core sind bereits einige Plugins u.ä. vorhanden) eingebunden werden. Auch die Sencha Doc Api sollte dementsprechend gewählt werden. [mehr]

 
 
  1. ExtJS 4.0.0 (TYPO3 5)
  2. ExtJS 3.4.0 (TYPO3 4.6)
  3. ExtJS 3.3.2 (TYPO3 4.4, 4.5)
Also, Typo3 Version prüfen (z. B. im Seitentitel des Backends) und dementsprechend mit der ExtJS Version entwickeln. Viel Spass!
 

Mit jQuery Text ersetzen

Mit diesem jQuery ist es ganz einfach möglich Text innerhalb eines Tags, einer ID oder Klasse im HTML-Dokument zu ersetzen. [mehr]

 
 
  1. jQuery(document).ready(function(){
  2.  
  3. var strNewString = jQuery('body').html().replace(/Zu ersetzende\(r\) Text\(e\)/g,'mit diesem Text ersetzen');
  4. jQuery('body').html(strNewString);
  5.  
  6. });
In diesem Beispiel wir innerhalb des Body-Tags der Text ersetzt.
 

Subkategorien in Extension Manager Konfiguration

Für ein Modul kann man verschiedene TypoScript Konstanten definieren und gebrauchen. Seit der Version 4.3 kann man im ext_conf_template.txt neu seine Konstanten nicht nur nach den Standard-Subkategorien (enable, dims, file, typo, color, other, links, language) 'gruppieren' man kann auch eigene kreieren. [mehr]

 
 
  1. # customSubcategory=meinLabel=LLL:EXT:extKey/locallang_extconf.xml:labelKeyImXml;
  2. konstante {
  3. # cat=config/meinLabel/010; type=string; label = Titel: ev. Beschreibung
  4. wert = Mein String
  5. # cat=config/meinLabel/020; type=int; label = Titel: ev. Beschreibung
  6. wert2 = 3
  7. }
  8.  
Einfach mit customSubcategory Namen, Language File und den Key, aus dem die Überschrift gemacht wird, angeben und dann seine konstanten nach definierten Namen 'Gruppieren'. Optional kann die Reihenfolge noch innerhalb der Kategorie mit einem Zahlenwert verändert werden. Dies funktioniert allerdings nur für Extension Manager Konstanten.
 

Error im Konfigurationstool beim Gebrauch von ExtDirect StateProvider

Um ExtJS-Komponenten in einem Modul zu gebrauchen, kann man bekanntlich ExtDirect-StateProvider über den PageRenderer hinzufügen. Falls dabei folgende Fehler auftauchen, könnte dies an den Benutzereinstellungen ($BE_USER->uc) liegen:[mehr]

 
Fehlermeldung im Konfigurationstool
 
  1. // Fehlermeldung im Konfigurationstool
  2. PHP Catchable Fatal Error: Object of class stdClass could not be converted to string in /var/sources/typo3_src-version/t3lib/utility/class.t3lib_utility_math.php line 85
  3.  
  4. // Fehlermeldung im Log (Protokoll)
  5. Core: Exception handler (WEB): Uncaught TYPO3 Exception: #1: PHP Catchable Fatal Error: Argument 2 passed to t3lib_PageRenderer::addInlineSettingArray() must be an array, string given, called in /var/www/domain/typo3conf/ext/extKey/mod/file.php on line x and defined in /var/sources/typo3_src-version/t3lib/class.t3lib_pagerenderer.php line 1439 | t3lib_error_Exception thrown in file /var/sources/typo3_src-version/t3lib/error/class.t3lib_error_errorhandler.php in line 105. Requested URL: http://yourdomain/typo3/mod.php?M=moduleKey
Mit folgendem Code könnt ihr user[uc] mit leeren Werten zurücksetzen: $GLOBALS['BE_USER']->resetUC();
 

Powermail Basis-Style

Mit diesem CSS vereinfachen wir das Basis-CSS von Powermail für TYPO3. [mehr]

 
 
  1. fieldset.tx-powermail-pi1_fieldset {
  2. /* Fieldset */
  3. border: 0;
  4. background: none;
  5. padding: 10px;
  6. }
  7.  
  8. fieldset.tx-powermail-pi1_fieldset input.powermail_text,
  9. fieldset.tx-powermail-pi1_fieldset input.powermail_date,
  10. fieldset.tx-powermail-pi1_fieldset input.powermail_datetime,
  11. fieldset.tx-powermail-pi1_fieldset textarea.powermail_textarea,
  12. fieldset.tx-powermail-pi1_fieldset input.powermail_captcha {
  13. /* Input and textarea */
  14. border:none;
  15. background: #fff none;
  16. -moz-box-shadow:0 0;
  17. -webkit-box-shadow:0 0;
  18. padding: 2px;
  19. width: 245px;
  20. font-size: 12px;
  21. }
  22.  
  23. fieldset.tx-powermail-pi1_fieldset select,
  24. fieldset.tx-powermail-pi1_fieldset textarea {
  25. font-size: 12px;
  26. font-family: arial, sans-serif;!important
  27. }
  28.  
  29. fieldset.tx-powermail-pi1_fieldset textarea {
  30. height: 100px;
  31. }
  32.  
  33. fieldset.tx-powermail-pi1_fieldset select {
  34. margin-left: 30px;
  35. }
  36.  
  37. fieldset.tx-powermail-pi1_fieldset textarea:focus,
  38. fieldset.tx-powermail-pi1_fieldset input:not([type="submit"]):focus {
  39. background: #fff none;
  40. border: 0;
  41. -moz-box-shadow: 0 0;
  42. -webkit-box-shadow: 0 0;
  43. }
  44.  
  45. fieldset.tx-powermail-pi1_fieldset label,
  46. fieldset.tx-powermail-pi1_fieldset fieldset legend {
  47. /* label */
  48. display: block;
  49. width: 170px;
  50. float: left;
  51. font-weight: normal;
  52. color: #fff;
  53. white-space: normal;
  54. }
  55.  
  56. fieldset.tx-powermail-pi1_fieldset input.powermail_submit {
  57. /* submit button */
  58. margin: 20px 0 60px 170px;
  59. font-weight: bold;
  60. font-size: 14px;
  61. background: #f26a21;
  62. color: white;
  63. border: 0;
  64. }
  65.  
  66. .powermail_check {
  67. width: 15px;
  68. height: 15px;
  69. }
  70.  
  71. .error {
  72.  
  73. background-color:#f00;
  74. border:1px solid #f00;
  75. font-size:10px;
  76. color:#fff;
  77. padding:3px 10px 5px 10px;
  78. margin-left:-2px;
  79. z-index:9999;
  80. text-align:left;
  81. height:auto;
  82. margin: 0 0 0 -240px;
  83. -moz-border-radius:5px;
  84. -webkit-border-radius:5px;
  85. border-radius:5px;
  86. -moz-box-shadow:0 0 0 #ddd;
  87. -webkit-box-shadow:0 0 0 #ddd;
  88. box-shadow:0 0 0 #ddd;
  89. }
  90.  
  91. .error p {
  92. margin: 0;
  93. padding: 0;
  94. font-weight: normal;
  95. }
  96.  
Dem File powermail_front_end_basic.css der Extension Powermail nehmen wir das ganze Fancy-styling wie auch Backgrounds weg und vereinfachen das Aussehen des Formulars.
 

TYPO3 FE-Login in der Extension

Mit fogendem PHP-Code kann man eine FE-Useranmeldung erzeugen.

 
 
  1. $loginData = array(
  2. 'uname' => 'uername',
  3. 'uident' => 'password',
  4. 'status' => 'login'
  5. );
  6. $GLOBALS['TSFE']->fe_user->checkPid=0; //do not use a particular pid
  7. $info= $GLOBALS['TSFE']->fe_user->getAuthInfoArray();
  8. $user=$GLOBALS['TSFE']->fe_user->fetchUserRecord($info['db_user'],$loginData['uname']);
  9. $ok=$GLOBALS['TSFE']->fe_user->compareUident($user,$loginData);
  10.  
  11. if($ok) {
  12. //login successfull
  13. $GLOBALS['TSFE']->fe_user->createUserSession($user);
  14. } else {
  15. //login failed
  16. }
 

Footer-DIV positionieren

Mit diesem jQuery-Skript kann die Footer-Position dynamisch zum Inhalt positioniert werden.[mehr]

 
 
  1. function footerFix(){
  2.  
  3. var wHeight = jQuery(window).height();
  4. var hHeight = jQuery('#YourDiv1').height();
  5. var sHeight = jQuery('#YourDiv2').height();
  6. var cHeight = jQuery('#YourDiv3').height();
  7. var mTop = 100; //Zusätzliche Höhe mitberechnen
  8.  
  9. // Alle Content-Elemente (Div) zusammenzählen
  10. var tHeight = hHeight + cHeight + sHeight + mTop;
  11.  
  12. if (wHeight < tHeight){
  13. jQuery('#footer').css({
  14. 'position' : 'relative',
  15. 'margin-top': 40 + 'px'
  16. });
  17. }
  18.  
  19. else if (wHeight > tHeight){
  20. jQuery('#footer').css({
  21. 'position': 'fixed',
  22. 'bottom' : 20 + 'px'
  23. });
  24. }
  25. }
  26.  
  27. // Wird in Echtzeit ausgeführt sobald Browsergrösse verändert wird
  28.  
  29. jQuery(window).resize(function () {
  30. footerFix();
  31. });
  32.  
  33. jQuery(document).ready(function()
  34. {
  35. // Funktion aufrufen
  36. footerFix();
  37.  
  38. });
Die Höhen der einzelnen DIV-Elemente mit .lenght() ermitteln und diese zusammenzählen (Zeilen 3-10).  Mit der if- und else if- Anweisung wird die Position des Footers je nach Content- und Browserhöhe festgelegt (Zeile 12-23). Mit Resize wird die Funktion in Echtzeit ausgeführt, sobald der Browser vergrössert oder verkleinert wird. Olé!
 
 
 
Abteilung für Gestaltung GmbH

Rüdigerstrasse 12
8045 Zürich

Telefon +41 44 500 10 20

kontakt@abteilung.ch

Abteilung für Soziales
Rechtsabteilung
 

 
Abteilung für Statistiken
450 Kg
Gesamtgewicht
196
Tassen Kaffee im Monat
1471 Min.
Telefoniert im Monat
 

 
Mitarbeiter des Monats

Julien Ginn

Dafür: 4 Personen
Dagegen: 0 Person
Enthaltungen: 2 Personen

Julien kam in Absenz zu dieser grossen Ehre. Seine kernigen Sprüche haben dem Team wohl gefehlt. Nicht zuletzt deshalb freuen wir uns auf das Ende seiner Ferien.

Freunde der Abteilung