Webform validálás

formatester képe

Sziasztok!

5.1-es rendszer alatt szeretném használni a Webform modul aktuális verzióját (5.x-1.4), de nem tudok túllépni a következő problémán:
A webform tartalomtípusnál van az Advanced Settings/ Additional Validation, ide szeretnék beilleszteni egy ellenőrzést ami bizonyos adatokat leellenőriz elküldés előtt.
A legegyszerűbb esettel próbálkoztam amikor két űrlapmezőt hasonlítok össze, hogy a tartalmuk egyezik-e, de ez sem sikerül. (Ha modulból hozok létre egy formot ott működik rendesen)
Lehet, hogy nem jól hivatkozok az egyes elemekre?
(Néztem a http://www.drupal.org/node/81761#comment-137646 leírást is de sajnos nem lettem okosabb.)

Ha valakinek van ötlete, tapasztalata és egy kis ideje kérem segítsen!

Előre is köszönöm, üdv: Balázs

Illyés Edit képe

A legegyszerűbb esettel próbálkoztam amikor két űrlapmezőt hasonlítok össze, hogy a tartalmuk egyezik-e, de ez sem sikerül.

Miben nyilvánul meg a nem-sikerülés? Mit csinálsz, milyen eredményre számítasz, helyette mi történik?

Lehet, hogy nem jól hivatkozok az egyes elemekre?

Honnan tudjuk, ha nem mondod meg, hogyan hivatkozol?

0
0
formatester képe

Kedves Edit,

igaz, egy kicsit szűkszavúan fogalmaztam, megpróbálom érthetőbben:

1, Nem sikerülés: ha egyező adatokat írok a két mezőbe ha nem mindig a form_set_error -ra fut rá és értelemszerűen nem is menti le az adatokat.

2, Rossz hivatkozás: az előbbiből következtetek arra, hogy rosszul hivatkozok az egyes elemekre és ezért kapok hibát. Én úgy gondoltam, hogy ennek működnie kellene:

if (($form_values ['nev1']) == ($form_values ['nev2']) ) {
        form_set_error(['nev2'], t('A két név nem lehet egyforma'));
    }

de nem működik. ( a nev1 , nev2 a Components-be beírt Field Key)

üdv: Balázs

0
0
kalmarr képe

Sziasztok!

Nekem is lenne hasonló gondom, szeretném megtudni, hogy mi lett a megoldás a problémára?

Üdv.

KALMI

0
0
jodri2003 képe

Próbáld a következőt:

<?php
if (($_POST['submitted']['nev1']) == ($_POST['submitted']['nev2']) ) {
        form_set_error($_POST['submitted']['nev2'], t('A két név nem lehet egyforma'));
    }
?>

A Webform tulajdonságai között a "Redirect POST Values" opciót kapcsold be.
A fenti kódot az "Additional Validation" mezőbe rakd.
0
0
kalmarr képe

Köszönöm!

Olyan kérdésem lenne még, hogy a webform kiértékelésével kapcsolatban, hol tudnék találni több infót?

Esetleg létezik-e olyan modul, amivel, mondjuk egy tesztet is ki tudok töltetni?

Üdv.

KALMI

0
0
pp képe

Fogod létrehozod a tesztkérdéseket és szépen ki tudják tölteni a felhasználóid.

Persze kiértékelni nem fogja!
Le tudod tölteni csv-be, amit aztán a zekszellel fel tudsz dolgozni, és kiértékelni, vagy egy arra adott célszoftverrel ellenőrizni. (hogy hogyan azt elvileg a közipiskolában meg kellett tanulnod, hisz immár tíz éve kötelező tananyag ;)) persze ha nem megy kérdezz, de ne itt, hanem küldj egy mélt nekem és segítek, ötletek adok)

pp

0
0
kalmarr képe

Lett egy konkrét kérdésem :), hogyan lehentne kiolvasni a csoport tulajdonságát (melyik változóban van, hogyan kell rá hivatkozni?), hogy van-e jogosultsága egy felhasználónak egyedi adatlap kitöltésére.
Pl: csoportban külön engedélyezem, hogy "tolt"-het adatlapot. Értelem szerűen, ha nincs engedélye, akkor nem tudja elküldni.

0
0
pp képe

user_access('ez meg a jogosultsag')

pp

0
0
kalmarr képe

:) Köszi! Átböngésztem a dokokat, de nem találtam rá, hogy hogyan kellene meghívni a függvényt.

Csak eddig jutottam.

 
 
