RSFormPro - kalendář

Milan
18. čen 2016 00:19 #127314
Mám RSFormPro verze 1.51.14 a ve formuláři mám dvě kalendářová pole - datum od a datum do. Potřeboval bych, aby datum do nemohlo být nižší, než datum od. Podařilo se mi to nastavit pomocí Datum modifikátoru, ale tam se vždy připočte 1 den.
Příklad: zadám datum od 20.06.2016 omezí se mi výběr z kalendáře pro datum do od 21.06.2016 dále. Potřeboval bych ale, aby se kalendář do omezil od 20.06.2016, tedy aby šlo zadat datum od a do stejné (nebo vyšší).
I zpátky to funguje obdobně, zadám datum do 28.06.2016 a datum od mohu zadat pak pouze do 27.06.2016.
Lze to někde nastavit nebo změnit?
Děkuji za radu

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Milan
21. čen 2016 17:31 #127352
Tak toto se mi podařilo vyřešit - pokud by někdo potřeboval něco podobného.
Ve složce media/com_rsform/js/calendar je třeba upravit script.js na řádku cca 142 vymazáním +1(-1)
var newDate = new Date(theDate.getFullYear(), theDate.getMonth(), (operation == 'min' ? theDate.getDate()+1 : theDate.getDate()-1));.
Ale potřeboval bych ještě radu a pomoc - mám dva údaje - TerminOd a TerminDo
Líbil by se mi PHP script, který by před odesláním provedl následující:
pokud bude zadán TerminOd a TerminDo (tzn. pokud nebudou zadány oba tak nic)
zkontroloval by zda TerminOd >= aktuálnímu datu a současně TerminOd <= TerminDo a pokud by to nebylo splněno, neodeslal by formulář a vypsal chybu.
Podle mě by to mohl být "jednoduchý" script zadaný ve vlastnostech formuláře, ale mé znalosti PHP na to nestačí.
Děkuji za jakoukoli rad a pomoc

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Milan
21. čen 2016 17:43 - 21. čen 2016 17:49 #127354
Zkusil jsem zadat do skriptu volaného při zpracování formuláře následujcí:
<?php
if($_POST ['form']['TerminOd'] > $_POST ['form']['TerminDo'])
   echo return false;
else
   return true;
?>	
, ale to nic neprovede.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
21. čen 2016 17:49 - 21. čen 2016 17:50 #127355
nejsem si jist, zda to tuto syntaxi vezme. Raději si tam dejte závorky {} a mezeru za if
např.
<?php
if ($a > $b) {
  echo "a is greater than b";
} else {
  echo "a is NOT greater than b";
}
?>

viz. php.net/manual/en/control-structures.else.php

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
21. čen 2016 18:02 #127356
jo a to echo tam nemá co dělat

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Milan
21. čen 2016 18:15 #127358
To echo jsem tam dal omylem při kopírování

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Milan
21. čen 2016 19:03 #127360
Tak jsem zkusil
<?php
$_POST['form']['TerminDo'] = $_POST['form']['TerminOd'];
?>
, což by mělo dle mého názoru před uložením formuláře nastavit TerminDo stejný jako TermínOd. Ale bohužel nic Nevím, kde může být problém.

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Milan
22. čen 2016 13:39 #127372
Tak jsem to nakonec zvládl vlastními silami :) . Možná je to "prasárna", ale hlavně to funguje.
Jednak v českém překladu je uvedeno "Nezapomeňte zahrnout tagy <?php a ?> a ono je to přesně naopak, tedy Neuvádějte tagy ...
A vlastní kód - nejprve si dnešní datum a zadaná data Od Do převedu na číslo - počet dnů, pak je porovnám a případně upravím a převedu zpět na Datum
$ddatum = round(Time() / (24*60*60), 0);
$datumOd = round(StrToTime($_POST['form']['TerminOd']) / (24*60*60),0);
$datumDo = round(StrToTime($_POST['form']['TerminDo']) / (24*60*60),0);

if($datumOd < $ddatum) {
   $_POST['form']['TerminOd'] = StrFTime("%d.%m.%Y",($ddatum*24*60*60));
   $datumOd = $ddatum;
}
if($datumDo < $ddatum && $datumDo != '') {
   $_POST['form']['TerminDo'] = StrFTime("%d.%m.%Y",($ddatum*24*60*60));
   $datumDo = $ddatum;	
}
if($datumOd > $datumDo && $datumDo != '') {
   $_POST['form']['TerminOd'] = StrFTime("%d.%m.%Y",($datumDo*24*60*60));
   $_POST['form']['TerminDo'] = StrFTime("%d.%m.%Y",($datumOd*24*60*60));
}

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.

Odpověď od Ernst
22. čen 2016 19:41 #127376
tagy <?php a ?> se zadávají pro kód PHP.
Pokud máte v souboru jen PHP máte <?php na začátku a ?> na konci souboru.
Pak je již nikam nezadáváte.
pokud je to mixováno s HTML kódem, musí být každý php kód uveden s těmito tagy (pak nejsou na začátku a konci souboru)

Pro možnost přispívání do fóra je nutné: Přihlásit se nebo Vytvořit účet.