Powermail: Dynamisches Datum im Dropdown

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    20. 06. 2008, 11:36

    [b]Anforderung:[/b] Im Powermail Formular soll eine Selectbox erscheinen mit den künftigen Daten von Mittwoch und Freitag:
    - Freitag, 20. Juni
    - Mittwoch, 25. Juni
    - Freitag, 27. Juni
    - etc...
    Hier soll der Besucher sich ein Wunschdatum für ein Event auswählen können.

    [b]Idee:[/b] Eine kleine Userfunc füllt ein TS Feld von Powermail mit den erforderlichen Daten

    [b]Umsetzung:[/b]

    Neue PHP Datei direkt im fileadmin anlegen mit Namen user_specialtimefordropdown.php:

    1. <?php
    2.  
    3. // This class generates a special dropdown list for powermail with dates
    4. class user_dropdown {
    5.  
    6. var $limit = 26; // show the next X dates
    7. var $weekdays_de = array("Sonntag", "Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"); // Array with all Weekdays in german
    8. var $months_de = array("Januar", "Februar", "März", "April", "Mai", "Juni", "Juli", "August", "September", "Oktober", "November", "Dezember"); // Array with all Month in german
    9. var $dayx = array(3,5); // every friday and wednesday
    10.  
    11. // Main function for additional google information german
    12. function user_main($content='', $conf=array()) {
    13. // init
    14. $content = '';
    15. $counter = 0;
    16.  
    17. // let's go
    18. for ($jahr = date('Y',time()); $jahr <= date('Y',time()) + 1; $jahr++) { // loop for current year and next year
    19. for ($monat = 1; $monat <= 12; $monat++) { // loop from 1 up to 12 (every month)
    20. for ($tag = 1; $tag <= 31; $tag++) { // loop from 1 up to 31 (every day)
    21. if (checkdate($monat,$tag,$jahr)) { // if current date is a correct date (31.02 is not correct)
    22.  
    23. if (
    24. in_array(date("w", mktime(0,0,0,$monat,$tag,$jahr)), $this->dayx)
    25. &&
    26. mktime(0,0,0,$monat,$tag,$jahr) >= time()
    27. &&
    28. $counter < $this->limit
    29. ) { // if friday or wednesday AND if in future AND if within limit
    30. $option = '';
    31. $option .= $this->weekdays_de[date('w',mktime(0,0,0,$monat,$tag,$jahr))].', '; // like "Mittwoch, "
    32. $option .= date('d',mktime(0,0,0,$monat,$tag,$jahr)).'. '; // like "20. "
    33. $option .= $this->months_de[date('n',mktime(0,0,0,$monat,$tag,$jahr))-1].' '; // like "Juni "
    34. $option .= '11.00 C.E.T.';
    35.  
    36. $content .= '<option value="'.$option.'">';
    37. $content .= $option;
    38. $content .= '</option>'."\n";
    39.  
    40. $counter++; // increase counter
    41.  
    42. }
    43.  
    44. }
    45. }
    46. }
    47. }
    48.  
    49.  
    50.  
    51. if (!empty($content)) return $content;
    52. }
    53.  
    54.  
    55. }
    56. ?>

    Obiges PHP file via TS Objekt verfügbar machen:
    [TS]includeLibs.user_specialtimefordropdown = fileadmin/user_specialtimefordropdown.php

    # UID62
    newObject = COA_INT
    newObject.wrap = <div class="tx_powermail_pi1_fieldwrap_html tx_powermail_pi1_fieldwrap_html_text tx_powermail_pi1_fieldwrap_html_62">|</div>
    newObject {
    5 = TEXT
    5.value = <label for="uid62">Bevorzugter Termin</label>

    8 = TEXT
    8.value = <select name="tx_powermail_pi1[uid62]" class="powermail_livedemo powermail_select powermail_uid62" id="uid62" tabindex="6">

    10 = USER
    10.userFunc = user_dropdown->user_main

    20 = TEXT
    20.value = </select>
    }
    [/TS]

    In Powermail ein neues Typoscript Feld anlegen und mit dem newObject füllen lassen (im Beispiel-Bild steht fälschlicherweise lib.object anstatt newObject):
    [img]http://www.design-and-style.de/temp/typo3/pm_select1.gif[/img]

    Das wars...

    [b]Improvements:[/b]
    - Limit und Datumscodierung erfolgt alles im PHP - dies könnte natürlich in einer besseren Welt von TS übergeben werden

    Grüße, Alex :D

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/


  • 1
  • 0 x
    29 Beiträge
    0 Hilfreiche Beiträge
    30. 06. 2008, 08:52

    Hallo Alex,

    echt supper gemacht, habe es auch im Einsatz.

    Könnte man auch noch für das ganze Jahr machen? Das wäre echt genial.

    Leider habe ich noch keine Kenntnisse in PHP.

    Hier mal das bisherige von Dir.

    [url]http://typotest5.uni-landau.de/index.php?id=3[/url]

    lg pidrootline

  • 0 x
    29 Beiträge
    0 Hilfreiche Beiträge
    30. 06. 2008, 09:28

    hallo,

    wenn ich mir eine Mail zukommen lassen so erhalte ich folgende Meldung

    POWERMAIL ERROR: No title to current field found in DB (uid62)

    Was muss ich da noch beachten?

    lg pidrootline

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    30. 06. 2008, 12:17

    [quote="pidrootline"]
    POWERMAIL ERROR: No title to current field found in DB (uid62)
    [/quote]

    Powermail > 1.3.5 hat das Problem behoben - hier werden die Titel auch von TS Feldern übernommen

    [quote="pidrootline"]
    Könnte man auch noch für das ganze Jahr machen? Das wäre echt genial.
    [/quote]

    Quick'n dirty: Du kannst das Limit im PHP erhöhen.

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • steve1508 steve1508
    Typ im Roten Hemd
    0 x
    2 Beiträge
    0 Hilfreiche Beiträge
    15. 01. 2010, 12:49

    Hallo Alex

    Super Script funktioniert alles wunderbar.
    Könnte mir allerdings jemand weiterhelfen, wie kann ich es anstellen, dass auch das aktuelle Datum in der Liste erscheint? Ich erhalte nur das Datum für den künftigen Tag.

    Vielen Dank für die Hilfe

    Stephan

  • steve1508 steve1508
    Typ im Roten Hemd
    0 x
    2 Beiträge
    0 Hilfreiche Beiträge
    12. 02. 2010, 13:28

    kann mir den da niemand helfen?

    Würde mich über eine Antwort sehr freuen!

    Danke

  • einpraegsam.net einpraegs...
    MacGyver
    0 x
    9340 Beiträge
    80 Hilfreiche Beiträge
    12. 02. 2010, 14:05

    Ich mache den Thread mal zu, bevor es noch unübersichtlicher wird.

    Info: Mit einer Zeile PHP kannst du das schnell umsetzen...

    in2code.de - Wir leben TYPO3
    - Möchtest du TYPO3 komplett verstehen? Eigene Erweiterungen erstellen? Bei uns gibt es auch Schulungen https://www.in2code.de/produkte/typo3-schulungen/
    - Die Arbeit mit TYPO3 macht dir Spaß? Du stehst auf Berge? Komm zu uns! https://www.in2code.de/agentur/karriere/

  • 1