<?php
global $user;
  if ($user->uid) {}
 
  else {
    form_set_error($user->uid, t('Nincs jogosultságod még!'));
    }
?>

Sajnos ebből csak az derül ki regisztrált vagy sem, de az engedélyeztetés még problémás :(

0
0
pp képe

Vagy figyelmesebben böngéssz, vagy mást is böngéssz, mint eddig ;)
http://api.drupal.org/api/function/user_access/5

Nem tudom, hogy milyen jogosultságot szeretnél vizsgálni, de pl a tartalomhoz való hozzáférés:

if(user_access('access content')){
  ...
}
0
0
kalmarr képe

Kezdem érteni meg nem is :)

Ha jó értem a Drupalban csak azt lehet vizsgálni, hogy a tartalomhoz van-e jogosultsága valakinek, de csoport jogosultságot lehet külön vizsgálni?

Amit szeretnék: Pl Usert bele teszem "játékos" csoportba és én azt szeretném, hogy csak a "játékos" userek láthassák vagy tölthessék ki az ürlapot.

U.I.

Globális változókról létezik egy összefoglaló oldal?

0
0
crt képe

A $user->roles tartalmazza azokat a csoportokat, amiben szerepel a felhasználó.

Üdv: Zoli

0
0
pp képe

Nem, nem pont a tartalomhoz való jogosultságot nem lehet alapból vizsgálni (vagyis igen, de ennek kihasználásához fel kell tenni valamilyen plusz modult)

Van egy jogosultság (perm) ehhez adsz egy csoportnak jogosultságot a hozzáférés szabályozásnál. A user access azt mondja meg, hogy az adott júzrenek van-e jogosultsága egy adott funkcióhoz, De és itt a de ezt a jogosultságot a csoporton keresztül szerzi!!
Amit Te csinálsz most az az, hogy belehegeszted a kódba azt, hogy az x csoportnak van joga valamihez, de mi lesz, ha törlöd a csoportot, vagy valamiért két csoportnak is kell ez a jogosultság. Készíts egy modult:

specjog.info

name = specjog
description = Specialis jogosultsagokat ad hozza a rendszerhez

specjog.module

function specjog_perm(){
  return array('webform kitoltes');
}

Ezzel máris rugalmasabb lesz a rendszered, kattintgatós felületen tudod beállítani most már, hogy mely csoportoknak van joga egy adott kérdőívet kitölteni.

pp

0
0
kalmarr képe

Szia!

Nagyon köszi a sok segítséget. Először azt hittem értem szuperul meg is csináltam a modult, de végül csak rájödtem, hogy nem értem a hozzáférési jog legérdezésének logikáját :(.

1. variáció

<?php
global $user;
  if (specjog('webform kitoltes'))
 
 {print "Van jogod";}
 
  else {
    print "Nincs jogosultságod még!";
    }
?>

2. variáció

<?php
global $user;
  if (user_access('webform kitoltes'))
 
 {print "Van jogod";}
 
  else {
    print "Nincs jogosultságod még!";
    }
?>

Remélem, hogy az első variációban értelmezek valamit félre.

Üdv.

KALMI

0
0
kalmarr képe

Lenne még egy olyan kérdésem, hogy a "fieldset"-el történő struktúra váltáskor(mikor nem a gyökérhez vannak rendelve a kérdések, hanem "fieldset" mezőbe), akkor hogyan változik meg az adatlehívása?

Pl: az alábbi code gyökérben lehívja a "nev1"-et, de "fieldset" mezőben nem értelmezi.

print $_POST['submitted']['nev1']

U.I.
Az extra segítséget még nagyon várom a jogosultságnál :). Előre is köszönöm!!!!

0
0
kalmarr képe

Ugyan ez a kérdés felmerült a profilnál is:(

KALMI

0
0
pp képe

Told bele a kódba, hogy:

drupal_set_message('<pre>'. print_r(get_definde_vars(),true) .'</pre>');

Aztán nézzed, hogy milyen változóid vannak.

Egyébként a form beállításától függ, hogy megőrzi-e a struktúrát vagy sem.
http://drupal.org/node/48643

0
0
pp képe

Te tulajdon képen mit csinálsz?

az user_access egy Drupal függvény, mely visszaadja, hogy a megjelölt perm-hez van-e jogosultsága a júzernek vagy sincs. Tessék megnézni az api.drupal.org-on, hogy mit csinál ;)

A második lesz a jó, de felesleges a global $user.

pp

0
0