SecMan képe

johny képe

Köszi a segitséget!

0
0

Johnymusic

jabba306 képe

Kipróbáltam, felraktam a dev verziójú webformot, lefutott az update.php, de a formon a number mező most is ugyanúgy működik localhoston és fizetős teszt tárhelyen is.

0
0
Gelehed képe

Megoldottam, ne kérdezd hogy hogy de sikerült :-)

köszönöm

0
0

hobbyrendeles.hu

janoka képe

Szia!

Külön modul írásával egy hasonló feladatot így oldottam meg. A kódot lerövidítettem, hogy csak egy rövid példa maradjon.

pelda.module:

  1. function pelda_form_webform_client_form_641_alter(&$form, &$form_state, $form_id ) {
  2. drupal_add_js( drupal_get_path('module', 'pelda').'/js/pelda.js');
  3. }
  4.  
  5. function pelda_webform_submission_presave($node, &$submission) {
  6. // Kezdeti értékek, amelyekkel dolgozunk
  7. $fizetendo = 0;
  8.  
  9. // ....
  10. // Értéke: 32: 18 felett, 16: 14-18 év, 8: 14 alatt
  11. $kor = $submission->data[23]['value'][0];
  12. // Ha valaki elmúlt 14, akkor kell csak szállást és 18 után ifa-t számolni.
  13. switch ($kor) {
  14. case 32: $szallas=3930; break;
  15. case 16: $szallas=3600; break;
  16. default: $szallas=0; break;
  17. }
  18. // Szállásnapok száma
  19. $szallasnapok_szama = count( $submission->data[6]['value'] );
  20. // Szállás értéke
  21. $fizetendo += $szallasnapok_szama*$szallas;
  22.  
  23. // Fizetési összeg aktualizálása a beküldés előtt.
  24. $submission->data[22]['value'][0] = $fizetendo;
  25. }

pelda.js:

  1. function changeFizetendo() {
  2. $fizetendo = 0;
  3.  
  4. // Ha valaki elmúlt 14, akkor kell csak szállást és 18 után ifa-t számolni.
  5. if( $("#edit-submitted-kor-1").is(":checked") ) {
  6. $szallas=3930;
  7. }
  8. else if( $("#edit-submitted-kor-2").is(":checked") ) {
  9. $szallas=3600;
  10. }
  11. else {
  12. $szallas=0;
  13. }
  14.  
  15. // Szállás kiszámolása
  16. $fizetendo += ($("#edit-submitted-szallasnapok-1").is(":checked"))?$szallas:0;
  17. $fizetendo += ($("#edit-submitted-szallasnapok-2").is(":checked"))?$szallas:0;
  18. $fizetendo += ($("#edit-submitted-szallasnapok-3").is(":checked"))?$szallas:0;
  19.  
  20. // Számolás végén az érték beállítása, mint fiezetendő
  21. $("#edit-submitted-fizetendo").val($fizetendo);
  22.  
  23. // Abban az esetben, ha nincs a kor kitöltve, akkor a focust a korra teszi.
  24. //if( $("#edit-submitted-kor").is(":empty") ) {
  25. // $("#edit-submitted-kor").focus();
  26. //}
  27. };
  28.  
  29. jQuery(document).ready(
  30. function($) {
  31.  
  32. // Fizetendő mező kikapcsolása, hogy ne legyen szerkeszthető
  33. $("#edit-submitted-fizetendo").attr("disabled", "disabled");
  34.  
  35. // Annak figyelése, hogy ha valamelyik beviteli mező változik, akkor a fizetendő értékét is újraszámoljuk.
  36. $("input").bind('change', changeFizetendo);
  37. }
  38. );
2
0
hszilard képe

Nagyon köszönöm, végre valami, amin el tudok indulni :)
A hook_webform_submission_presave lesz valószínű a kulcs, amivel ezt a problémát meg lehet oldani.

0
0
csakiistvan képe

0
0

Drupal full-stack developer at Wunderman Thompson Budapest

hszilard képe

A hook_webform_submission_presave függvénnyel kapcsolatban még az a kérdésem lenne, hogy a $node paraméter segítségével hogyan lehetne szűkíteni ennek a lefutását, hogy ne minden űrlapnál fusson le (ezen a honlapon több webform tartalom is van), hanem csak annál az egynél, ahol erre szükség van?
Gondolom, valahogy így kellene kezdeni:

  1. function sajatmodul_webform_submission_presave($node, &$submission) {
  2. if (isset($node->???)) {
  3. ...
  4. ...
  5. }
0
0
vidra képe

kirpóbáltam, de nem igazán működik.
Igaz írják, hogy 5.x,6.x verziókhoz de 7.x alatt nem megy. Vagy csak nekem.
Vagy azért nem mert nem írtam át, mert nekem nem webformhoz kell.

0
0
hszilard képe

Ez utóbbira itt megtaláltam a megoldást: http://drupal.org/node/49768

1
0