Zum Inhalt springen

powermail 2.x -- Datepicker ohne Vergangenheit

Erstellt am 20. November 2012 · 4 Antworten · letzte Antwort am 25. April 2023

Tags: Frage

wwt ·

Hallo!

Verwende powermail 2.0.4, Typo3 4.7.5.

Ich kann im Formular das Feld mit aktuellem Datum belegen, oder auch mit künftigen mit:

plugin.tx_powermail { 
  settings {
    setup {
      prefill {
        anreise = TEXT
        #aktuelles Datum plus 1 Tag (=*86400 Sekunden)
        anreise.data = date:U + (1*86400)
        anreise.prioriCalc = 1
        anreise.strftime = %d.%m.%Y
      }
    }
  }
}


1.) Wie stell ich es an, dass ein Minimumwert - also kein Datum in der Vergangenheit - eingehalten wird?

2.) Wie übergebe ich an ein zweites Feld einen Wert aus dem ersten + 3 Tage?

Beispiel:
Anreisedatum = prefill oder per manuelle Eingabe
Abreisedatum = gesetztes Anreisedatum + 3 Tage

Das funktioniert leider nicht:

plugin.tx_powermail { 
  settings {
    setup {
      prefill {
        anreise = TEXT
        #aktuelles Datum plus 1 Tag (=*86400 Sekunden)
        anreise.data = date:U + (1*86400)
        anreise.prioriCalc = 1
        anreise.strftime = %d.%m.%Y
       
        abreise = TEXT
        #anreisedatum plus 3 Tag (=*86400 Sekunden)
        abreise.data = GP:anreise + (3*86400)
        abreise.prioriCalc = 1
        abreise.strftime = %d.%m.%Y
      }
    }
  }
}

Hat jemand einen Ansastz zu Punkt 1 und/oder 2?

Vielen Dank,
Josef.

wwt ·

Danke Alex für den Input!
------------------------------------------------------------------------------------------------

Punkt 1.) = schnell gelöst!

In Powermail Datei wählen in: ../Recources/Public/Js/jquery.ui.datepicker.min.js
nach "minDate" suchen.

Der Wert ist: minDate:NULL
Diesen ändern auf: minDate:new Date()

Damit ist ein Datum in der Vergangenheit nicht mehr anwählbar.
------------------------------------------------------------------------------------------------
Punkt 2.) = noch ungelöst!

Dafür gibt es eine super Vorgabe des ui.datepicker. Nennt sich "select a date range"
Man bindet folgendes Script in die Seite ein (kann natürlich angepasst werden):

	<script>    
	$(function() {        
		$( "#from" ).datepicker({            
			defaultDate: "+1w",            
			changeMonth: true,            
			numberOfMonths: 3,            
			onClose: function( selectedDate ) {                
				$( "#to" ).datepicker( "option", "minDate", selectedDate );            
			}        
		});        
		$( "#to" ).datepicker({            
			defaultDate: "+1w",            
			changeMonth: true,            
			numberOfMonths: 3,            
			onClose: function( selectedDate ) {                
				$( "#from" ).datepicker( "option", "maxDate", selectedDate );            
			}        
		});    
	});    
</script>

Dann die Labels und inputs zuweisen:
<label for="from">From</label> <input type="text" id="from" name="from" />
<label for="to">To</label> <input type="text" id="to" name="to" />

funktioniert prima.

ABER:
Wenn ich
<input type="text" id="from" name="from" /> und
<input type="text" id="to" name="to" />
in ein HTML Feld eintrage, erscheint es im Formuar richtig, aber beim Versand ist es nicht mehr da, weil das HTML Element nicht übergeben wird.

Wie kann ich also die beiden labels mit der input id "from" und "to in Typoscript dem Label zuweisen?

Das geht schon mal nicht:

plugin.tx_powermail { 
  settings {
    setup {
      prefill {
        from = TEXT
        from.id = from
    }
  }
}

Bitte um Hilfe wie ich die JavaScript Ausgabe dem Marker zuweisen kann!

------------------------------------------------------------------------------------------------

Danke, Josef.

wwt ·

Punkt 2.) = gelöst!

Zuerst das Feld mit einem normalen Textfeld(input) belegen.
Dann das nachstehend gepostete Javascript in die Seite einbinden.

<script>    
	$(function() {        
		$( "#from" ).datepicker({            
			defaultDate: "+1w",            
			changeMonth: true,            
			numberOfMonths: 3,            
			onClose: function( selectedDate ) {                
				$( "#to" ).datepicker( "option", "minDate", selectedDate );            
			}        
		});        
		$( "#to" ).datepicker({            
			defaultDate: "+1w",            
			changeMonth: true,            
			numberOfMonths: 3,            
			onClose: function( selectedDate ) {                
				$( "#from" ).datepicker( "option", "maxDate", selectedDate );            
			}        
		});    
	});    
</script>

Danach einfach die id: "#from" und die id: "#to" auf den manuell eingegeben Variablennamen ändern.
Mein Variablenname lautet: {anreise1} und {abreise1}.

Diese Name werden im Quelltext mit der id: "powermail_field_anreise1" und "powermail_field_abreise1" ausgegeben.

Daher ändern wir im Javascript die id: "#from" zu "#powermail_field_anreise1" und die id: "#to" zu "#powermail_field_abreise1".

Danach wird das Datum genau an den textfeldern ausgegeben. Klappt wunderbar und ist genau was ich gesucht habe.

Das war's. Hoffe ich konnte helfen.

Gruß, Josef.

alexinge ·

Hallo!
Ich verwende Typo3 11 und Powermail 10.6.0. Ich habe schon viel recherchiert und ausprobiert, aber ich schaffe es nicht den Datepicker anzupassen:

#powermail_field_za-anreise
page.headerData.5000=TEXT
page.headerData.5000.value (
<script>
	$(function() {
		$( "#powermail_field_za-anreise" ).datepicker({
			defaultDate: "+1w",
			changeMonth: true,
			numberOfMonths: 3,
		});
	});
</script>
)
/*
page.headerData.5000=TEXT
page.headerData.5000.value (
	<script>
		$(document).ready(function () {
		  $(function() {
                      $("#powermail_field_za-anreise").datepicker();
		      //$("#powermail_field_za-anreise").datepicker({ minDate: -20});
                      //$("#powermail_field_za-anreise").datepicker().datepicker("setDate", new Date());
                      $( "#powermail_field_za-anreise" ).datepicker({
                        defaultDate: "+1w",
                        changeMonth: false,
                        numberOfMonths: 1
	 	     });
 	           });
		});
	</script>
)

*/

Über einen Tipp würde ich mich sehr freuen.